Login, Session, dan Logout
Login dan logout merupakan proses yang hampir tiap kali kita temui sewaktu browsing. Misalnya saja untuk cek e-mail atau masuk ke account di friendster, atau.. (saking banyaknya, saya sampai tidak bisa menyebutkan satu persatu).
Sekarang saatnya kita mencoba membuat form login dan logout sendiri secara sederhana. Menggunakan PHP & MySQL tentunya.
Langkah-langkahnya:
Jika anda mencoba dari komputer stand-alone, jalankan dulu webserver dan database server anda. Untuk gampangnya, gunakan saja phptriad.
1. Database
Setiap user yang login akan dicek username dan passwordnya dari tabel user yang terdapat pada database. Kita buat dulu databasenya:
Perintah yang digunakan:
- create database coba;
- use coba;
- create table users
(
id int auto_increment not null,
username varchar(20) not null,
password varchar(35) not null,
primary key(id)
);
jika sudah selesai, ketikkan perintah
- desc users;
- INSERT INTO users (username, password) VALUES (‘test’, md5(‘test’));
Perintah diatas digunakan untuk memasukkan nilai pada field username dan password, untuk memastikannya, ketik perintah berikut:
- select * from users;
maka akan tampil:
password yang dimasukkan, menggunakan enkripsi md5. tulisan ‘test’ pada password, diubah menjadi 32 character string.
password yang dimasukkan, menggunakan enkripsi md5. tulisan ‘test’ pada password, diubah menjadi 32 character string.
2. login.html
Digunakan sebagai form login untuk user. Script-nya:
Digunakan sebagai form login untuk user. Script-nya:
<html>
<head>
<title>Login </title>
</head>
<body>
<form method=”POST” action=”login.php”>
Username: <input type=”text” name=”username” size=”20″>
Password: <input type=”password” name=”password” size=”20″>
<input type=”submit” value=”Login” name=”loginâ€>
</form>
</body>
</html>
<head>
<title>Login </title>
</head>
<body>
<form method=”POST” action=”login.php”>
Username: <input type=”text” name=”username” size=”20″>
Password: <input type=”password” name=”password” size=”20″>
<input type=”submit” value=”Login” name=”loginâ€>
</form>
</body>
</html>
3. login.php
file ini digunakan untuk memeriksa apakah username dan password yang dimasukkan benar atau tidak.
file ini digunakan untuk memeriksa apakah username dan password yang dimasukkan benar atau tidak.
<?PHP
//periksa apakah file ini tidak dipanggil secara langsung, jika dipanggil secara langsung
//maka user akan di kembalikan ke login.thml
if (!isset($username) || !isset($password)) {
header( “Location: http://domainanda/login.html” );
}
//melihat apakah form telah diisi semua atau tidak. Jika tidak, user akan dikembalikan ke
//halaman login.html
elseif (empty($username) || empty($password)) {
header( “Location: http://domainanda/login.html” );
}
else{
//mengubah username dan password yang telah dimasukkan menjadi sebuah variabel dan meng-enkripsi password ke md5
$user = addslashes($_POST[‘username’]);
$pass = md5($_POST[‘password’]);
//periksa apakah file ini tidak dipanggil secara langsung, jika dipanggil secara langsung
//maka user akan di kembalikan ke login.thml
if (!isset($username) || !isset($password)) {
header( “Location: http://domainanda/login.html” );
}
//melihat apakah form telah diisi semua atau tidak. Jika tidak, user akan dikembalikan ke
//halaman login.html
elseif (empty($username) || empty($password)) {
header( “Location: http://domainanda/login.html” );
}
else{
//mengubah username dan password yang telah dimasukkan menjadi sebuah variabel dan meng-enkripsi password ke md5
$user = addslashes($_POST[‘username’]);
$pass = md5($_POST[‘password’]);
//variabel untuk koneksi ke database
$dbHost = “localhost”;
$dbUser = “databaseusernameanda”; //user yang akan digunakan pada database.
$dbPass = “passworddatabase”; //password dari username untuk database.
$dbDatabase = “coba”; //dari database yang dibuat tadi
$dbHost = “localhost”;
$dbUser = “databaseusernameanda”; //user yang akan digunakan pada database.
$dbPass = “passworddatabase”; //password dari username untuk database.
$dbDatabase = “coba”; //dari database yang dibuat tadi
//Melakukan koneksi ke database
$db = mysql_connect(“$dbHost”, “$dbUser”, “$dbPass”) or die (“koneksi gagal nih, cek apakah variabel sudah benar apa belum”);
//memilih database
mysql_select_db(“$dbDatabase”, $db) or die (“Gagal memilih database”);
mysql_select_db(“$dbDatabase”, $db) or die (“Gagal memilih database”);
$result=mysql_query(“select * from users where username=’$user’ AND password=’$pass'”, $db);
//melihat apakah username dan password yang dimasukkan benar
$rowCheck = mysql_num_rows($result);
$rowCheck = mysql_num_rows($result);
//jika benar maka
if($rowCheck > 0){
while($row = mysql_fetch_array($result)){
if($rowCheck > 0){
while($row = mysql_fetch_array($result)){
//mulai session dan register variabelnya
session_start();
session_register(‘username’);
session_start();
session_register(‘username’);
//Memberitahu jika login sukses
echo ‘login berhasil..!!’;
echo ‘login berhasil..!!’;
//redirect ke halaman lain untuk lebih memastikan
header( “Location: loginok.php” );
header( “Location: loginok.php” );
}
}
else {
else {
//jika $rowCheck = 0, berarti username atau password salah, atau tidak terdaftar di database
echo ‘Invalid username or password, coba lagi deh.. ‘;
}
}
?>
}
}
?>
4. loginok.php
Nama filenya agak aneh? Sebenernya gabungan dari dua kata, login dan ok. Artinya file ini cuma akan diakses begitu username dan password telah valid dan session telah di register.
Scriptnya kurang lebih:
Nama filenya agak aneh? Sebenernya gabungan dari dua kata, login dan ok. Artinya file ini cuma akan diakses begitu username dan password telah valid dan session telah di register.
Scriptnya kurang lebih:
<?php
//mulai session
session_start();
session_start();
//cek lagi apakah session telah terdaftar untuk username tersebut
if(session_is_registered(‘username’)){
if(session_is_registered(‘username’)){
//dan jika terdaftar
echo ‘Selamat Datang, session anda telah terdaftar. Dan hanya akan terhapus jika anda melakukan logout.’;
echo ‘Selamat Datang, session anda telah terdaftar. Dan hanya akan terhapus jika anda melakukan logout.’;
}
else{
else{
//jika tidak terdaftar, kembalikan user ke login.html
header( “Location: http://domainanda/login.html” );
}
header( “Location: http://domainanda/login.html” );
}
?>
function session_start() tidak hanya digunakan untuk memulai session, tapi juga untuk memastikan session itu berlanjut terus (tetap aktif). Session_start() dan “if(session_is_registered()){…†harus diletakkan paling atas pada kode yang dibuat, untuk mencegah user dikembalikan pada halaman login.
5. logout.php
<?php
//function start lagi
session_start();
//function start lagi
session_start();
//cek apakah session terdaftar
if(session_is_registered(‘username’)){
if(session_is_registered(‘username’)){
//session terdaftar, saatnya logout
session_unset();
session_destroy();
}
else{
session_unset();
session_destroy();
}
else{
//variabel session salah, user tidak seharusnya ada dihalaman ini. Kembalikan ke login
header( “Location: http://domainanda/login.html” );
}
?>
header( “Location: http://domainanda/login.html” );
}
?>
karena session terdaftar, maka pada proses logout, kita perlu menghapus variabel pada session tersebut dengan menggunakan function session_unset(). Dan untuk melengkapi penghapusan data yang berkaitan dengan session tadi, gunakan session_destroy()
No comments: