You are on page 1of 16

Session dan Aplikasinya (Website dengan fasilitas login)

Oleh Andri Heryandi

SESSION DAN APLIKASINYA


Pada dasarnya session adalah sebuah jalan untuk menjaga kondisi variable antar halaman web. Maksudnya variable yang disimpan dalam session akan dikenal di semua halaman web dengan syarat setiap awal dari script php dimulai dengan fungsi session_start().

Setelah pemanggilan session_start(), PHP meregisterkan sebuah Session ID (SID) yang unik, kemudian PHP akan membuat suatu file yang berhubungan di server yang dapat menyimpan sekumpulan variable. File ini memiliki nama sesusai dengan nama session ID.

Sekali session di buat, anda dapat meregisterkan beberapa variable. Nilai dari variable tersebut disimpan dalam file yang ada di server. Penregisteran variable adalah dengan menggunakan perintah session_register.

Fungsi-fungsi yang banyak dipakai dalam penanganan web page dengan session adalah : 1. session_start() berfungsi untuk memulai/mengaktifkan session. 2. session_register() berfungsi untuk mendaftarkan suatu variable ke dalam session. Parameter dari fungsi ini adalah nama variable yang akan disimpan di session. 3. session_unregister() berfungsi untuk menghapus suatu variable yang disimpan di session. 4. session_is_registered() berfungsi untuk memeriksa apakah suatu variable

ada/terdaftar dalam session. 5. session_unset() berfungsi untuk menghapus semua variable yang terdaftar dalam session. 6. session_destroy() berfungsi untuk menutup/menghapus session beserta file sessionnya.

Halaman - 1

Session dan Aplikasinya (Website dengan fasilitas login) Contoh 1 : Nama File : buatsession.php
<? session_start(); session_register("banyakberkunjung"); session_register("nama","kota"); $banyakberkunjung=0; $nama="Andri Heryandi"; $kota="Ciamis"; echo "Session Telah dibuat"; ?>

Oleh Andri Heryandi

Keterangan Program : Baris Program


session_start() session_register("banyakberkunjung") session_register("nama","kota")

Keterangan Buat session Buat variable $banyakberkunjung Buat variable $nama dan $kota dalam 1 perintah session_register()

$banyakberkunjung=0 $nama="Andri Heryandi" $kota="Ciamis" echo "Session Telah dibuat"

$banyakberkunjung diisi 0 $nama diisi Andri Heryandi $kota diisi Ciamis Keterangan Session Telah Dibuat

Jalankan dalam browser dengan alamat http://localhost/folderkamu/buatsession.php. Jika tidak ada error maka dalam browser akan ada tulisan Session telah dibuat. Untuk melihat file session, maka file session terletak di folder c:\apache\tmp jika anda menggunakan PHPTriad. Jika dibuka, maka akan berisi data seperti berikut :
banyakberkunjung|i:0;nama|s:14:"Andri Heryandi";kota|s:6:"Ciamis";

Itu menunjukan ada variable banyakberkunjung bertipe int (i), dengan isi 0, juga ada variable nama dengan tipe string (s) dengan panjang 14 karakter berisi Andri Heryandi dan ada pula variable kota bertipe string (s) dengan panjang 6 karakter berisi Ciamis.

Halaman - 2

Session dan Aplikasinya (Website dengan fasilitas login) Contoh 2 : Nama File : testsession.php

Oleh Andri Heryandi

<? session_start(); if(session_is_registered("nama")) { $banyakberkunjung++; ?> <html> <head><title>Testing Session</title></head> <body> Selamat datang <b><? echo $nama;?></b> dari <b><? echo $kota;?></b> <br><br> Anda telah membuka halaman ini sebanyak <b><i><? echo $banyakberkunjung;?></i></b> kali. <Br> Klik Refresh untuk test lagi. </body> </html> <? } else echo "Anda harus memanggil buat session dulu."; ?>

Keterangan Program : Baris Program


session_start() if(session_is_registered("nama"))

Keterangan Buat/mengaktifkan session Jika variable $nama telah terdaftar (is registered) di session , maka

$banyakberkunjung++ <? echo $nama;?> <? echo $kota;?> <? echo $banyakberkunjung;?>

