Kali ini
kita bahas mengenai modul reset password member dengan menggunakan form email. Dalam script login dan
register lokomedia 1.6.1 menggunakan enkripsi sha1 untuk merahasiakan password member. Sehingga kalau kita
ingin mengetahui passwor member tentunya harus mendekripsikan kembali data yang ada pada database. Untuk
menjaga privasi member, sebaiknya password yang kita kirim ulang adalah password baru dengan menggenerate
huruf dan angka untuk membentuk kombinasi password baru tersebut. Mari kita lihat script module form reset
password berikut :
view sourceprint?
01.elseif($_GET['module']=='lupapassword'){
02.echo "<div id='content'>
03.<div id='content-detail'>";
04.echo "<span class=judul_head>»<b>Reset Password</b></a></span><br
/><br />";
05.echo "<b>Kami akan mengirimkan username dan password Anda ke email.
Silahkan masukkan email Anda :</b>
06.<table width=100% style='border: 1pt dashed #0000CC;padding: 10px;'>
07.<form action=kirim-password.html method=POST>
08.<tr><td>Email</td><td> : <input type=text name=email size=40></td></tr>
09.</td><td colspan=2><input type=submit name=submit value=Kirim></td></tr>
10.</form></table><br /></div>
11.</div>";
12.}
Dari script diatas kita hanya menggunakan satu inputan saja yakni email user. Sehingga hanya email valid dan
terdaftar dalam databaselah yang akan dieksekusi. Email dalam database tidak diperbolahkan ganda atau satu email
tidak boleh digunakan untuk lebih dari satu orang member. Selanjutnya form ini akan mengarahkan ke module
kirimpassword berikut :
view sourceprint?
01.elseif ($_GET['module']=='kirimpassword'){
02.echo "<div id='content'>
03.<div id='content-detail'>";
04.
05.$email=trim($_POST[email]);
06.
07.$cek_akun=mysql_num_rows(mysql_query("SELECT * FROM member WHERE
email='$email'"));
08.$nama=mysql_fetch_array(mysql_query("SELECT * FROM member WHERE
email='$email'"));
09.
10.$pola_email = "^([._a-z0-9-]+[._a-z0-9-]*)@(([a-z0-9-]+\.)*([a-z0-9-]+)(\.
[a-z]{2,3}))$";
11.
12.if (empty($email)){
13.echo "Anda belum memasukkan apapun<br />
14.<a href=javascript:history.go(-1)><b>Ulangi Lagi</b>";
15.}
16.elseif (!eregi($pola_email,$email)){
17.echo "Email anda tidak valid<br />
18.<a href=javascript:history.go(-1)><b>Ulangi Lagi</b>";
19.}
20.else{
21.if($cek_akun==1){
22.function generate_random_string($name_length = 8) {
23.$alpha_numeric ='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345
6789';
24.return substr(str_shuffle($alpha_numeric), 0, $name_length);
25.}
26.$reset_pass = generate_random_string();
27.$kepada = "$email";
28.$judul = "Reset Password Anda";
29.$dari
= "From: noreply@cauza.web.id\r\n";
30.$dari .= "MIME-Version: 1.0\r\n";
31.$dari .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
32.$pesan = "Anda menggunakan fasilitas reset pasword pada
situshttp://cauza.web.id. Berikut akun yang Anda minta :<br>";
33.$pesan .= "Username : $nama[username] <br>";
34.$pesan .= "Password : $reset_pass <br>";
35.$reset_encrypt = sha1($reset_pass);
36.
37.mail($kepada,$judul,$pesan,$dari);
38.
39.mysql_query("UPDATE member SET password
= '$reset_encrypt'
40.WHERE email
= '$email'");
41.
42.echo "<span class=posting>» <b>Reset Password</b></span><br /><br />";
43.echo "<p align=center><b>Silahkan cek email untuk memeriksa username dan
password Anda !<br /><a href='index.php'>Klik untuk kembali ke
beranda</a></b></p>";
44.} else {
45.echo "<span class=posting>» <b>Reset Password</b></span><br /><br />";
46.echo "<p align=center>Maaf <b>Email</b> anda tidak terdaftar sebagai member
kami. <br /><a href='daftar.html'>Buat Akun</a></p>";
47.}
48.}
49.echo "</div>
50.</div>";
51.}
Bisa dilihat dalam script tersebut akan menggenerate pasword baru dengan sebuah fungsi, kemudian
mengirimkannya ke email user diteruskan dengan mengenkripsi password baru tersebut yang selanjutnya disimpan
dalam database.
Yang terakhir jangan lupa untuk menambahkan aturan dalam .htaccess dengan script berikut :
view sourceprint?