Session dan Cookie
Fajar Pradana S.ST., M.Eng
State and Session
• Questions about state:
▫ How to keep facebook users keep logged in while browsing friends profiles or other pages?
▫ How to keep your shopping cart entries while you are browsing another goods to add?
▫ How to keep students previous question answers on an online student examination system?
• How do we keep user state?
▫ Cookies
▫ Session
Session
With session, users are allowed to store information on the server for later use (i.e username, shopping item, question answer, etc)
Session information is stored temporarily on the server and will be deleted if it is destroyed or after the user has left the website for a specified time.
Sessions work by creating a unique id (PHPSESSID) for each visitor and store variables based on this PHPSESSID.
While variables contained in a session stored securely on the server, this PHPSESSID value is stored on the client computer as a cookie in order to be able to keep track with the client, if cookies are disabled, PHPSESSID value is stored in the URL as a query string.
Session
•
Memungkinkan programmer menyimpan informasi user secara semi-permanen pada variable (variable session)
•
Penyimpanan isi variabel session berada di server
•
Bekerja dengan mengcreate unik id
(PHPSESSID) untuk setiap pengunjung dan
menyimpan variabel sesuai dengan PHPSESID
tersebut
Session
•
session banyak digunakan sebagai autentifikasi login.
•
Misalnya saja, untuk melihat halaman kotak
surat pada email, kita harus login terlebih
dahulu.
Using Sessions
Starting session
<?php session_start(); ?>
Storing session
<?php
session_start();
$_SESSION['status']=1;
?>
Retrieving a session variable
<?php
session_start();
echo “Status=“ . $_SESSION[‘status'];
?>
Using Sessions
Removing one session variable
<?php
session_start();
if(isset($_SESSION['status'])) unset($_SESSION['status']);
?>
Destroying the whole user’s session
<?php
session_destroy();
?>
Dalam penanganan session terdapat beberapa proses yang perlu diperhatikan :
•
Proses pembuatan session
•
Proses pemeriksaan session
•
Proses penghapusan session
Cara Kerja Session
1.
PHP meng-generate (membentuk) sebuah ID session.
2.
PHP menyimpan nilai yang akan Anda simpan dalam session di dalam file yang berada di
server.
3.
PHP melempar ID session ke setiap halaman.
4.
PHP mengambil nilai session dari file session
untuk setiap halaman session.
Implementation (Sess-a.php)
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<title>PHP Session Test</title>
</head>
<body>
<?php
$x = 2;
$_SESSION['x'] = $x;
?>
<p>Nilai variabel $x adalah: <?php echo $x; ?></p>
<p>Nilai variabel $_SESSION['x'] adalah:
<?php echo $_SESSION['x']; ?>
</p>
</body>
</html>
<?php session_start(); ?>
<!DOCTYPE html>
<html>
<head>
<title>PHP Session Test (B)</title>
</head>
<body>
Nilai variabel $x dalam session adalah:
<?php
echo $_SESSION['x'];
session_destroy();
?>
</body>
</html>
Implementasi pada proses LOGIN
Seperti kita tau login berfungsi sebaga pengecekan apakah user yang mengakses halaman kita berhak atau tidak.
1. user memasukkan username dan password (login.php)
2. melakukan validasi apakan user dan password terdaftar (proses-login.php)
3. username dan password disimpan kedalam server menggunakan session (proses-login.php)
4. pengecekan apakah session sudah terdaftar. (user- area.php)
5. menghapus session yang terdaftar (logout.php)
Index.php
<form action="proses-login.php" method="post">
<p>username :<br />
<input type="text" name="username" /></p>
<p>password :<br />
<input type="password" name="password" /></p>
<p><button type="submit">Login</button></p>
</form>
File index.php berfungsi untuk menampilkan form login yang akan diproses dihalaman proses-login.php dengan method post.
Proses-login.php
session_start();
$username_terdaftar = "admin";
$password_terdaftar = "admin";
//cek apakah input telah diisi semua
if(isset($_POST["username"]) and isset($_POST["password"])){
//cek apakah user terdaftar
if($_POST["username"]==$username_terdaftar and
$_POST["password"]==$password_terdaftar){
$_SESSION["berhasil_login"]=1;
$_SESSION["username"]=$_POST["username"];
$_SESSION["password"]=$_POST["password"];
header("location:user-area.php");
}else{
echo "user dan password salah";
} }else{
echo"data tidak lengkap";
}
User-area.php
session_start();
if(!isset($_SESSION["berhasil_login"]) and
!isset($_SESSION["username"]) and
!isset($_SESSION["password"])){
die("anda tidak mempunyai akses ke halaman ini, silahkan <a href=\"index.php\">login</a>");
}else{
echo "<p>Login berhasil, selamat datang
".$_SESSION["username"]."</p>";
echo "<p><a
href=\"logout.php\">Logout</a></p>";
}
Logout.php
session_start();
unset($_SESSION["berhasil_login"]);
unset($_SESSION["username"]);
unset($_SESSION["password"]);
session_destroy();
echo "logout berhasil, <a href=\"index.php\">login</a>";
Cookie
•
Seperti halnya session, cookies juga merupakan sebuah konsep penyimpanan informasi user.
•
Client side
•
Cookies sendiri biasanya dipakai dalam aplikasi shooping cart.
•
Proses dalam pembuatan cookies :
▫ Proses pembuatan cookies
▫ Proses pemeriksaan cookies
▫ Proses penghapusan cookies
Sets cookies
setcookie(name, [value], [expire], [path], [domain]);
<?php
setcookie("user", "Alex Porter", time()+3600);
?>
Retrieves cookies
$_COOKIE["name of cookie"];
<?php
echo $_COOKIE["user"];
?>
Proses Pembuatan Cookies
<?php
$value = ‘fajar.prd';
$value2 = ‘Fajar Pradana';
setcookie("username", $value);
setcookie("namalengkap", $value2, time()+3600); /*
expire in 1 hour */
echo "<h1>Ini halaman pengesetan cookie</h1>";
echo "<h2>Klik <a href='cookie02.php'>di sini</a>
untuk
pemeriksaan cookies</h2>";
?>
Proses pemeriksaan Cookie
<?php
if(isset($_COOKIE['username'])) {
echo "<h1>Cookie 'username' ada. Isinya : " .
$_COOKIE['username'];
} else {
echo "<h1>Cookie 'username' TIDAK ada.</h1>";
}
if(isset($_COOKIE['namalengkap'])) {
echo "<h1>Cookie 'namalengkap' ada. Isinya : " .
$_COOKIE['namalengkap'];
} else {
echo "<h1>Cookie 'namalengkap' TIDAK ada.</h1>";
}
echo "<h2>Klik <a href='cookie01.php'>di sini</a> untuk penciptaan cookies</h2>";
echo "<h2>Klik <a href='cookie03.php'>di sini</a> untuk penghapusan cookies</h2>";
?>
Proses Penghapusan Cookies
<?php
// set the expiration date to one hour ago setcookie ("username", "", time() - 3600);
setcookie ("namalengkap", "", time() - 3600);
echo "<h1>Cookie Berhasil dihapus.</h1>";
echo "<h2>Klik <a href='cookie01.php'>di sini</a>
untuk
penciptaan cookies</h2>";
echo "<h2>Klik <a href='cookie02.php'>di sini</a>
untuk
pemeriksaan cookies</h2>";
?>