Minggu, 31 Maret 2019

Session


SESSION

Untuk  menjelaskan  tentang  SESSION   dan  kegunaannya,   saya  akan  mulai  dengan memberikan contoh visualisasi terlebih dahulu.
Misalkan kita memiliki sebuah form sebagai berikut
<form method="post" action="submit.php">
Bilangan ke-1 <input type="text" name="bil1" /><br /> Bilangan ke-1 <input type="text" name="bil1" /><br />
<input type="submit" name="submit" value="Submit" />
</form>
Form di atas digunakan untuk memasukkan dua buah bilangan. Selanjutnya kita buat script untuk membaca kedua bilangan yang diinputkan tersebut
submit.php
<?php
$bil1 = $_POST['bil1'];
$bil2 = $_POST['bil2'];
echo "Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo "Anda memasukkan bilangan ke-2 : ".$bil2."<br />";
echo "<a href='lanjut.php'>Klik di sini</a>";
?>
Apabila kita telah  memasukkan dua  buah bilangan melalui form, kemudian mensubmitnya   maka   pada  script  submit.php   akan  memunculkan   kedua   bilangan tersebut dengan sukses.
Pada submit.php ini terdapat pula link menuju script lanjut.php. Dalam script lanjut.php ini, kita juga akan menampilkan kedua bilangan yang diinputkan sebelumnya.
lanjut.php
<?php
echo "Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo "Anda memasukkan bilangan ke-2 : ".$bil2."<br />"
echo "<a href='lanjut.php'>Klik di sini</a>";
?>
Nah… apa yang terjadi bila kita mengklik link menuju ke lanjut.php tersebut? Apakah kedua bilangan yang diinputkan  tadi masih  bisa terbaca nilainya?  Jawabannya  adalah TIDAK.   Kedua   bilangan   hanya   bisa   terbaca   pada   script   submit.php   saja,   karena submit.php adalah halaman pertama setelah pemrosesan form.
Mungkin Anda berpikiran bahwa perlu ditambahkan perintah
$bil1 = $_POST['bil1'];
$bil2 = $_POST['bil2'];
pada lanjut.php. Cara ini pun juga tidak bisa untuk membaca kedua bilangan.
Trus.. bagaimana supaya dalam lanjut.php ini kedua bilangan yang diinputkan masih bisa dibaca nilainya?
Untuk mengatasi hal ini terdapat 2 solusi yang bisa digunakan, yaitu menggunakan GET
method atau SESSION.

Apabila kita menggunakan GET method, maka caranya adalah menyisipkan parameter untuk   kedua   bilangan   pada   link   menuju   lanjut.php   tersebut.   Selanjutnya   dalam lanjut.php, parameter kedua bilangan ini dibaca nilainya.
submit.php
<?php
$bil1 = $_POST['bil1'];
$bil2 = $_POST['bil2']
echo "Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo "Anda memasukkan bilangan ke-2 : ".$bil2."<br />";
echo "<a href='lanjut.php?bil1= ".$bil1."&bil2=".$bil2."'>Klik di sini</a>";
?>
lanjut.php
<?php
$bil1 = $_GET['bil1'];
$bil2 = $_GET['bil2'];
echo "Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo "Anda memasukkan bilangan ke-2 : ".$bil2."<br />"
?>
Cara di atas akan dapat memunculkan kedua bilangan pada lanjut.php. Namun… cara ini terdapat kelemahan yaitu ditampilkannya nilai input sebagai parameter dalam URL link.

Trus… bagaimana dengan menggunakan SESSION? Ya… dengan menggunakan SESSION, kita  tidak  perlu  menuliskan  nilai  input  dalam  URL  link.  Nilai  input  ini  nantinya  akan disimpan  dalam  suatu  variabel  SESSION.  Selama  browser  kita  masih  aktif  (browse belum  ditutup)   atau  sengaja  dinonaktifkan   (dihapus)   SESSION  nya,  maka  variabe SESSION ini masih terus aktif.
Nilai yang disimpan dalam variabel SESSION ini bisa dibaca atau dikenali di beberapa halaman script. Beda dengan variabel biasa. Kalau variabel biasa itu hanya dikenali pada halaman script tersebut saja.
Selanjutnya bagaimana cara menyimpan  nilai ke dalam suatu variabel SESSION? Ya… sebelum mulai menyimpan, kita harus mengaktifkan SESSION nya terlebih dahulu menggunakan perintah
session_start();
S          etelah SESSION aktif, barulah kita bisa membuat variabel SESSION untuk menyimpan nilai. Berikut ini perintah untuk menyimpan sebuah nilai ke dalam variabel SESSIO
$_SESSION['namaSession'] = value;
Nilai  yang  bisa  disimpan  dalam  SESSION  ini  bisa  berupa  bilangan,  array,  karakter maupun string.
Sehingga apabila konsep ini diterapkan pada contoh di atas, maka berikut ini adalah script submit.php yang telah dimodifikasi
submit.php
<?php
session_start();   // mengaktifkan SESSION
$bil1 = $_POST['bil1'];
$bil2 = $_POST['bil2'];
// menyimpan kedua bilangan ke dalam SESSION
$_SESSION['bil1'] = $bil1;
$_SESSION['bil2'] = $bil2;
echo "Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo "Anda memasukkan bilangan ke-2 : ".$bil2."<br />";
echo "<a href='lanjut.php'>Klik di sini</a>";
?>
Kemudian, bagaimana dengan script lanjut.php nya? Bagaimana cara menampilkan nilai kedua bilangan yang disimpan dalam SESSION? Ini dia scriptnya.
lanjut.php
<?php session_start();
// membaca nilai dari variabel SESSION
$bil1 = $_SESSION['bil1'];
$bil2 = $_SESSION['bil2'];
echo "Anda memasukkan bilangan ke-1 : ".$bil1."<br />";
echo "Anda memasukkan bilangan ke-2 : ".$bil2."<br />";
?> Keterangan:
Dalam script lanjut.php di atas, kita tetap memberikan perintah session_start() karena
dalam script lanjut.php ini kita masih memanfaatkan variabel SESSION.

Menghapus Variabel SESSION
Kemudian,  bagaimana  cara  menghapus  variabel  SESSION?  Cara pertama,  Anda  akan langsung   bisa   menghapus   SESSION   bila   Anda   keluar   dari   browser   (EXIT),   buka meminimize lho! Cara kedua, gunakan perintah berikut ini pada script.
session_destroy();
Dengan perintah tersebut, maka semua variabel SESSION akan terhapus. Namun, bagaimana bila hanya ingin menghapus suatu variabel SESSION tertentu saja? Untuk hal ini, gunakan perintah unset()
unset($_SESSION['nama session']);
Penerapan SESSION
Biasanya,  SESSION  ini  digunakan  untuk  keperluan  autentifikasi  user  melalui  login. Adapun idenya adalah apabila user sukses melakukan login, maka username ini akan disimpan dalam sebuah SESSION.
Mengapa username  ini harus disimpan ke dalam SESSION? Ya… dengan disimpannya username   ke   dalam   SESSION   sekaligus   bisa   digunakan   untuk   mencegah   adanya penyusup yang masuk ke aplikasi tanpa melalui login.
Lho? Kok bisa, logikanya bagaimana? Ya.. untuk mengecek ada tidaknya penyusup yang masuk ke aplikasi tanpa login, bisa hanya dengan mengecek SESSION nya. Jika penyusup tadi masuk ke aplikasi tanpa login, otomatis SESSION nya belum ada, karena SESSION baru ada ketika user login dengan sukses.
Berikut adalah penerapan session yang digunakan untuk login
Program
//header.php
    <head>
        <title>Layout</title>
    </head>
    <body>
        <table width=100% border=1 style="border-collapse:collapse">
            <tr>
                <td colspan=2><center> <p> <b>TITLE</b> </p> <br> </center></td>
            </tr>

//header1.php
<?php
session_start();
$un = $_SESSION['un'];
?>

