40% menganggap dokumen ini bermanfaat (5 suara)
10K tayangan40 halaman

Script PHP Ganti Password

Dokumen tersebut memberikan penjelasan tentang cara membuat script PHP untuk mengganti password administrator. Script tersebut memverifikasi password lama sebelum mengubahnya menjadi password baru yang diinputkan pengguna. Password baru akan dienkripsi sebelum disimpan ke database.

Diunggah oleh

d307191
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
40% menganggap dokumen ini bermanfaat (5 suara)
10K tayangan40 halaman

Script PHP Ganti Password

Dokumen tersebut memberikan penjelasan tentang cara membuat script PHP untuk mengganti password administrator. Script tersebut memverifikasi password lama sebelum mengubahnya menjadi password baru yang diinputkan pengguna. Password baru akan dienkripsi sebelum disimpan ke database.

Diunggah oleh

d307191
Hak Cipta
© Attribution Non-Commercial (BY-NC)
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 40

Script PHP Ganti Password

Posted on: July 26th, 2010 by IW Tutorial PHP ini ditujukan untuk newbie yang sudah mulai mengenal PHP, namun masih membutuhkan banyak nutrisi berisi kasus-kasus yang biasa di temui oleh para web developer sebelumnya. Beberapa hari lalu seorang pengunjung ilmuwebsite bertanya kepada penulis perihal bagaimana membuat script php untuk mengganti password lama dengan password yang baru? Yang perlu dilakukan adalah pembuatan database dan tablenya terlebih dahulu, di mana pada table tersebut minimal harus tersedia field username, dan field password. Databasenya kira-kira seperti ini : create database labdb; use labdb; create table tbl_user (id int(5) auto_increment primary key, username varchar(75), password varchar(255)); insert into tbl_user(password, username) values( admin, admin ); Selanjutnya adalah halaman yang digunakan nantinya untuk mengganti password. Di sini penulis membuatnya sesimple mungkin, karena yang akan dijelaskan adalah intinya saja, yakni mengganti password lama menjadi password yang baru. Script HTML ini penulis save dengan nama formUbahPassword.html Isinya adalah seperti ini <html> <head><title></title></head> <body> <table border=1> <form action=changePassword.php method=POST /> <tr><td>username:</td><td><input type=text name=username id=username /></td></tr>

<tr><td>password <strong>lama</strong>:</td><td><input type=password name=passwordlama id=passwordlama /></td></tr> <tr><td>password <strong>baru</strong>:</td><td><input type=password name=passwordbaru id=passwordbaru /></td></tr> <tr><td>konfirmasi <strong>password baru</strong>:</td><td><input type=password name=konfirmasipassword id=konfirmasipassword /></td></tr> <tr><td></td><td><input type=submit name=change value=ganti!! /></td></tr> </form> </table> </body> </html> kemudian file koneksiDB.php <?php $host = localhost; $username = root; $password = ; $database = labdb; $koneksi = mysql_connect($host, $username, $password); mysql_select_db($database, $koneksi) or die( MySQL Gagal Koneksi ); ?> dan yang terakhir adalah file intinya yakni changePassword.php, <?php require_once koneksiDB.php; $passwordlama = $_POST['passwordlama'];

$passwordbaru = $_POST['passwordbaru']; $konfirmasipassword = $_POST['konfirmasipassword']; $username = $_POST['username']; $cekuser = select * from tbl_user where username = $username and password = $passwordlama; $querycekuser = mysql_query($cekuser); $count =? mysql_num_rows($querycekuser); if ($count >= 1){ $updatepassword = update tbl_user set password = $passwordbaru where username = $username; $updatequery = mysql_query($updatepassword); if($updatequery) { Password telah diganti menjadi $passwordbaru; } } ?> Sebetulnya apa yang terjadi sangatlah sederhana, untuk mengganti password yang baru adalah haruslah mengetahui password yang saat ini. Kemudian nantinya password yang lama akan di cocokkan dengan database, dan jika memang username dan password nya sesuai maka, maka password yang lama akan ditimpa dengan password baru yang dimasukkan user. Oke, semoga penjelasan singkat ini bermanfaat. Selamat Mencoba.

Script PHP Untuk Update Password Administrator Posted By rosihanari On October 30, 2008 @ 8:36 am In PHP | Comments Disabled Ada seorang teman dan penikmat setia blog saya ini yang pernah meminta tolong untuk dibuatkan tutorial bagaimana membuat script PHP dalam proses updating password administrator. Karena saya waktu itu telah menjanjikan, ya akhirnya saya usahakan untuk membuat tutorial ini. Untuk mempersempit scope dari tutorial ini, diasumsikan password administrator sudah ada sebelumnya dan disimpan dalam tabel database yang memiliki struktur sbb:
CREATE TABLE `user` ( `username` varchar(30), `password` varchar(32), PRIMARY KEY (`username`) )

dan data username serta password admin yang disimpan dalam tabel di atas adalah sbb: username : admin password : d46d2f5893d5029080d74310eaa9306e password di atas adalah hasil enkripsi dari password aslinya admin123. Enkripsinya sendiri menggunakan metode md5 yang dikombinasikan dengan pengacak. Baca kembali penjelasannya di artikel saya tentang tips membuat password dengan md5 [1]. Berikut ini proses enkripsinya:
$pengacak = "hduwAHDU28328heUUH7283xx"; $password = "admin123";

$passwordEnkrip = md5($pengacak.md5($password.$pengacak)); Nah untuk mekanisme update password ini pada dasarnya meminta user, dalam hal ini administratornya, untuk memasukkan password yang lama terlebih dahulu (admin123) ke dalam form update. Selanjutnya user diminta pula memasukkan password baru. Untuk password baru ini, user diminta memasukkan dua kali, karena hal ini berguna untuk mengkonfirmasi benar tidaknya penulisan ejaan password baru tersebut. OK dari penjelasan di atas, kita coba buat dahulu formnya form.html
<h1>Update Password Administrator</h1> <form method="post" action="update.php"> <table> <tr><td>Masukkan password lama</td><td><input type="password" name="oldPass" /></td></tr>