Nilai variable $banyakberkunjung ditambah 1 Menampilkan variable session $nama Menampilkan variable session $kota Menampilkan variable $banyakberkunjung

Panggil halaman tadi dengan alamat : http://localhost/folderkamu/testsession.php. Jika tidak ada error maka browser akan menampilkan Selamat Datang Andri Heryandi dari Ciamis. Anda telah membuka halaman ini sebanyak 1 kali. Klik Refresh untuk test lagi..

Jika anda memanggil web page ini berulang kali, maka variable $banyakberkunjung akan bertambah terus. Itu menunjukan variable $banyakberkunjung dapat dipanggil di sembarang web page yang awal scriptnya dimulai dengan session_start().

Halaman - 3

Session dan Aplikasinya (Website dengan fasilitas login) Contoh 3 : Nama File : hapussession.php
<? session_start(); session_unset(); session_destroy(); echo "Session telah dihapus"; ?>

Oleh Andri Heryandi

Jalankan di browser dengan alamat http://localhost/folderkamu/hapussession.php. Jika tidak ada kesalahan script ini akan menampilkanpesan Session telah dihapus. Ketika script mengeksekusi perintah session_destroy(), maka file yang berhubungan akan dihapus (lihat c:\apache\tmp).

Jika anda mencoba memanggil lagi file testsession.php, maka yang akan muncul adalah pesan bahwa Anda harus memanggil buat session dulu..

Kesimpulan :
Dari sifat-sifat session di atas, maka kalau diperhatikan, contoh 1 (buatsession.php) bisa kita anggap sebagai proses login, kemudian contoh 2 (testsession.php) adalah proses menampilkan web yang hanya bisa dibuka/ditampilkan ketika seorang user telah melakukan proses login (setelah memanggil buatsession.php), serta contoh 3 (hapussession.php) adalah proses logout user. Oleh karena itu untuk membuat suatu web site yang mengunakan fasilitas login, kita dapat menggunakan fasilitas session untuk penyimpan variable yang dapat diakses di semua halaman web.

Halaman - 4

Session dan Aplikasinya (Website dengan fasilitas login)

Oleh Andri Heryandi

Contoh Aplikasi Web yang menggunakan fasilitas Session


Contoh kasus yang akan digunakan adalah web database pendataan barang yang telah dibuat ketika perkuliahan. Dari fasilitas yang ada yaitu tambah barang, edit barang, hapus barang, tampil barang dan pencarian barang, tentunya ada beberapa fasilitas yang hanya boleh dilakukan oleh administrator web yaitu tambah barang, edit barang dan hapus barang. Sedangkan untuk fasilitas pencarian atau tampil data barang tentunya pengunjung boleh menggunakannya (untuk public).

Singkatnya dalam web site ini terdapat file sebagai berikut : tambahdata.php dan prosessimpan.php yang berguna untuk penambahan data. tampildata.php yang berguna untuk menampilkan semua data barang. pencarian.php dan prosescari.php yang berguna untuk mencari data barang. hapusdata.php dan proseshapus.php yang berguna untuk menghapus data barang. editdata.php, tampilformedit.php dan prosesupdate.php yang berguna untuk melakukan proses pengeditan suatu data barang.

File-file di atas dapat dilihat di modul WEB DINAMIS BERBASIS DATABASE.

Oleh karena itu ada beberapa hal yang harus dilaksanakan untuk membuat website yang memiliki fasilitas login yaitu : 1. Di halaman awal dari web site kita (index.php) harus dibuat suatu form untuk melakukan proses login. 2. Karena user administrator yang bekerja lebih dari 1 orang maka data user dan passwordnya di simpan dalam tabel bernama adminweb di database penjualan. 3. Agar password tidak bisa dibaca oleh sembarang orang, maka field password milik user sebaiknya dienkripsi dengan fungsi password() dari MySQL.

Halaman - 5

Session dan Aplikasinya (Website dengan fasilitas login)

Oleh Andri Heryandi

Oleh karena itu, maka langkah pertama adalah membuat tabel adminweb dengan struktur seperti di bawah ini.

Nama Field iduser namauser passuser

Tipe Varchar Varchar Varchar

Length 16 20 16 [wajib]

Null N N N

Primary Key *

Anda boleh menggunakan PHPMyadmin untuk membuat tabel tersebut atau dengan mengeksekusi SQL berikut :
CREATE TABLE adminweb ( iduser VARCHAR(16) NOT NULL, namauser VARCHAR(20) NOT NULL, passuser VARCHAR(16) NOT NULL, PRIMARY KEY (iduser) );

Kemudian isi beberapa user seperti di bawah ini. iduser Andri Hery Susy namauser Andri Heryandi Hery Yulianto Susilawati passuser adaaja bdg unikom

Perintah SQL untuk pembuatan user tersebut adalah :


INSERT INTO adminweb VALUES('Andri','Andri Heryandi',PASSWORD('adaaja')) INSERT INTO adminweb VALUES('Hery','Hery Yulianto',PASSWORD('bdg')) INSERT INTO adminweb VALUES('Susy','Susilawati',PASSWORD('unikom'))

Hati-hati pada bagian passuser, karena enkripsi data menggunakan fungsi password() menggunakan case sensitive (huruf kecil dan capital dibedakan).

Halaman - 6

Session dan Aplikasinya (Website dengan fasilitas login)

Oleh Andri Heryandi

Karena ketika pengisian field passuser menggunakan fungsi PASSWORD, maka jangan kaget kalau data yang tersimpan sudah dalam bentuk terenkripsi. Lihat di tabel di bawah ini. iduser Andri Hery Susy namauser Andri Heryandi Hery Yulianto Susilawati passuser 769c7aa841266403 7c93c83b2233794e 42676b19436048bd

Sesudah membuat tabel dan mengisi beberapa orang user, maka langkah berikutnya membuat web page utama yaitu index.php. Dalam index.php harus terdapat fasilitas untuk pencarian atau tampil data, karena kedua fasilitas ini boleh diakses oleh semua orang. Juga harus ditampilkan sebuah form untuk proses login admininstrator web. Oleh karena itu buat web page seperti di bawah ini.

Name=iduser Type=text Name=passuser Type=password

Jika administrator web mengisi user id dan password dan kemudian menekan tombol Login, maka akan melakukan action ke file login.php yang akan memeriksa apakah loginnya telah benar. Jika benar maka buat session dan tampilkan link-link ke halaman web administrator seperti penambahan, penghapusan, pengeditan data dan logout.

Halaman - 7

Session dan Aplikasinya (Website dengan fasilitas login) Source code index.php dapat di lihat di bawah ini Nama File : index.php

Oleh Andri Heryandi

<html> <head><title>Web Database</title></head> <body> <table width=100% border=1> <tr> <td align=center><h1>WEB DATABASE</h1></td> </tr> </table> <table width="100%" border="0"> <tr> <td width="200" valign=top> <form method="post" action="login.php"> <table width="100%" border="0"> <tr> <td colspan="2" bgcolor="#000066" align=center> <font color=white>Login Administrator</font> </td> </tr> <tr> <td width="41%">Id User </td> <td width="59%"> <input name=iduser type=text size=10 maxlength=16></td> </tr> <tr> <td>Password</td> <td> <input name=passuser type=password size=10 maxlength=16></td> </tr> <tr> <td>&nbsp;</td> <td><input type="submit" name="Submit" value="Login"></td> </tr> <tr bgcolor="#000066"> <td colspan="2">&nbsp;</td></tr> </table> </form> </td> <td width="79%" valign="top"> <p align="center"><b>Selamat Datang</b> </p> <p align=justify>Anda dapat mencari data barang yang anda perlukan. Jika anda ingin melihat semua data barang yang kami miliki, silahkan klik di <a href="tampildata.php">sini</a> dan jika ingin melakukan pencarian berdasarkan ketentuan tertentu maka klik di <a href="pencariandata.php">sini</a> </p> <p align=justify>[ <a href="tampildata.php">tampil semua barang</a> ] [ <a href="pencariandata.php">pencarian barang</a> ] </p></td> </tr> </table> </body> </html>

Halaman - 8

Session dan Aplikasinya (Website dengan fasilitas login) Source code untuk login.php adalah : Nama File : login.php
<?

Oleh Andri Heryandi

mysql_connect("localhost","","")or die("Koneksi Error : ".mysql_error()); mysql_select_db("Latihan") or die("DB Error : ".mysql_error());//sesuaikan nama databasenya $sql="select * from adminweb where iduser='$iduser' and passuser=password('$passuser')"; $hasil=mysql_query($sql) or die("Query Error : ".mysql_error()); $banyakdata=mysql_num_rows($hasil); if($banyakdata>0)//jika user ditemukan dan password benar { $data=mysql_fetch_row($hasil);//ambil record/data user session_start(); session_register("iduser","namauser"); $iduser=$data[0]; $namauser=$data[1]; session_register("sudahlogin"); $sudahlogin=true; ?> <html> <head><title>Web Database</title></head> <body> <table width=100% border=1> <tr> <td align=center><h1>WEB DATABASE</h1></td> </tr> </table> <table width="100%" border="0"> <tr> <td width="200" valign=top> <table width="100%" border="0"> <tr> <td bgcolor="#000066" align=center> <font color=white>Menu Pilihan</font> </td> </tr> <tr><td align=center><a href=tambahdata.php>Tambah Data</a></td></tr> <tr><td align=center><a href=editdata.php>Edit Data</a></td></tr> <tr><td align=center><a href=hapusdata.php>Hapus Data</a></td></tr> <tr><td align=center><a href=pencariandata.php>Pencarian</a></td></tr> <tr><td align=center><a href=tampildata.php>Tampil Data</a></td></tr> <tr><td align=center><a href=logout.php>Logout</a></td></tr> <tr bgcolor="#000066"> <td colspan="2">&nbsp;</td></tr> </table> </td> <td width="79%" valign="top"> <p align="center"><b>Selamat Datang <font color=red><? echo $namauser;?></font></b> </p> <p align=justify>Silahkan klik menu di sebelah kiri untuk melakukan transaksi database seperti </p>

Halaman - 9

Session dan Aplikasinya (Website dengan fasilitas login)


<ul> <li>Penambahan Data Barang</li> <li>Penghapusan Data Barang </li> <li>Pengeditan Data Barang</li> <li>Pencarian Data</li> <li>Menampilkan Data Barang</li> </ul> </td> </tr> </table> </body> </html> <? } else

Oleh Andri Heryandi

printf("Login atau password yang anda masukkan salah."); ?>

Dalam file ini, ada proses pencarian data user ke tabel adminweb. Jika data telah ditemukan maka akan menghasilkan banyakdata lebih besar dari 0 (kalau ditemukan banyak data pasti 1 karena primary key di iduser). Perhatikan pada bagian perbandingan userpass. Perbandingan userpass dilakukan dengan lebih dahulu mengenkripsi userpass dari form login, kemudian dibandingkan dengan userpass yang ada di database.

Jika user telah ditemukan dan password telah benar maka buat session dan kemudian daftarkan variable iduser dan namauser yang diambil dari database serta variable sudahlogin yang diisi dengan true yang menandakan bahwa user telah melakukan proses login. Kemudian tampilkan halaman web yang berisi link menu ke fasilitas administrator seperti ke penambahan, pengeditan, dan lain-lain.

Tetapi jika user tidak ditemukan atau password salah maka tampilkan pesan Login atau password yang anda masukan salah..

Halaman - 10

Session dan Aplikasinya (Website dengan fasilitas login)

Oleh Andri Heryandi

Langkah berikutnya yang merupakan langkah penting adalah mengedit web page yang berhubungan dengan administrator. Dalam web page ini harus ada pemeriksaan apakah di dalam session memiliki variable sudahlogin. Jika sudah memiliki variable sudahlogin, maka isi web page harus ditampilkan. Jika variable sudahlogin belum ada di session, itu menunjukan bahwa user tersebut belum login sehingga harus menampilkan pesan bahwa user harus login dulu untuk mengakses halaman ini.

Contoh pengeditannya adalah : 1. Misalkan yang diedit adalah halaman tambahdata.php dengan source asli sebagai berikut :
<html> <head> <title>Web Database</title> <style> body {font-family: Verdana; font-size: 10pt } td {font-family: Verdana; font-size: 10pt } </style> </head> <body> <table border=1 cellpadding=0 cellspacing=0 bordercolor="#111111" width="100%"> <tr> <td width="100%" bgcolor="#C0C0C0"> <p align="center"><font face="Book Antiqua" size="7">Web Database</font> </td> </tr> </table> <hr>