<head>
        <title>Layout</title>
    </head>
    <body>
        <table width=100% border=1 style="border-collapse:collapse">
            <tr>
                <td align="right" colspan=2>
                    <center> <p> <b>TITLE</b> </p> <br> </center>
                        <?php
                            echo "Username : ".$un;
                        ?>
                </td>
               
            </tr>
//form.php
<?php
session_start();
$un = $_SESSION['un'];
?>

<head>
        <title>Layout</title>
    </head>
    <body>
        <table width=100% border=1 style="border-collapse:collapse">
            <tr>
                <td align="right" colspan=2>
                    <center> <p> <b>TITLE</b> </p> <br> </center>
                        <?php
                            echo "Username : ".$un;
                        ?>
                </td>
               
            </tr>

//login.php
<?php
    session_start();
    $un = $_POST['un'];
    $pass = $_POST['pass'];
    $_SESSION['un'] = $un;
    $_SESSION['pass'] = $pass;
    array ( Username , Password,
        A , password1,
        B , password2,
        C , password3,
        D , password4,
        E , password5 );
    switch($un)
    {
        case $un == ' ' && $pass == ' ' :
            echo "<b>Anda belum memasukkan Username dan Password</b>";
            include "form.php";
            break;
        case $un == 'A' && $pass != 'password1' ;
        case $un == 'B' && $pass != 'password2' ;
        case $un == 'C' && $pass != 'password3' ;
        case $un == 'D' && $pass != 'password4' ;
        case $un == 'E' && $pass != 'password5' ;
            echo "<b>Password yang anda masukan salah</b>";
            include "form.php";
            break;  
        case $un == 'A' && $pass == 'password1' ;
        case $un == 'B' && $pass == 'password2' ;
        case $un == 'C' && $pass == 'password3' ;
        case $un == 'D' && $pass == 'password4' ;
        case $un == 'E' && $pass == 'password5' ;
            include "loginberhasil.php";
            break;
        default :
            echo "<b> Username tidak terdaftar </b>";
            include "form.php";
            break;
    }
?>

//loginberhasil.php
<?php
    include "header1.php";
   
?>

<tr>
    <td>
        <center><b>Anda Telah Berhasil Login</b></center></br>
        <center>
            <a href=link1.php>Link1</a>|
            <a href=link2.php>Link2</a>|
            <a href=link3.php>Link3</a>|
        </center></br>  
        <center>
            <a href=logout.php> Logout</a>
        </center>
    </td>
</tr>

<?php
    include "footer.php";
?>

//link1.php
<?php
    include "header1.php";
?>

<tr>
    <td>
       
        <center>
            <a href=link1.php>Link1</a>|
            <a href=link2.php>Link2</a>|
            <a href=link3.php>Link3</a>|
            <a href=logout.php> Logout </a>
        </center></br>
        <center><b>Ini adalah isi dari halaman Link 1</b></center></br>  
    </td>
</tr>

<?php
    include "footer.php";
?>

//link2.php
<?php
    include "header1.php";
?>

<tr>
    <td>
       
        <center>
            <a href=link1.php>Link1</a>|
            <a href=link2.php>Link2</a>|
            <a href=link3.php>Link3</a>|
            <a href=logout.php> Logout </a>
        </center></br>
        <center><b>Ini adalah isi dari halaman Link 2</b></center></br>  
    </td>
</tr>

<?php
    include "footer.php";
?>

//link3.php
<?php
    include "header1.php";
?>

<tr>
    <td>
       
        <center>
            <a href=link1.php>Link1</a>|
            <a href=link2.php>Link2</a>|
            <a href=link3.php>Link3</a>|
            <a href=logout.php> Logout </a>
        </center></br>
        <center><b>Ini adalah isi dari halaman Link 3</b></center></br>  
    </td>
</tr>

<?php
    include "footer.php";
?>

//logout.php
<?php
    session_start();
    session_destroy();
    include "form.php";
?>

//footer.php
            <tr>
                <td colspan=2><center><b>FOOTER</b></center></td>
            </tr>
    </body>
</html>

Hasil
//form.php

//belummemasukan


//passwordsalah


//tidakterdaftar


//loginberhasil.php



//link1.php


Tidak ada komentar:

Posting Komentar