<tr><td>Masukkan password baru</td><td><input type="password" name="newPass1" /></td></tr> <tr><td>Masukkan kembali password baru</td><td><input type="password" name="newPass2" /></td></tr> <tr><td></td><td><input type="submit" name="submit" value="Submit"></td></tr> </table> </form>

Setelah user (administrator) memasukkan password lama dan barunya melalui form di atas, selanjutnya script update terlebih dahulu harus mengecek benar tidaknya password lama. Untuk mengeceknya, kita bandingkan hasil enkripsi dari password lama yang dimasukkan melalui form di atas dengan data password lama terenkripsi yang tersimpan dalam tabel user. Dengan demikian dalam script update terdapat statement perbandingan sbb:
if (password terenkripsi di database = md5($pengacak.md5(password lama dari form.$pengacak)))

Perhatikan perbandingan di atas bahwa metode untuk mengenkripsi password lama dari form harus sama dengan metode enkripsi ketika menyimpan password lama di database, termasuk pengacaknya. Jika password terenkripsi yang disimpan dalam database sama dengan password terenkripsi dari form, atau dengan kata lain password lama yang dimasukkan via form dan di database sama, maka selanjutnya cek kesesuaian antara password baru 1 dan 2. Jika sama, maka proses update password bisa dilakukan. Perhatian bahwa sebelum mengupdate passwordnya di database, jangan lupa untuk mengenkripsinya terlebih dahulu. Gunakan metode enkripsi dan pengacak yang sama. Dari penjelasan di atas, kita buat script untuk update passwordnya. update.php
<?php $pengacak = "hduwAHDU28328heUUH7283xx"; mysql_connect("dbhost", "dbuser", "dbpass"); mysql_select_db("dbname"); // membaca pass lama, dan baru dari form $passwordlama = $_POST['oldPass']; $passwordbaru1 = $_POST['newPass1']; $passwordbaru2 = $_POST['newPass2']; // cek benar tidaknya password yang lama $query = "SELECT * FROM user WHERE username = 'admin'"; $hasil = mysql_query($query); $data = mysql_fetch_array($hasil); if ($data['password'] == md5($pengacak.md5($passwordlama.$pengacak)))

