Jumat, 19 September 2008

Script Forget Password PHP+MYSQL

Ini adalah tulisan pertama dan blog pertama saya^^, senangnya bisa menulis di blog,hihihihi...maap OOT(Out Of Topic).
Langsung aja ya, disini saya mau berbagi sedikit pengalaman bagaimana membuat Fasilitas Forget Password yang sering kita lihat pada website-website. Pertama saya akan menjelaskan terlebih dahulu bagaimana proses yang berjalan. Setelah anda memasukan alamat email ke dalam Form Forget Password maka secara otomatis sistem akan menggenerate password baru untuk anda kemudian sistem mengirim password baru tersebut ke alamat email yang bersangkutan. Isi dari email selain password baru anda adalah pilihan untuk anda, apakah anda ingin mengganti password yang baru yaitu dengan mengunjungi link yang telah tercantum disitu. Atau anda tidak ingin mengganti password dengan mengabaikan pesan tersebut. Bagaimana? Sudah punya bayangan ??? Atau malah jadi bingung??? Kalo bingung mari kita langsung praktekin aja deh. Catatan : disini saya menggunakan localhost sebagai webserver. Bagi yang ingin menerapkan pada server hostingannya dapat disesuaikan dengan kebutuhan.

1. Buatlah sebuah database email dengan table msuser di dalamnya:

CREATE TABLE `msuser` (
`username` varchar(20) collate latin1_general_ci NOT NULL,
`password` varchar(65) collate latin1_general_ci NOT NULL,
`email` varchar(50) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`username`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
-- 
-- Dumping data for table `msuser`
-- 
INSERT INTO `msuser` VALUES
('budiman', 'e10adc3949ba59abbe56e057f20f883e', 'budiman@yahoo.com');

2. Buat lah sebuah Login Form:


<!--login.php-->
<form name="form1" method="post" action="ProsesLogin.php"><div align="center">Form Login</div>
  <table width="400" border="0" cellspacing="0" cellpadding="0" align="center">
    <tr>
      <td>Username</td>
      <td><input name="username" type="text" id="username"></td>
    </tr>
    <tr>
      <td>Password</td>
      <td><input name="password" type="password" id="password" maxlength="13"></td>
    </tr>
    <tr>
      <td> </td>
      <td><input name="oke" type="submit" id="oke" value="Login"></td>
    </tr>
    <tr>
      <td colspan="2" align="center"><a href="forget_password.php">Forget Password</a></td>
    </tr>
  </table>
</form>


<!--ProsesLogin.php-->
<?php
//memulai session
session_start();

//buat koneksi ke database
$con " mysql_connect("localhost","root","");
mysql_select_db("email",$con);

//tangkap variable username dan password dari textfield, variable masuk dari tombol login
$username " $_POST['username'];
$password " md5(strtolower($_POST['password']));//enkripsi password yg telah di input
$login " $_POST['oke'];

if($login""'Login'){//apabila tombol login di tekan
$sql " "SELECT * FROM msuser WHERE username"'$username' AND password"'$password'";//buat query untuk mengecek variable yg telah ditangkap
$runquery " mysql_query($sql) or die(mysql_error());//jalankan query
$rs " mysql_fetch_array($runquery);//ambil data dari database
if($username""$rs['username'] && $password""$rs['password']){//mengecek apakah username dan password ada yg sesuai dgn data yg ada di database
echo "Berhasil Login";//tampilkan pesan berhasil apabila berhasil login
exit();
}
else{//tampilkan pesan error apabila username dan password salah
echo "Anda Tidak Terdaftar";
exit();
}
}

//tutup koneksi ke database
mysql_close();
exit();
?>


3. Buatlah Forget Password Form:


<!--forget_password.php-->
<form name""form1" method""post" action""send_email.php">
 Please Insert Your Email Address
  <input name""email" type""text" id""email">
  <input name""oke" type""submit" id""oke" value""Send">
</form>


4. Buatlah script untuk menggenerate password yang baru dan mengirim email:
<!--send_email.php-->
<?php 
//memulai session
session_start();
//buat koneksi ke database
$con " mysql_connect("localhost","root","");
mysql_select_db("budibanget",$con);
//tangkap varible email
$email " $_POST['email'];
if($_POST['oke']""'Send'){//apabila tombol kirim di tekan
//buat query untuk mengambil data password berdasarkan email yg dimasukan
$CekEmail " "select password from msuser where Email"'$email'";
$hasil " mysql_query($CekEmail);//jalankan query
$jumlah " mysql_num_rows($hasil);//mengambil data dari database
if($jumlah""1){//mengecek apakah email ada yg sesuai dgn data di database
function generatePassword ($length " 8)
{
   // mulai dengan password kosong
   $password " "";
 
   // definisikan karakter-karakter yang diperbolehkan
   $possible " "0123456789bcdfghjkmnpqrstvwxyz"; 
 
  // set up sebuah counter
   $i " 0; 
 
   // tambahkan karakter acak ke $password sampai $length tercapai
   while ($i < $length) { 
     // ambil sebuah karakter acak dari beberapa
     // kemungkinan yang sudah ditentukan tadi
     $char " substr($possible, mt_rand(0, strlen($possible)-1), 1);
 
     // kami tidak ingin karakter ini jika sudah ada pada password
     if (!strstr($password, $char)) { 
       $password ." $char;
       $i++;
     }
   }
   return $password;
}
//tangkap fungsi yg telah dibuat ke dlm variable
$PasswordBaru " GeneratePassword();
//buat varible untuk mengirimkan email
$judul " "Passord Anda";
$dari " "From: www.budibanget.net84.net";
$dari ." "MIME-Version: 1.0\n";
$dari ." "Reply-To: bu_ddyman$yahoo.com";
$dari ." "Content-Type: text/html; charset"iso-8859-1\n";
$pesan " "Password anda yang baru: ".$PasswordBaru."\r\n";
$pesan ." "silahkan mengunjungi link ini: \r\n http://localhost/latian/email/forget_password/reset_password.php?password"$PasswordBaru\r\n";
$pesan ." "jika anda tidak ingin merubah password, abaikan pesan ini\r\n";
//tampung fungsi kirmi email
$kirim " mail($email, $judul, $pesan, $dari);
//jika email berhasil dikirim cetak pesan
if($kirim){
echo "Password Anda Telah Berhasil Dikirim ke Email Anda<br>Silahkan Cek Email Anda.<br>Terima Kasih";
exit();
}
//jika email gagal di kirim tampilkan pesan error
else{
echo "Pengiriman Email Gagal, Silahkan Mencoba Kembali";
exit();
}
}
}
//tutup koneksi ke database
mysql_close();
exit();
?>

5.  Buatlah script untuk mereset password lama anda menjadi password baru:

<!--reset_password.php-->
<?php
//memulai session
session_start();
//buat koneksi ke database
$con " mysql_connect("localhost","root","");
mysql_select_db("budibanget",$con);
//tangkap variable password
$PasswordBaru " md5($_REQUEST['password']);
//buat query untuk mengubah password yg lama
$UbahPassword " "UPDATE msuser SET password"'$PasswordBaru'";
$hasil " mysql_query($UbahPassword);//jalankan query
//jika query berhasil redirect ke halaman login
if($hasil){
echo '<meta http-equiv""refresh" content""0;URL"login.php">';
exit();
}
//jika query gagal maka tampilkan pesan error
else{
echo "Kesalahan Dalam Sistem<br>Silahkan Menghubungi Administrator Website";
exit();
}
//menutup koneksi ke database
mysql_close();
exit();
?>


Sekarang saatnya anda mencoba script yang telah anda buat. Jalankan login.php, masukan Username: budiman dan Password: 123456, jika sukses login maka akan muncul sebuah tampilan "Berhasil Login". Kembali ke halaman login.php, sekarang anda bukan menekan tombol login lagi tapi coba klik tombol Forget Password yang berada di bawah tombol login. Anda akan dibawa ke halaman Form Forget Password. Masukan alamat email budiman@yahoo.com. Pertama sistem akan menggenerate password baru anda kemudian mengirimkannya ke email anda, itulah fungsi dari script send_email.php. Selanjutnya jika anda bersedia mengganti password, anda akan mengunjungi link yang telah disediakan. Pada saat anda meng-klik link tersebut secara otomatis sistem mengubah password lama anda menjadi password baru yang sebelumnya telah di generate oleh sistem.  Apabila password berhasil diubah anda akan diredirect ke halaman login.php. Coba masukan Userename:budiman dan Password:(password baru). Hoop...!!! Berhasil. Gimana? Bisakan? Metode ini telah saya coba pada personal website saya :www.budibanget.net84.net (catatan: tetapi saya gak mau memberitahukan anda alamat email saya,hohoho)
Semoga bermanfaat dan Selamat Mencoba. Terima Kasih...

1 Komentar:

Blogger Unknown mengatakan...

Thanks gans. mantabs bin manjur.. :D

9 April 2014 pukul 10.33  

Posting Komentar

Berlangganan Posting Komentar [Atom]

<< Beranda