<form method=POST action="prosessimpan.php"> <center><font style="font-size: 20pt">PENGISIAN DATA BARANG</font> <hr color=black width="60%"> <table border=1 cellpadding=2 cellspacing=0 bordercolor="#111111" width="60%"> <tr> <td width=34%>Kode Barang</td> <td width=66%><input type=text name=ekode size=8 maxlength=6></td> </tr> <tr> <td>Nama Barang</td> <td><input type=text name=enama size=21 maxlength=25></td> </tr> <tr> <td>Tanggal</td> <td> <select size=1 name=etanggal> <? for($i=1;$i<=31;$i++) echo "<option>$i</option>"; ?> </select> <select size="1" name="ebulan">

Halaman - 11

Session dan Aplikasinya (Website dengan fasilitas login)

Oleh Andri Heryandi

<? for($i=1;$i<=12;$i++) echo "<option>$i</option>"; ?> </select> <input type=text name=etahun size=5 maxlength=4> </td> </tr> <tr> <td>Harga</td> <td><input type=text name=eharga size=9></td> </tr> <tr> <td>Stok</td> <td><input type=text name=estok size=9></td> </tr> <tr> <td>&nbsp;</td> <td><input type=submit value="Simpan"><input type=reset value="Reset"></td> </tr> </table> <hr color=black width="60%">| <a href="index.php">Awal</a> | <a href="tampildata.php"> Lihat Data</a> | </center> </form>
<hr> </body> </html>

Pilih bagian inti dari halaman tersebut (yang hurufnya lebih besar dan diarsir).

2. Langkah selanjutnya membuat suatu template yang akan digunakan dalam setiap halaman web administrator yang didalamnya memiliki suatu pengecekan apakah dalam session telah memiliki variable sudahlogin, jika ada maka tampilkan bagian inti dari web, jika tidak memiliki variable sudah login maka akan menampilkan pesan bahwa Anda Belum Login. Login dulu untuk mengakses file ini.. Adapun templatenya adalah :

Halaman - 12

Session dan Aplikasinya (Website dengan fasilitas login)


<? session_start(); ?> <html> <head><title>Web Database</title></head> <body> <table width=100% border=1> <tr> <td align=center><h1>WEB DATABASE</h1></td> </tr> </table> <? if(session_is_registered("sudahlogin")) { ?>

Oleh Andri Heryandi

<table width="100%" border="0"> <tr> <td width="200" valign=top> <table width="100%" border="0"> <tr> <td bgcolor="#000066" align=center> <font color=white>Menu Pilihan</font> </td> </tr> <tr><td align=center> <a href=tambahdata.php>Tambah Data</a></td></tr> <tr><td align=center> <a href=editdata.php>Edit Data</a></td></tr> <tr><td align=center> <a href=hapusdata.php>Hapus Data</a></td></tr> <tr><td align=center> <a href=pencariandata.php>Pencarian</a></td></tr> <tr><td align=center> <a href=tampildata.php>Tampil Data</a></td></tr> <tr><td align=center> <a href=logout.php>Logout</a></td></tr> <tr bgcolor="#000066"> <td colspan="2">&nbsp;</td></tr> </table> </td> <td width="79%" valign="top">

//SISIPKAN INTI WEB DI SINI


</td> </tr> </table> <? } else { echo "Anda Belum Login. Login dulu untuk mengakses file ini."; } ?> </body> </html>

Halaman - 13

Session dan Aplikasinya (Website dengan fasilitas login)

Oleh Andri Heryandi

