Login, Session, dan Logout

By | November 24, 2020

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;

maka akan tampil seperti berikut ini:

Login, Session, dan Logout

setelah itu, ketik perintah ini:

  • 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:

Login, Session, dan Logout

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:

<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.

<?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’]);

//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

//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”);

$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);

//jika benar maka

if($rowCheck > 0){

while($row = mysql_fetch_array($result)){

//mulai session dan register variabelnya

session_start();

session_register(‘username’);

//Memberitahu jika login sukses

echo ‘login berhasil..!!’;

//redirect ke halaman lain untuk lebih memastikan

header( “Location: loginok.php” );

}

}

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:

<?php

//mulai session

session_start();

//cek lagi apakah session telah terdaftar untuk username tersebut

if(session_is_registered(‘username’)){

//dan jika terdaftar

echo ‘Selamat Datang, session anda telah terdaftar. Dan hanya akan terhapus jika anda melakukan logout.’;

}

else{

//jika tidak terdaftar, kembalikan user ke 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();

//cek apakah session terdaftar

if(session_is_registered(‘username’)){

//session terdaftar, saatnya logout

session_unset();

session_destroy();

}

else{

//variabel session salah, user tidak seharusnya ada dihalaman ini. Kembalikan ke login

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()

Gampang kan? Silahkan dicoba..!!


Sumber https://www.rumahweb.com