{ // jika password lama benar, maka cek kesesuaian password baru 1 dan 2 if ($passwordbaru1 == $passwordbaru2) { // jika password baru 1 dan 2 sama, maka proses update password dilakukan // enkripsi password baru sebelum disimpan ke db $passwordbaruenkrip = md5($pengacak.md5($passwordbaru1.$pengacak)); $query = "UPDATE user SET password = '$passwordbaruenkrip' WHERE username = 'admin' "; $hasil = mysql_query($query); if ($hasil) echo "Update password Admin sukses"; } else echo "Password baru Anda tidak sama"; } else echo "Password lama Anda salah"; ?>

OK selesai juga akhirnya kita buat scriptnya. Kepada mas yang telah merequest tutorial ini thanks to u dan janji saya sudah ditunaikan. Maaf karena baru bisa posting sekarang. Mudahmudahan berguna bagi semuanya

PHP Change Password script using mysql


Change password feature is a common requirement for any membership management script. Here members can change their password after logging in to the member area. Here we will check the session of the member to allow or disallow the access the change password page of the site. Here we can ask the member to enter the old password once and then enter new password twice. Since the member has already used his or her old password to login so there is no point in asking the same again for verification. You can include this step also if required but here we will skip the step involving entering the old password. We know the user-id if the member as he has logged in so we will not ask the member to enter userid again. It is not a good practice to allow the member change his or her userid. The new password will be effective from the next login of the member. We will ask the member to enter the new password twice. Both the entered password should match and must pass the validation. If all the checks passed well then we will update the record of the member with new password. Let us start with the form. You can download the code at the end of this tutorial but here is the form for change password.
Change Password New Password Re-enter New Password

Now this form will submit to another page where all the values will be validated and then table will be updated with new password. First we will see the member has opened this page after logging in, if not then we will stop the execuation of the page by using exit command. Here is the part of the code to do that. This checking of session is common in many pages where a login member can only access for example the pages where the profile to be updated or present page where password to be changed. So we have kept this common code in a separate file check.php and include that file in all required pages.

// check the login details of the user and stop execution if not logged in require "check.php";

Inside the file check.php we have only few lines of code to check the session. Here it is for your reference.

<?Php if(!isset($_SESSION['userid'])){ echo "<center><font face='Verdana' size='2' color=red> Sorry, Please login and use this page </font></center>"; exit; } ?>

Now let us collec all the form posted data of the user

$todo=$_POST['todo']; $password=$_POST['password']; $password2=$_POST['password2'];


Now let us check the data and sanitize the data entered by user by using mysql_real_escape_string function

if(isset($todo) and $todo=="change-password"){ $password=mysql_real_escape_string($password);


Now we will set the flags for validation of the variables. Please note that we have used limited validation here and you can go for more checking as per your requirements. ( like allowing only numbers or chars in the password etc )

$status = "OK"; $msg="";


After this we will see that our entered password is not less than 3 char and more that 8 char length.

if ( strlen($password) < 3 or strlen($password) > 8 ){ $msg=$msg."Password must be more than 3 char legth and maximum 8 char lenght<BR>"; $status= "NOTOK";}
Now let us check wheter both the passwords are equal or not

if ( $password <> $password2 ){ $msg=$msg."Both passwords are not matching<BR>"; $status= "NOTOK";}
Now if our validation is ok then we will go for updation sql and if validation is not ok then we will display the error message. In our query we are using sql update statement and based on the

success of the sql update statement we can display the message. Here is the code for the updation of the member table.

if($status<>"OK"){ echo "<font face='Verdana' size='2' color=red>$msg</font><br><center><input type='button' value='Retry' onClick='history.go(-1)'></center>"; }else{ // if all validations are passed. if(mysql_query("update plus_signup set password='$password' where userid='$session[userid]'")){ echo "<font face='Verdana' size='2' ><center>Thanks <br> Your password changed successfully. Please keep changing your password for better security</font></center>"; } }

Download Modified PHP signup with login script if register_global is off for PHP 5 Here we are storing password as a simple text in a varchar field. But it is always better to encrypt the password and store. In case of encrypted password system the changed password is to be encrypted before storing in our table.

Membuat Fasilitas Lost Password dengan PHP


September 23rd, 2008 | by rosihanari | Cetak Artikel Ini

Password hilang atau lupa barangkali sering dialami oleh user untuk proses autentifikasi. Oleh karena itu, biasanya suatu sistem yang menggunakan autentifikasi user memfasilitasi usernya dengan fitur Lost Password. Dengan adanya fasilitas itu, user dapat memperoleh kembali password yang hilang tersebut. Dalam tutorial kali ini, akan dibahas mengenai cara pembuatan fasilitas lost password ini dengan script PHP. Pada dasarnya, mekanisme proses lost password ini adalah mengirimkan password baru ke user yang kehilangan passwordnya melalui email. Mengapa yang dikirim password yang baru? Ya hal ini karena password yang lama si user telah dienkripsi di dalam database, sehingga dibutuhkan script untuk mendekrip password terenkripsi tersebut sebelum dikirim via email. Tentu hal ini akan sangat merepotkan si programmer. Nah bagaimana bentuk password yang baru tersebut? Biasanya password baru tersebut bersifat random (dalam 4-8 digit karakter). Dengan demikian proses lost password sama halnya mereset password user dengan yang baru dan mengirimkannya via email. Mengingat password baru ini dikirimkan ke user via email, maka perlu kita buat field untuk memasukkan email user ketika proses registrasi. OK.. kita mulai membuat scriptnya ya. Mula-mula kita siapkan terlebih dahulu tabel untuk keperluan penyimpanan data user (termasuk emailnya)
view sourceprint?
1.CREATE TABLE user ( 2.username varchar(30), 3.password varchar(32), 4.email varchar(100), 5.PRIMARY KEY (username) 6.)

Selanjutnya, kita buat form untuk registrasi user baru. register.htm


view sourceprint?
01.<form action="submit.php" method="post"> 02.<table border="0"> 03.<tbody> 04.<tr> 05.<td>Masukkan Username</td> 06.<td> 07.<input name="username" type="text" /></td> 08.</tr> 09.<tr> 10.<td>Masukkan E-mail</td> 11.<td> 12.<input style="background-color: #ffffa0;" name="email" type="text" /></td> 13.</tr> 14.<tr> 15.<td>Masukkan Password</td> 16.<td> 17.<input name="pass1" type="password" /></td> 18.</tr> 19.<tr> 20.<td>Ulangi Password</td> 21.<td> 22.<input name="pass2" type="password" /></td> 23.</tr> 24.<tr> 25.<td></td>

26.<td> 27.<input name="Submit" type="submit" value="Submit" /></td> 28.</tr> 29.</tbody></table> 30.</form>

Untuk mengolah form register user di atas, kita buat pula scriptnya. submit.php
view sourceprint?
01.<?php 02.$username = $_POST['username']; 03.$password1 = $_POST['pass1']; 04.$password2 = $_POST['pass2']; 05.$email = $_POST['email']; 06. 07.// cek kesamaan password 08.if ($password1 == $password2) 09.{ 10.mysql_connect("namahost", "dbuser", "dbpass"); 11.mysql_select_db("dbname"); 12. 13.// perlu dibuat sebarang pengacak 14.$pengacak = "NDJS3289JSKS190JISJI"; 15. 16.// mengenkripsi password dengan md5() dan pengacak 17.$password1 = md5($pengacak . md5($password1) . $pengacak); 18. 19.// menyimpan username dan password terenkripsi ke database

20.$query = "INSERT INTO user VALUES('$username', '$password1', '$email')"; 21.$hasil = mysql_query($query); 22. 23.// menampilkan status pendaftaran 24.if ($hasil) echo "User sudah berhasil terdaftar"; 25.else echo "Username sudah ada yang memiliki"; 26. 27.} 28.else echo "Password yang dimasukkan tidak sama"; 29. 30.?>

Apabila Anda perhatikan, maka pada prinsipnya script pengolah form registrasi ini sama dengan script pada pembahasan tentang autentifikasi user yang telah saya tulis sebelumnya. Bedanya hanyalah pada ada tidaknya email. Namun secara umum proses autentifikasi boleh juga kok ada emailnya, malah lebih baik jika ada. Oya jangan lupa untuk mengenkripsi password dengan md5() dan pengacak. Selanjutnya kita bikin form login user. login.htm
view sourceprint?
01.<form action="..." method="post"> 02.<table border="0"> 03.<tbody> 04.<tr> 05.<td>Masukkan Username</td> 06.<td> 07.<input name="username" type="text" /></td> 08.</tr> 09.<tr> 10.<td>Masukkan Password</td>

11.<td> 12.<input name="pass" type="password" /></td> 13.</tr> 14.<tr> 15.<td></td> 16.<td> 17.<input name="Submit" type="submit" value="Submit" /></td> 18.</tr> 19.<tr> 20.<td><a href="lostpassword.htm">Lost Password</a></td> 21.<td></td> 22.</tr> 23.</tbody></table> 24.</form>

Nah perhatikan pada form di atas. Pada bagian bawah form, kita tempatkan link untuk lost passwordnya. Sebagai catatan, untuk script pengolah login (bagian action), sengaja tidak saya tulis karena pada prinsipnya sama dengan proses autentifikasi yang telah saya tulis sebelumnya. Dalam hal ini kita hanya fokus ke lost passwordnya saja. OK? Sekarang, kita buat form untuk lost password. Dalam form ini, user diminta memasukkan usernamenya. lostpassword.htm
view sourceprint?
01.<form action="kirimpassword.php" method="post"> 02.<table border="0"> 03.<tbody> 04.<tr> 05.<td>Masukkan Username Anda</td> 06.<td> 07.<input name="username" type="text" /></td>

08.</tr> 09.<tr> 10.<td></td> 11.<td> 12.<input name="Submit" type="submit" value="Submit" /></td> 13.</tr> 14.</tbody></table> 15.</form>

Mengingat untuk lost password ini dibutuhkan username, maka harus ada jaminan bahwa username ini unik (tidak boleh ada username yang sama). Oleh karena itu untuk mengantisipasi adanya beberapa username yang sama, kita buat field username ini menjadi primary key di tabelnya. Nah hal ini sudah kita buat ketika membuat tabelnya bukan? So dont worry. Form untuk lost password sudah dibuat, berikutnya kita buat script pengolah lost passwordnya. kirimpassword.php
view sourceprint?
01.<?php 02. 03.mysql_connect("namahost", "dbuser", "dbpass"); 04.mysql_select_db("dbname"); 05. 06.$username = $_POST['username']; 07. 08.function randomPassword() 09.{ 10.// function untuk membuat password random 6 digit karakter 11. 12.$digit = 6; 13.$karakter = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789";

14. 15.srand((double)microtime()*1000000); 16.$i = 0; 17.$pass = ""; 18.while ($i <= $digit-1) 19.{ 20.$num = rand() % 32; 21.$tmp = substr($karakter,$num,1); 22.$pass = $pass.$tmp; 23.$i++; 24.} 25.return $pass; 26.} 27. 28.// membuat password baru secara random -> memanggil function randomPassword 29.$newPassword = randomPassword(); 30. 31.// perlu dibuat sebarang pengacak 32.$pengacak = "NDJS3289JSKS190JISJI"; 33. 34.// mengenkripsi password dengan md5() dan pengacak 35.$newPasswordEnkrip = md5($pengacak . md5($newPassword) . $pengacak); 36. 37.// mencari alamat email si user 38.$query = "SELECT * FROM user WHERE username = '$username'"; 39.$hasil = mysql_query($query); 40.$data = mysql_fetch_array($hasil);

41.$alamatEmail = $data['email']; 42. 43.// title atau subject email 44.$title = "New Password"; 45. 46.// isi pesan email disertai password 47.$pesan = "Username Anda : ".$username.". \nPassword Anda yang baru adalah ".$newPassword; 48. 49.// header email berisi alamat pengirim 50.$header = "From: [email protected]"; 51. 52.// mengirim email 53.$kirimEmail = mail($alamatEmail, $title, $pesan, $header); 54. 55.// cek status pengiriman email 56.if ($kirimEmail) { 57. 58.// update password baru ke database (jika pengiriman email sukses) 59.$query = "UPDATE user SET password = '$newPasswordEnkrip' WHERE username = '$username'"; 60.$hasil = mysql_query($query); 61. 62.if ($hasil) echo "Password baru telah direset dan sudah dikirim ke email Anda"; 63.} 64.else echo "Pengiriman password baru ke email gagal"; 65.

66.?>

Perhatikan pada function pengacak password pada script di atas. Dalam daftar karakter ($karakter = ABCDEFGHJKLMNPQRSTUVWXYZ23456789) yang digunakan untuk membuat random password tidak ada huruf I, O serta angka 1 dan 0. Ini sengaja saya buat karena menghindari keambiguan dalam membaca. Kadang orang salah membaca angka 1 dan huruf I, begitu pula angka 0 dan huruf O. Nah password baru yang dikirm ke email user adalah password random yang dihasilkan function randomPassword(). Oya, perhatikan pula pada proses update password baru ke database. Apabila kita perhatikan, maka proses update ini dilakukan setelah pengiriman email sukses. Mengapa demikian? Ya bagaimana seandainya pengiriman email gagal, tapi password yang baru sudah terupdate di database? Tentu si user bingung Satu lagi yang penting, gunakan pengacak enkripsi yang sama ketika pada proses registrasi user dan juga pada waktu proses login. Jika tidak sama.. hmmm repot, karena user nantinya gak bisa login.

Membuat Autentifikasi User di PHP


September 19th, 2008 | by rosihanari | Cetak Artikel Ini

Masalah autentifikasi user ini sering ditanyakan oleh orang kepada saya. Masalah ini pula yang sering banyak dijumpai kelemahannya sehingga hal ini menjadi sesuatu hal yang sangat krusial. Sekali autentifikasi ini bobol, maka dampaknya akan sangat berbahaya bagi suatu sistem. Pada artikel ini akan dijelaskan perlunya autentifikasi user dalam suatu sistem, serta cara pembuatannya dengan PHP script. Ngomong-ngomong apa sih autentifikasi user ini? Autentifikasi user adalah suatu mekanisme untuk memastikan apakah suatu user itu berhak masuk ke dalam sistem atau bukan. Implementasinya adalah berupa login. Dalam hal ini user yang berhak mengakses akan diberikan nama user tertentu beserta password. Gampangannya bila terdapat nama user dan password yang tidak terdaftar dalam daftar user, maka user tersebut tidak berhak mengakses. Saya kira tidak perlu dipanjanglebarkan masalah ini karena hampir semua orang tahu OK. saya akan coba menjelaskan mekanisme autentifikasi ini terlebih dahulu. Berikut ini alur atau proses dari proses autentifikasi user, mulai user tersebut mendaftar. Pendaftaran User
1. User mengisi form pendaftaran sebagai legal user (user mengisi username dan password) 2. Sistem akan mengecek apakah username yang didaftarkan sudah ada yang memiliki atau belum 3. Jika sudah ada, user diminta mengisi kembali username yang lain beserta passwordnya. Sedangkan jika belum ada, data user ini akan disimpan dalam database, dengan password terenkripsi.

Proses Autentifikasi
1. User yang akan mengakses sistem diminta memasukkan username dan password (asli) 2. Sistem akan mencari password terenkripsi yang tersimpan dalam database berdasarkan username yang terdaftar 3. Sistem akan mencocokkan antara password asli terenkripsi yang diisikan user melalui form login, dengan password terenkripsi yang tersimpan dalam database

4. Jika password asli terenkripsi yang dikirim via form login ini sama dengan password terenkripsi yang ada dalam database, maka user tadi bisa masuk ke dalam sistem. Jika tidak sama, maka user tadi tidak berhak masuk ke sistem.

Proses autentifikasi tidak hanya sampai sini saja Kadangkala user nakal ingin masuk ke sistem tanpa melalui proses autentifikasi terlebih dahulu atau melakukan by pass ke dalam sistem. Nah hal ini juga berbahaya. Kita harus bisa mengantisipasi hal ini bila tidak ingin sistem yang dibangun diacak-acak oleh orang yang tidak berhak. Dalam artikel ini akan dibahas bagaimana membuat autentifikasi user ini dengan script PHP, serta mengantisipasi user yang mem-by pass autentifikasi ini. Pertama, kita siapkan tabel user terlebih dahulu.
view sourceprint?
1.CREATE TABLE user ( 2.username varchar(20), 3.password varchar(32), 4.PRIMARY KEY (username) 5.)

Mengapa field username ini kita buat primary key, ya karena username harus unik, tidak boleh ada username yang sama. Sedangkan password kita set tipe datanya varchar dengan panjang field 32. Mengapa 32? Ya karena password yang akan disimpan di sini adalah terenkripsi. Untuk enkripsi nanti kita akan gunakan MD5() termodifikasi, seperti yang telah dijelaskan pada artikel saya tentang Tips Membuat Password dengan MD5(). Nah hasil md5() ini adalah karakter dengan panjang 32. OK langkah kedua kita siapkan form pendaftaran usernya. register.php
view sourceprint?
01.<form method="post" action="submit.php"> 02.<table border="0"> 03.<tr> 04.<td>Masukkan Username </td> 05.<td><input name="username" type="text"></td> 06.</tr>

07.<tr> 08.<td>Masukkan Password </td> 09.<td><input name="pass1" type="password"></td> 10.</tr> 11.<tr> 12.<td>Ulangi Password </td> 13.<td><input name="pass2" type="password"></td> 14.</tr> 15.<tr> 16.<td>&nbsp;</td> 17.<td><input type="submit" name="Submit" value="Submit"></td> 18.</tr> 19.</table> 20.</form>

Perhatikan pada form di atas terdapat dua isian untuk password. Mengapa tidak hanya satu isian saja? Dengan mengisi password lebih dari satu kali akan memastikan bahwa password yang dimasukkan adalah benar dari sisi ejaannya. Selanjutnya kita buat script untuk pemrosesan registrasi user ini. submit.php
view sourceprint?
01.<?php 02.$username = $_POST['username']; 03.$password1 = $_POST['pass1']; 04.$password2 = $_POST['pass2']; 05. 06.// cek kesamaan password 07.if ($password1 == $password2) 08.{

09.mysql_connect("namahost", "dbuser", "dbpass"); 10.mysql_select_db("dbname"); 11. 12.// perlu dibuat sebarang pengacak 13.$pengacak = "NDJS3289JSKS190JISJI"; 14. 15.// mengenkripsi password dengan md5() dan pengacak 16.$password1 = md5($pengacak . md5($password1) . $pengacak); 17. 18.// menyimpan username dan password terenkripsi ke database 19.$query = "INSERT INTO user VALUES('$username', '$password1')"; 20.$hasil = mysql_query($query); 21. 22.// menampilkan status pendaftaran 23.if ($hasil) echo "User sudah berhasil terdaftar"; 24.else echo "Username sudah ada yang memiliki"; 25. 26.} 27.else echo "Password yang dimasukkan tidak sama"; 28. 29.?>

Untuk proses pengenkripsian password seperti halnya dijelaskan pada artikel tentang Tips Membuat Password dengan MD5(), Anda boleh membuat pengacak yang lain, atau mengkombinasikan sendiri bentuknya, misalnya $password1 = md5($pengacak.md5($pengacak.$password1.$pengacak).$pengacak) atau yang lain.. Its up to you, yang jelas jangan menggunakan $password1 = md5($password1); Nah selanjutnya misalkan kita buat skenario bahwa terdapat dua buah halaman (halaman 1 dan halaman 2) dalam sistem yang membutuhkan autentifikasi user sebelum masuk ke dalamnya. OK untuk autentifikasi, kita buat form loginnya.

login.php
view sourceprint?
01.<form method="post" action="loginsubmit.php"> 02.<table border="0"> 03.<tr> 04.<td>Masukkan Username </td> 05.<td><input name="username" type="text"></td> 06.</tr> 07.<tr> 08.<td>Masukkan Password </td> 09.<td><input name="pass" type="password"></td> 10.</tr> 11.<tr> 12.<td>&nbsp;</td> 13.<td><input type="submit" name="Submit" value="Submit"></td> 14.</tr> 15.</table> 16.</form>

Jangan lupa buat pula script untuk mengolah loginnya loginsubmit.php


view sourceprint?
01.<?php 02.// menjalankan session 03.session_start(); 04. 05.$username = $_POST['username']; 06.$password = $_POST['pass'];

07. 08.mysql_connect("namahost", "dbuser", "dbpass"); 09.mysql_select_db("dbname"); 10. 11.// mencari password terenkripsi berdasarkan username 12.$query = "SELECT * FROM user WHERE username = '$username'"; 13.$hasil = mysql_query($query) or die("Error"); 14.$data = mysql_fetch_array($hasil); 15. 16.$pengacak = "NDJS3289JSKS190JISJI"; 17. 18.// cek kesesuaian password terenkripsi dari form login 19.// dengan password terenkripsi dari database 20.if (md5($pengacak.md5($password).$pengacak) == $data['password']) 21.{ 22.// jika sesuai, maka buat session untuk username 23.$_SESSION['username'] = $username; 24. 25.// menampilkan menu ke halaman akses 26.echo "<h2>Login sukses</h2>"; 27.echo "<p><a href=\"hal1.php\">Menu 1</a> | <a href=\"hal2.php\">Menu 2</a></p>"; 28.} 29.else echo "<h2>Login Gagal</h2>"; 30. 31.?>

Perhatikan dalam cek kesesuaian password terenkripsi dari form dan dari database, harus menggunakan pengacak dan rule yang sama dengan proses mengenkripsi password sebelum disimpan ke database (lihat kembali script submit.php). Selanjutnya, untuk mencegah by pass yang dilakukan user nakal ke dalam halaman 1 dan 2, maka kita perlu membuat script untuk menanggulangi hal ini. cek.php
view sourceprint?
01.<?php 02. 03.session_start(); 04. 05.// mengecek ada tidaknya session untuk username 06.if (!isset($_SESSION['username'])) 07.{ 08.echo "<h1>Anda belum login</h1>"; 09.exit; 10.} 11. 12.?>

Script di atas berguna untuk mengecek keberadaan session untuk username. Bila user tidak melakukan login, maka session username tidak pernah dibuat. Sehingga apabila user tidak melakukan login, akan muncul pesan Anda belum login. Perintah isset() digunakan untuk mengecek keberadaan suatu variabel (dalam hal ini variabel session untuk username). Perintah ini akan menghasilkan nilai TRUE jika variabel yang dicek ada, dan FALSE jika variabel tidak ada. Nah.. script cek.php di atas harus disisipkan di setiap halaman yang sifatnya private atau membutuhkan autentifikasi user. Misalkan isi halaman 1 dan 2 adalah sebagai berikut hal1.php
view sourceprint?

01.<?php 02. 03.include "cek.php"; 04. 05.echo "<h1>Ini Halaman 1</h1>"; 06.echo "<p><a href=\"hal1.php\">Menu 1</a> | <a href=\"hal2.php\">Menu 2</a></p>"; 07.echo "<p>Ini isi halaman 1. Ini isi halaman 1</p>"; 08.echo "<p>Ini isi halaman 1. Ini isi halaman 1</p>"; 09.echo "<p><a href=\"logout.php\">Logout</a></p>"; 10. 11.?>

hal2.php
view sourceprint?
01.<?php 02. 03.include "cek.php"; 04. 05.echo "<h1>Ini Halaman 2</h1>"; 06.echo "<p><a href=\"hal1.php\">Menu 1</a> | <a href=\"hal2.php\">Menu 2</a></p>"; 07.echo "<p>Ini isi halaman 2. Ini isi halaman 2</p>"; 08.echo "<p>Ini isi halaman 2. Ini isi halaman 2</p>"; 09.echo "<p><a href=\"logout.php\">Logout</a></p>"; 10. 11.?>

Perhatikan di setiap halaman private disisipkan script cek.php. Apakah harus diletakkan sebelum isi dari halaman? Ya harus sebelum menampilkan isi halaman, terlebih dahulu

harus di cek apakah user yang akan mengakses sudah login atau belum. Jika belum langsung muncul pesan belum login dan exit artinya isi halaman tidak ditampilkan di browser. Oya jangan lupa membuat script untuk logout. Konsep logout dalam autentifikasi adalah menghapus variabel session untuk username tadi. logout.php
view sourceprint?
01.<?php 02. 03.session_start(); 04. 05.// menghapus session username 06.unset($_SESSION['username']); 07. 08.echo "<h1>Anda sudah logout</h1>"; 09. 10.?>

Aduh panjang juga ya artikelnya. Capek nulisnya but mudah-mudahan bermanfaat. See you in the next article Jika Anda ingin source code dari autentifikasi ini, silakan download di bawah ini. Free 100%

Membuat Fasilitas Lost Password dengan PHP


September 23rd, 2008 | by rosihanari | 9,324 views Cetak Artikel Ini

Print

Password hilang atau lupa barangkali sering dialami oleh user untuk proses autentifikasi. Oleh karena itu, biasanya suatu sistem yang menggunakan autentifikasi user memfasilitasi usernya dengan fitur Lost Password. Dengan adanya fasilitas itu, user dapat memperoleh kembali password yang hilang tersebut. Dalam tutorial kali ini, akan dibahas mengenai cara pembuatan fasilitas lost password ini dengan script PHP. Pada dasarnya, mekanisme proses lost password ini adalah mengirimkan password baru ke user yang kehilangan passwordnya melalui email. Mengapa yang dikirim password yang baru? Ya hal ini karena password yang lama si user telah dienkripsi di dalam database, sehingga dibutuhkan script untuk mendekrip password terenkripsi tersebut sebelum dikirim via email. Tentu hal ini akan sangat merepotkan si programmer. Nah bagaimana bentuk password yang baru tersebut? Biasanya password baru tersebut bersifat random (dalam 4-8 digit karakter). Dengan demikian proses lost password sama halnya mereset password user dengan yang baru dan mengirimkannya via email. Mengingat password baru ini dikirimkan ke user via email, maka perlu kita buat field untuk memasukkan email user ketika proses registrasi. OK.. kita mulai membuat scriptnya ya. Mula-mula kita siapkan terlebih dahulu tabel untuk keperluan penyimpanan data user (termasuk emailnya)
view sourceprint?
1.CREATE TABLE user ( 2.username varchar(30), 3.password varchar(32), 4.email varchar(100), 5.PRIMARY KEY (username) 6.)

Selanjutnya, kita buat form untuk registrasi user baru. register.htm

view sourceprint?
01.<form action="submit.php" method="post"> 02.<table border="0"> 03.<tbody> 04.<tr> 05.<td>Masukkan Username</td> 06.<td> 07.<input name="username" type="text" /></td> 08.</tr> 09.<tr> 10.<td>Masukkan E-mail</td> 11.<td> 12.<input style="background-color: #ffffa0;" name="email" type="text" /></td> 13.</tr> 14.<tr> 15.<td>Masukkan Password</td> 16.<td> 17.<input name="pass1" type="password" /></td> 18.</tr> 19.<tr> 20.<td>Ulangi Password</td> 21.<td> 22.<input name="pass2" type="password" /></td> 23.</tr> 24.<tr> 25.<td></td> 26.<td> 27.<input name="Submit" type="submit" value="Submit" /></td>

28.</tr> 29.</tbody></table> 30.</form>

Untuk mengolah form register user di atas, kita buat pula scriptnya. submit.php
view sourceprint?
01.<?php 02.$username = $_POST['username']; 03.$password1 = $_POST['pass1']; 04.$password2 = $_POST['pass2']; 05.$email = $_POST['email']; 06. 07.// cek kesamaan password 08.if ($password1 == $password2) 09.{ 10.mysql_connect("namahost", "dbuser", "dbpass"); 11.mysql_select_db("dbname"); 12. 13.// perlu dibuat sebarang pengacak 14.$pengacak = "NDJS3289JSKS190JISJI"; 15. 16.// mengenkripsi password dengan md5() dan pengacak 17.$password1 = md5($pengacak . md5($password1) . $pengacak); 18. 19.// menyimpan username dan password terenkripsi ke database 20.$query = "INSERT INTO user VALUES('$username', '$password1', '$email')"; 21.$hasil = mysql_query($query);

22. 23.// menampilkan status pendaftaran 24.if ($hasil) echo "User sudah berhasil terdaftar"; 25.else echo "Username sudah ada yang memiliki"; 26. 27.} 28.else echo "Password yang dimasukkan tidak sama"; 29. 30.?>

Apabila Anda perhatikan, maka pada prinsipnya script pengolah form registrasi ini sama dengan script pada pembahasan tentang autentifikasi user yang telah saya tulis sebelumnya. Bedanya hanyalah pada ada tidaknya email. Namun secara umum proses autentifikasi boleh juga kok ada emailnya, malah lebih baik jika ada. Oya jangan lupa untuk mengenkripsi password dengan md5() dan pengacak. Selanjutnya kita bikin form login user. login.htm
view sourceprint?
01.<form action="..." method="post"> 02.<table border="0"> 03.<tbody> 04.<tr> 05.<td>Masukkan Username</td> 06.<td> 07.<input name="username" type="text" /></td> 08.</tr> 09.<tr> 10.<td>Masukkan Password</td> 11.<td> 12.<input name="pass" type="password" /></td>

13.</tr> 14.<tr> 15.<td></td> 16.<td> 17.<input name="Submit" type="submit" value="Submit" /></td> 18.</tr> 19.<tr> 20.<td><a href="lostpassword.htm">Lost Password</a></td> 21.<td></td> 22.</tr> 23.</tbody></table> 24.</form>

Nah perhatikan pada form di atas. Pada bagian bawah form, kita tempatkan link untuk lost passwordnya. Sebagai catatan, untuk script pengolah login (bagian action), sengaja tidak saya tulis karena pada prinsipnya sama dengan proses autentifikasi yang telah saya tulis sebelumnya. Dalam hal ini kita hanya fokus ke lost passwordnya saja. OK? Sekarang, kita buat form untuk lost password. Dalam form ini, user diminta memasukkan usernamenya. lostpassword.htm
view sourceprint?
01.<form action="kirimpassword.php" method="post"> 02.<table border="0"> 03.<tbody> 04.<tr> 05.<td>Masukkan Username Anda</td> 06.<td> 07.<input name="username" type="text" /></td> 08.</tr> 09.<tr>

10.<td></td> 11.<td> 12.<input name="Submit" type="submit" value="Submit" /></td> 13.</tr> 14.</tbody></table> 15.</form>

Mengingat untuk lost password ini dibutuhkan username, maka harus ada jaminan bahwa username ini unik (tidak boleh ada username yang sama). Oleh karena itu untuk mengantisipasi adanya beberapa username yang sama, kita buat field username ini menjadi primary key di tabelnya. Nah hal ini sudah kita buat ketika membuat tabelnya bukan? So dont worry. Form untuk lost password sudah dibuat, berikutnya kita buat script pengolah lost passwordnya. kirimpassword.php
view sourceprint?
01.<?php 02. 03.mysql_connect("namahost", "dbuser", "dbpass"); 04.mysql_select_db("dbname"); 05. 06.$username = $_POST['username']; 07. 08.function randomPassword() 09.{ 10.// function untuk membuat password random 6 digit karakter 11. 12.$digit = 6; 13.$karakter = "ABCDEFGHJKLMNPQRSTUVWXYZ23456789"; 14. 15.srand((double)microtime()*1000000);

16.$i = 0; 17.$pass = ""; 18.while ($i <= $digit-1) 19.{ 20.$num = rand() % 32; 21.$tmp = substr($karakter,$num,1); 22.$pass = $pass.$tmp; 23.$i++; 24.} 25.return $pass; 26.} 27. 28.// membuat password baru secara random -> memanggil function randomPassword 29.$newPassword = randomPassword(); 30. 31.// perlu dibuat sebarang pengacak 32.$pengacak = "NDJS3289JSKS190JISJI"; 33. 34.// mengenkripsi password dengan md5() dan pengacak 35.$newPasswordEnkrip = md5($pengacak . md5($newPassword) . $pengacak); 36. 37.// mencari alamat email si user 38.$query = "SELECT * FROM user WHERE username = '$username'"; 39.$hasil = mysql_query($query); 40.$data = mysql_fetch_array($hasil); 41.$alamatEmail = $data['email']; 42.

43.// title atau subject email 44.$title = "New Password"; 45. 46.// isi pesan email disertai password 47.$pesan = "Username Anda : ".$username.". \nPassword Anda yang baru adalah ".$newPassword; 48. 49.// header email berisi alamat pengirim 50.$header = "From: [email protected]"; 51. 52.// mengirim email 53.$kirimEmail = mail($alamatEmail, $title, $pesan, $header); 54. 55.// cek status pengiriman email 56.if ($kirimEmail) { 57. 58.// update password baru ke database (jika pengiriman email sukses) 59.$query = "UPDATE user SET password = '$newPasswordEnkrip' WHERE username = '$username'"; 60.$hasil = mysql_query($query); 61. 62.if ($hasil) echo "Password baru telah direset dan sudah dikirim ke email Anda"; 63.} 64.else echo "Pengiriman password baru ke email gagal"; 65. 66.?>

Perhatikan pada function pengacak password pada script di atas. Dalam daftar karakter ($karakter = ABCDEFGHJKLMNPQRSTUVWXYZ23456789) yang digunakan untuk

membuat random password tidak ada huruf I, O serta angka 1 dan 0. Ini sengaja saya buat karena menghindari keambiguan dalam membaca. Kadang orang salah membaca angka 1 dan huruf I, begitu pula angka 0 dan huruf O. Nah password baru yang dikirm ke email user adalah password random yang dihasilkan function randomPassword(). Oya, perhatikan pula pada proses update password baru ke database. Apabila kita perhatikan, maka proses update ini dilakukan setelah pengiriman email sukses. Mengapa demikian? Ya bagaimana seandainya pengiriman email gagal, tapi password yang baru sudah terupdate di database? Tentu si user bingung Satu lagi yang penting, gunakan pengacak enkripsi yang sama ketika pada proses registrasi user dan juga pada waktu proses login. Jika tidak sama.. hmmm repot, karena user nantinya gak bisa login.

Download Script

Tips Membuat Script PHP Pengolah Password dengan MD5


September 13th, 2008 | by rosihanari | 19,494 views Cetak Artikel Ini

Print

Setiap password pengguna aplikasi hendaknya dienkripsi untuk keperluan faktor keamanan. Mengapa password harus dienkripsi? atau apa sih enkripsi itu? OK enkripsi adalah teknik penyandian pesan, yang semula pesan tersebut dapat dibaca dan bermakna, setelah dienkripsi menjadi tidak terbaca dan tidak bermakna. Lantas mengapa password harus dienkripsi? Pertanyaan tersebut saya balik, bagaimana jika password tidak dienkripsi? Apabila password tidak dienkripsi, maka dapat dengan mudah dibaca, dan digunakan oleh orang lain yang tidak berhak untuk masuk ke dalam sistem atau aplikasi. Dalam PHP, tentu kita tidak asing dengan perintah atau function md5(). Function ini sering digunakan para programmer untuk mengenkripsi password sebelum hasil enkripsi tersebut

disimpan dalam database sistem, ketika registrasi user baru. Hasil enkripsi md5() berupa suatu string acak dengan panjang 32 karakter (256 bit). Sudah amankah penggunaan md5()? Artikel ini akan membahasnya, serta memberikan tips bagaimana cara membuat script PHP yang baik untuk mengolah password. Nah biasanya, struktur code untuk mengenkripsi password dengan md5 dan menyimpannya ke dalam database (pada registrasi user baru) adalah sebagai berikut:
view sourceprint?
01.<?php 02. 03.// input username baru 04.// input password asli baru ($passAsli) 05. 06.$passEnkrip = md5($passAsli); 07. 08./* procedure simpan data username 09.dan password hasil md5() ke db */ 10. 11.?>

Sedangkan struktur code untuk loginnya adalah


view sourceprint?
01.<?php 02. 03.// input login username 04.// input login password asli ($passAsli) 05. 06.if (md5($passAsli) == $passEnkrip) 07.{ 08.// login sukses

09.// procedure jika login sukses 10.} 11.else { 12.// login gagal 13.// procedure jika login gagal 14.} 15. 16.?>

Lantas benar-benar sudah amankah penggunaan md5() dengan struktur code di atas? Beberapa periode yang lalu, mungkin penggunaan struktur seperti di atas sudah dirasa aman. Namun saat ini tidak aman lagi, karena sudah banyak tool untuk mendekripsi hasil enkripsi md5(). Salah satu toolnya seperti yang ada di situs http://md5.rednoize.com. Apa akibatnya jika password ini didekripsi? wah bahaya bisa-bisa password aslinya ketahuan. So gimana donk? apakah md5() tidak usah digunakan lagi? Tidak usah khawatir, kita tetap bisa menggunakan md5() namun perlu sedikit kreatif. Maksudnya adalah bahwa kita perlu mengkombinasikan penggunaan md5() dengan pengacak, misalnya kita gunakan md5() berulangkali, atau menggabungkan password asli dengan suatu string tertentu lalu dienkripsi. Berikut ini contoh struktur code untuk menyimpan password terenkripsi menggunakan pengacak
view sourceprint?
01.<?php 02. 03.// input username baru 04.// input password baru 05. 06.$pengacak = "AJWKXLAJSCLWLW"; 07.$passEnkrip = md5($pengacak . md5($passAsli) . $pengacak ); 08. 09./* procedure simpan data username 10.dan password $passEnkrip ke db */ ($passAsli)

11. 12.?>

Sedangkan berikut ini adalah struktur untuk loginnya


view sourceprint?
01.<?php 02. 03.// input login username 04.// input login password asli ($passAsli) 05. 06.$pengacak = "AJWKXLAJSCLWLW"; 07. 08.if (md5($pengacak . md5($passAsli) . $pengacak) == $passEnkrip) 09.{ 10.// login sukses 11.// procedure jika login sukses 12.} 13.else { 14.// login gagal 15.// procedure jika login gagal 16.} 17.?>

Anda dapat mengubah isi pengacak atau mungkin mengubah format enkripsinya menjadi model lain, misalnya menggabungkan 3 atau lebih md5() dalam enkripsi. Dalam hal ini, hanya kita yang tahu format enkripsi atau pengacaknya. Intinya adalah jangan mengenkripsi password menggunakan md5() secara langsung, karena hal ini rawan untuk dihack pada saat ini. Mudah-mudahan artikel ini membantu

Anda mungkin juga menyukai