Register Menggunakan Metode Aktivasi dari Email Member
Pada artikel sebelumnya kita sudah membahas tentang modul register ini. Namun modul yang kita buat dalam artikel tersebut tidak menggunakan metode aktivasi sehingga memungkinkan member menggunakan akun email palsu atau tidak valid. Untuk menanggulangi kejadian yang tidak diinginkan ada baiknya jika metode registrasi member kita menggunakan metode aktivasi. Dengan mengembangkan modul sebelumnya, dimana field tabel yang kita buat sudah memungkinkan untuk hal itu. Disana sudah ada field kode_aktivasi dan field aktif. Field kode aktivasi berfungsi untuk menyimpan kode acak yang akan kita kirim melalui email member. Kemudian field aktif adalah untuk mengetahui apakan akun sudah diaktivasi atau belum.
Baiklah kita akan ubah script module register (daftaraksi) dengan script berikut :
elseif ($_GET['module']=='daftaraksi'){ echo "<div id='content'> <div id='content-detail'>"; $nama=trim($_POST[nama]); $email=trim($_POST[email]); $username=trim($_POST[username]); $password=trim(sha1($_POST[password])); $kode_aktivasi = md5(uniqid(rand())); $cek_akun=mysql_num_rows(mysql_query("SELECT * FROM member WHERE username='$username' OR password='$password'")); if (empty($nama)){ echo "Anda belum mengisikan NAMA<br /> <a href=javascript:history.go(-1)><b>Ulangi Lagi</b>"; } elseif (empty($email)){ echo "Anda belum mengisikan EMAIL<br /> <a href=javascript:history.go(-1)><b>Ulangi Lagi</b>"; } elseif (empty($username)){ echo "Anda belum mengisikan USERNAME<br /> <a href=javascript:history.go(-1)><b>Ulangi Lagi</b>"; } elseif (empty($_POST[password])){ echo "Anda belum mengisikan PASSWORD<br /> <a href=javascript:history.go(-1)><b>Ulangi Lagi</b>"; } elseif ($cek_akun==1){ echo "USERNAME atau PASSWORD sudah ada yang punya<br /> <a href=javascript:history.go(-1)><b>Ulangi Lagi</b>"; } else{ if(!empty($_POST['kode'])){ if($_POST['kode']==$_SESSION['captcha_session']){ mysql_query("INSERT INTO member(nama, email, username, kode_aktivasi, password) VALUES('$_POST[nama]', '$_POST[email]', '$_POST[username]', '$kode_aktivasi', '$password')"); $kepada = $_POST[email]; $judul = "Aktivasi Akun Member"; $dari = "From : email@anda.com \n"; $dari .= "Content-type : text/html \r\n"; $pesan = "Aktifkan akun member Anda dengan klik link berikut ini : <br>"; $pesan .= "<a href='http://domainanda.com/aktivasi.php?kode=$kode_aktivasi'>http://domainanda.com/aktivasi.php?kode=$kode_aktivasi</a>"; mail($kepada,$judul,$pesan,$dari); echo "<span class=posting>» <b>Daftar</b></span><br /><br />"; echo "<p align=center><b>Terimakasih telah mendaftar di situs kami. Buka email Anda untuk mengaktifkan akun !<br /><a href='login.html'>Klik untuk login</a></b></p>"; }else{ echo "Kode yang Anda masukkan tidak cocok<br /> <a href=javascript:history.go(-1)><b>Ulangi Lagi</b></a>"; } }else{ echo "Anda belum memasukkan kode<br /> <a href=javascript:history.go(-1)><b>Ulangi Lagi</b></a>"; } } echo "</div> </div>"; }
Kemudian buat file aktivasi.php dan letakkan kode berikut.
<?php include "config/koneksi.php"; include "config/library.php"; $sql = "SELECT * FROM member WHERE kode_aktivasi='$_GET[kode]'"; $hasil = mysql_query($sql); $jumlah = mysql_num_rows($hasil); if ($jumlah==1){ $data=mysql_fetch_array($hasil); mysql_query("UPDATE member SET aktif = 'Y' WHERE kode_aktivasi='$_GET[kode]'"); echo "Akun Anda sudah diaktifkan. <a href='login.html'>Klik untuk login</a>"; } else{ echo "Kode aktivasi tidak ditemukan. <a href='index.php'>Klik</a> untuk Kembali ke halaman awal"; } ?>
Link yang kita kirim ke email member kita arahkan menuju file aktifasi.php ini dengan metode get kita mendapat kode aktivasi yangkita gunakan untuk mengupdate database dari yang semula member belum aktif menjadi member aktif.
Terakhir jangan lupa untuk menambahkan script pada halaman modul login (ceklogin) terutama pada mysql querynya dengan kondisi jika member telah aktif. Lebih kurang sebagai berikut:
$cek_akun=mysql_num_rows(mysql_query("SELECT * FROM member WHERE username='$username' AND password='$password' AND aktif=='Y'")); $nama=mysql_fetch_array(mysql_query("SELECT * FROM member WHERE username='$username' AND password='$password' AND aktif=='Y'"));