Session dalam PHP

Pernahkah kalian membuka suatu halaman tapi kalian harus login terlebih dahulu? Atau pernah kalian membuka suatu halaman dan halaman tersebut menyimpan halaman yang sudah kita buka lewat halaman tersebut? Kalau pernah, mungkin kalian akan tertarik dengan apa yang akan kita bahas kali ini.Kali ini, kita akan membahas tentang penggunaan session.

Sama seperti $_GET dan $_POST, SESSION disimpan dalam assosiative array yaitu $_SESSION. Perbedaannya adalah, $_GET dan $_POST hanya disimpan sementara untuk digunakan dalam satu halaman setelah "dikirim" dari suatu file yang memiliki form, sedangkan $_SESSION disimpan sampai halaman ditutup dan dibuka lagi. selain itu, $_SESSION bisa diatur nilainya dan ditambah datanya. Session disimpan oleh server dari suatu website untuk menandai status dari pengguna dari perangkat tertentu dengan menggunakan nilai yang disimpan dalam session.

Untuk menggunakan $_SESSION, kita harus menggunakan function session_start() terlebih dahulu supaya kita bisa memulai session dan mendapatkan data session dari server. Function session_start() harus diletakkan di awal HTML supaya bisa benar-benar berfungsi dengan baik. Setelah session dimulai, kita bisa menambahkan nilai yang kita inginkan. Nilai session bisa diberikan cukup dengan tanda sama dengan (=) tanpa perlu function khusus. Dan, untuk lebih jelasnya, perhatikan contoh berikut!

Penjelasan tanpa contoh kadang bisa sangat membingungkan, karena itu, kita langsung ke contohnya.

<?PHP
    session_start();
?>
<HTML>
<HEAD>
    <TITLE>Latihan</TITLE>
</HEAD>
<BODY>
<?PHP
    if(isset($_SESSION["login"])){
        echo("data anda adalah ".$_SESSION['login']);
        session_destroy();
    }else{
        $_SESSION["login"]="Nama";
        echo("simpan data yang menandakan bahwa anda sudah login");
    }
?>
</BODY>

</HTML> 



Perhatikan contoh di atas!

Jika function session_start digunakan untuk memulai session, maka session_destroy digunakan untuk menutup session dan menghapus semua data yang ada dalam variabel $_SESSION.  Untuk memastikan bahwa script PHP di atas sudah berjalan sesuai yang kita inginkan, jalankan saja sebanyak dua kali, atau bisa juga direfresh / direload setelah dibuka. Tulisannya seharusnya berubah tiap halaman dimuat ulang karena adanya percabangan untuk mengecek status dari session.

Membuat halaman login

Kita bisa membuat halaman login dan memproses datanya setelah mendapatkan data dari form yang diisi pengguna dengan menggunakan $_POST atau $_GET saat tombol submit ditekan.

Untuk saat ini, kita coba saja gunakan satu file yang mengirim data ke dirinya sendiri. Untuk penerapannya, lebih baik kalian gunakan file lain untuk memproses datanya.

<?PHP
    session_start();
?>
<HTML>
<HEAD>
    <TITLE>Latihan</TITLE>
</HEAD>
<BODY>
    <FORM action="./" method="POST">
        <input type="text" name="Nama" placeholder="Nama">
        <input type="password" name="Sandi" value="password" placeholder="Password">
        <input type="submit" name="Kirim" value="Kirim">
    </FORM>

    <FORM action="./" method="POST">
        <input type="submit" name="Kirim" value="Keluar">
    </FORM>

    <?PHP
        if(isset($_SESSION["login"])){
            if($_POST["Kirim"]=="Keluar")session_destroy();
            else echo("data anda adalah ".$_SESSION['login']);
        }else if(isset($_POST["Sandi"])){
            if($_POST["Sandi"]="password"){
                $_SESSION["login"]="Nama";
                echo("simpan data yang menandakan bahwa anda sudah login");
            }
        }
    ?>
</BODY>
</HTML>

Coba klik kirim!
Saat diklik kirim, seharusnya halaman yang dituju adalah halaman terluar dari localhost atau servernya karena kita menggunakan "./" sebagai nilai dari action.

Lalu klik keluar, dan lihat hasilnya!