3. Jadi setelah digabungkan dengan template, maka file tambahdata.php akan menjadi : Bagian yang diarsir adalah bagian dari file tambahdata.php yang asli dan bagian yang tidak diarsir adalah bagian dari template.
<? session_start(); ?> <html> <head><title>Web Database</title></head> <body> <table width=100% border=1> <tr> <td align=center><h1>WEB DATABASE</h1></td> </tr> </table> <? if(session_is_registered("sudahlogin")) { ?> <table width="100%" border="0"> <tr> <td width="200" valign=top> <table width="100%" border="0"> <tr> <td bgcolor="#000066" align=center> <font color=white>Menu Pilihan</font> </td> </tr> <tr><td align=center> <a href=tambahdata.php>Tambah Data</a></td></tr> <tr><td align=center> <a href=editdata.php>Edit Data</a></td></tr> <tr><td align=center> <a href=hapusdata.php>Hapus Data</a></td></tr> <tr><td align=center> <a href=pencariandata.php>Pencarian</a></td></tr> <tr><td align=center> <a href=tampildata.php>Tampil Data</a></td></tr> <tr><td align=center> <a href=logout.php>Logout</a></td></tr> <tr bgcolor="#000066"> <td colspan="2">&nbsp;</td></tr> </table> </td> <td width="79%" valign="top"> <!-- awal bagian utama --> <form method=POST action="prosessimpan.php"> <center><font style="font-size: 20pt">PENGISIAN DATA BARANG</font> <hr color=black width="60%"> <table border=1 cellpadding=2 cellspacing=0 bordercolor="#111111" width="60%"> <tr> <td width=34%>Kode Barang</td> <td width=66%> <input type=text name=ekode size=8 maxlength=6></td>

Halaman - 14

Session dan Aplikasinya (Website dengan fasilitas login)

Oleh Andri Heryandi

</tr> <tr> <td>Nama Barang</td> <td><input type=text name=enama size=21 maxlength=25></td> </tr> <tr> <td>Tanggal</td> <td> <select size=1 name=etanggal> <? for($i=1;$i<=31;$i++) echo "<option>$i</option>"; ?> </select> <select size="1" name="ebulan"> <? for($i=1;$i<=12;$i++) echo "<option>$i</option>"; ?> </select> <input type=text name=etahun size=5 maxlength=4> </td> </tr> <tr> <td>Harga</td> <td><input type=text name=eharga size=9></td> </tr> <tr> <td>Stok</td> <td><input type=text name=estok size=9></td> </tr> <tr> <td>&nbsp;</td> <td><input type=submit value="Simpan"> <input type=reset value="Reset"></td> </tr> </table> <hr color=black width="60%">| <a href="index.php">Awal</a> | <a href="tampildata.php"> Lihat Data</a> | </center> </form> <!-- akhir bagian tambahdata.php --> </td> </tr> </table> <? } else { echo "Anda Belum Login. Login dulu untuk mengakses file ini."; } ?> </body> </html>

Halaman - 15

Session dan Aplikasinya (Website dengan fasilitas login) 4. Jangan lupa simpan dengan nama file tambahdata.php.

Oleh Andri Heryandi

5. Ulangi hal tersebut untuk file-file web yang hanya boleh diakses oleh administrator seperti prosessimpan.php, hapusdata.php, tampildata.php, pencarian.php, prosescari.php, dan

proseshapus.php,

editdata.php,

tampilformedit.php

prosesupdate.php. 6. Kemudian untuk file logout.php source codenya adalah :


<? session_start(); session_unset(); session_destroy(); ?> <script>document.location="index.php";</script>

7. Untuk memperbaiki tampilkan ketika seorang yang belum login mengakses halaman administrator, maka ganti perintah berikut :
echo "Anda Belum Login. Login dulu untuk mengakses file ini.";

Dengan
echo "<script>document.location=\"belumlogin.php\";</script>";

8. Kemudian buat file yang akan ditampilkan ketika seorang user belum login sebagai berikut : Nama File : belumlogin.php
<html> <head><title>Web Database</title></head> <body> <table width=100% border=1> <tr> <td align=center><h1>WEB DATABASE</h1></td> </tr> </table> <table width="100%" border="0"> <tr> <td valign="top"> <p align="center"> <b><font color=red> Anda tidak bisa mengakses halaman ini<br><br> Hanya administrator yang boleh mengakses halaman ini.<br><br> <a href=index.php>Kembali ke Index</a> </font></b></p> </td> </tr> </table> </body> </html>

9. Selamat Mengerjakan. Semoga Berhasil Halaman - 16

You might also like