Cara menggunakan php session without cookies

Session adalah sebuah varibel sementara yang diletakkan di server. Di mana PHP bisa mengambil nilai yang tersimpan di server walaupun kita membuka halaman baru. Biasanya session akan hilang jika anda menutup browser.

Fungsi session adalah untuk melakukan aktivitas yang berhubungan dengan interaksi user pada sebuah web server php. Untuk kali ini saya akan jelaskan penggunaan session untuk login dan logout. Penjelasanya yang perlu diketahui adalah penggunaan $_SESSION[] harus di daftarkan terlebih dahulu. Tanpa session didaftarkan, maka variabel session tidak dapat digunakan alias kosong.

Berikut ini bagian session yang perlu Anda ketahui penggunaannya.

  1. Session_start();

Kegunaan dari fungsi session_start(); adalah untuk memulai eksekusi session pada server dan kemudian menyimpannya pada browser. Dengan intruksi ini menunjukkan pada saat session di mulai, semua session akan diaftarkan selanjutnya akan disimpan. Penyimpanan ini terjadi sampai jangka waktu tertentu. Dan untuk membaut session berdasarkan waktu bisa Anda setting sendiri. Mudah-mudahan nanti saya buat tutorialnya dengan batas waktu session. Selain dengan batas waktu, session bisa hilang jika cookies browser Anda hilangkan. Dengan dihilangkan, maka secara otomatis session juga hilang dari browser Anda.

  1. $_SESSION[username]

Jika pada no adalah mendaftarkan sebuah session. Berbeda dengan yang ketiga ini. Varibel ini adalah sebuah inisialisasi dari session.

  1. Session_destroy();

Pada bagian ini menjelesakan bahwa semua session yang telah di buat dan di inisialisasi akan di destroy atau di hancurkan. Nah pada tahanpan inilah yang sering digunakan untuk script logout pada web atau aplikasi berbasis web lainya.

Cara membuat session adalah sebagai berikut :

  1. Deklarasi awal kalau kita menggunakan session, yaitu menggunakan fungsi session_start()
  1. Set suatu nilai ke variabel $_SESSION

Sebagai contoh, buat suatu halaman php dengan nama “index1.php” lalu ketik atau copy script php dibawah ini kedalamnya.

Cara menggunakan php session without cookies
Cara menggunakan php session without cookies

Catatan:

  • Script Session_start() harus diletakkan pada baris code nomor satu pada editor yang anda gunakan.
  • Kode session_start() harus diletakkan sebelum ada output apapun walaupun hanya spasi, jadi sebaikanya selalu letakkan di bagian paling atas.

Setelah kita me-registerkan variabel $_SESSION seperti yang kita lakukan pada “index1.php” tadi, maka untuk mengecek apakah session telah diregister adalah dengan menggunakan fungsi isset().

Pada contoh di atas (index1.php), setelah kita me-register $_SESSION[‘username’], kita akan ke halaman2.php

Di index2.php kita akan cek apakah variabel session telah di register, jika belum kita stop membuka isi index2.php

Sekarang mari kita buat halaman php dengan nama “index2.php” lalu tempatkan script php dibawah ini kedalamnya :

Cara menggunakan php session without cookies
Cara menggunakan php session without cookies

Untuk melihat efeknya antara variabel $_SESSION sudah diregister atau belum, coba anda tutup browser, lalu buka lagi browsernya, langsung buka halaman index2.php. Tanpa membuka index1.php terlebih dahulu, lalu lihat hasilnya, jika sudah sekarang coba anda jalankan “index1.php” dan kemudian jalankan “index2.php” , maka lihat hasilnya dan perbedaannya.

Setelah kita belajar me-register session, maka cara un-register session adalah dengan menggunakan fungsi unset() , script ini sama halnya dengan membuat logout pada halaman website, namun ini masih contoh kecil dan masih bisa anda kembangkan sesuai dengan kebutuhan anda. Dan untuk membuatnya mari kita buat lagi halaman php dengan nama “logout.php” lalu copy kan script dibawah ini kedalamnya:

Cara menggunakan php session without cookies
Cara menggunakan php session without cookies

Jika sudah, maka coba jalankan halaman yang anda buat tadi secara berurutan, pertama coba anda jalankan “index1.php” , jika sudah lalu jalankan “index2.php” dan lihat tulisan yang mucul pada halamn browser anda, jika anda sudah melihatnya lalu jalankan halaman “logout.php” dan jika semuanya sudah selesai anda jalankan sesuai urutan yang saya katakan, maka refresh atau reload “index2.php” tadi dan lihat perbedaannya.’

Dalam PHP, session merupakan data yang disimpan dalam suatu server yang dapat digunakan secara global di server tersebut, dimana data tersebut spesifik merujuk ke user/client tertentu, contoh penggunaan session adalah ketika user telah login di halaman tertentu, maka ketika membuka halaman lain, php akan mengingat bahwa user tersebut telah login, contoh ketika kita telah login pada Google, maka setiap kali kita membuka layanan Google seperti GMail, Google Drive, dll di tab berbeda, kita akan selalu dalam keadaan login, kecuali kita buka dengan browser yang berbeda. Cntoh lain ketika web ecommerce merekam keranjang belanja user, maka ketika pindah ke halaman pembayaran, daftar belanja masih terekam.

I. Cara Kerja Session Pada PHP

Ketika kita memulai session dengan menjalankan perintah session_start() maka PHP akan menjalankan perintah baik pada server maupun pada client/user.

Sisi Server

Dari sisi server php akan membuat file yang kita sebut file session yang diawali dengan sess_ dan diikuti dengan ID session, dimana ID Session tersebut mereferensikan id session yang ada di browser client. nilai ID session adalah:

  • Jika browser mengijinkan penggunaan cookie, maka ID session berupa angka acak sebanya 26 karakter hexadesimal, contoh: 1g7vcm79tg4869tp8u53gldl02
  • Jika browser tidak mengijinkan penggunaan cookie
    Jika nama session ada di url, maka nilai ID Session sama dengan id yang ada di url, misal https://jagowebdev.com?page=login&PHPSESSID=1234, maka ID Session yang digunakan adalah 1234, sehingga nama file session yang dibuat
    <?php
    echo session_save_path();
    session_start();
    $_SESSION['user'] = 'agusph';
    $_SESSION['auth'] = 1;
    0, Namun jika ID Session tidak ada di URL, maka PHP akan membuat file dengan ID Session sama seperti sebelumnya yaitu 26 karakter hexadesimal, file ini akan dibuat setiap kali perintah session_start() dijalankan, dan tidak ada referensi ke user/client.

Terus dimana php menyimpan file session tersebut? file tersebut secara default disimpan didalam direktori temporary dimana letak direktory ini tergantung dari masing-masing sistem opersi yang digunakan. untuk mengetahui dimana php menyimpan file session, dapat menggunakan perintah:

<?php
echo session_save_path();
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['auth'] = 1;
2Misal kita buat file session.php dan simpan ke dalam htdocs/tutorial, selanjutnya tuliskan kode berikut:

<?php echo session_save_path(); ?>

Ketika kita jalankan file tersebut di komputer yang menggunakan sistem operasi windows, contoh output yang dihasilkan adalah 

<?php
echo session_save_path();
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['auth'] = 1;
3omputer saya), jika kita buka direktori tersebut, disana kita temukan banyak file .tmp, cari nama dengan awalan sess_ , file tersebut merupakan file session.

Cara menggunakan php session without cookies
Cara menggunakan php session without cookies

Gambar 1. Contoh File Session

Sisi User/Client

Selanjutnya dari sisi client/user, php akan:

  • Jika browser mengijinkan penggunaan cookie
    Membuat file cookie dengan nama default yaitu  PHPSESSID dengan nilai (value) ID session, lokasi penyimpanan file tersebut berbeda beda tergantung jenis browser yang digunakan, untuk google chrome lokasi cookie berada di:C:\Users\<NAMA USER>\AppData\Local\Google\Chrome\User Data\Default dengan nama file Cookie, namun kita tidak dapat membukanya secara langsung, melainkan harus menggunakan SQLite, kita dapat membaca isinya melalui Chrome Developer Tools, yaitu pada tab Resources bagian Cookies, contoh seperti gambar berikut:

    Cara menggunakan php session without cookies
    Cara menggunakan php session without cookies

    Gambar 2. Cookie PHPSESSID

    Jika kita bandingkan antara gambar 1 dan 2 terdapat kesamaan nilai yaitu 1g7vcm79tg4869tp8u53gldl02 yang merupakan ID Session, dengan ID ini, maka setiap kali user mengunjungi situs yang sama dan dengan browser yang sama, maka server akan selalu menggunakan data-data yang ada di file 

    <?php
    echo session_save_path();
    session_start();
    $_SESSION['user'] = 'agusph';
    $_SESSION['auth'] = 1;
    5.

  • Jika browser tidak mengijinkan penggunaan cookie
    Jika nama session berada di url, maka PHP akan membuat referensi ID Session sesuai dengan yang ada di URL. Misal: https://jagowebdev.com?page=login&PHPSESSID=1234, maka php akan menggunakan data session pada file session
    <?php
    echo session_save_path();
    session_start();
    $_SESSION['user'] = 'agusph';
    $_SESSION['auth'] = 1;
    0 . Jika ID session tidak ada di URL maka data session hanya dapat digunakan di halaman tersebut saja.

Isi File Session Pada PHP
Isi file session pada PHP berupa array yang di serialize nilainya akan berubah ubah sesuai dengan manipulasi data yang kita lakukan, misal file session.php kita ubah menjadi:

<?php
echo session_save_path();
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['auth'] = 1;

ketika kita jalankan PHP akan menyimpan data session dengan key dan value sesuai dengan yang kita tentukan, jika kita buka file session tadi menggunakan notepad, maka akan berisi

<?php
echo session_save_path();
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['auth'] = 1;
7format: nama key diikuti tanda | kemudian data yang di serialize (tipe data : panjang data(jika ada) : nilai data) dengan tanda pemisah antara data satu dengan yang lain menggunakan  titik koma. contoh diatas berarti bahwa s merupakan tipe data string, 6 panjang data, sedangkan b berarti tipe data boelan.

Session selesai

Ketika browser ditutup atau kita menjalankan perintah session_destroy() maka session berakhir, jika kita menggunakan

<?php
echo session_save_path();
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['auth'] = 1;
8 maka file session yang ada pada server akan lansung terhapus, namun jika browser ditutup, file tersebut tidak langsung dihapus, server akan menghapusnya pada periode tertentu, biasanya 30 menit. Ketika browser ditutup, cookie session pada browser akan langsung terhapus, sehingga session tersebut tidak dapat digunakan lagi kecuali jika kita mengetahui ID Session nya, maka data session tersebut dapat digunakan kembali baik melalui url maupun cookie.

II. Mengawali/Menjalankan Session Pada PHP

Untuk mengawali menjalankan session, seperti pada tulisan diatas, kita gunakan perintah session_start() yang akan memberitahu server bahwa kita akan menggunakan session, selanjutnya server akan mengecek apakah pengunjung telah memiliki session ID:

  1. jika ya, maka server akan mengambil data sesuai dengan ID session yang di minta oleh browser (misal di file a.php kita telah menjalankan perintahsession_start()kemudian di file b.php kita jalankan lagi perintah
    <?php
    session_start();
    $_SESSION['user'] = 'agusph';
    $_SESSION['role'] = 'admin';
    $_SESSION['login_time'] = date('Y-m-d');
    print_r($_SESSION);
    
    /*
    Output
    Array
    (
        [user] => agusph
        [role] => admin
        [login_time] => 2015-09-05
    )
    */
    1maka ketika menjalankan file b.php browser akan mengirimkan ID Session, sehingga
    <?php
    session_start();
    $_SESSION['user'] = 'agusph';
    $_SESSION['role'] = 'admin';
    $_SESSION['login_time'] = date('Y-m-d');
    print_r($_SESSION);
    
    /*
    Output
    Array
    (
        [user] => agusph
        [role] => admin
        [login_time] => 2015-09-05
    )
    */
    2data 
    <?php
    session_start();
    $_SESSION['user'] = 'agusph';
    $_SESSION['role'] = 'admin';
    $_SESSION['login_time'] = date('Y-m-d');
    print_r($_SESSION);
    
    /*
    Output
    Array
    (
        [user] => agusph
        [role] => admin
        [login_time] => 2015-09-05
    )
    */
    3ession yang terbentuk ketika menjalankan file a.php akan dipakai lagi ketika kita menjalankan file b.php),
  2. jika tidak, maka server akan membuat file session dengan nama sess_ID dan mengirimkan id tersebut ke browser untuk dibuatkan cookie.

Karena penggunaan data session harus didahului dengan perintah session_start() maka perintah ini sebaiknya ditulis di baris paling awal di program kita.

III. Menambahkan Data Session Pada PHP

Semua data session disimpan dalam bentuk array superglobal dengan nama $_SESSION, sehingga seperti array pada umumnya setiap variabel session disimpan dalam hubungan key dan value, untuk menambahkan data kedalamnya sama dengan ketika kita menambahkan data di array biasa, namun bedanya variabel $_SESSION akan tetap dapat kita gunakan di file php manapun (dalam satu server) hingga kita menakhirinya dengan perintah

<?php
echo session_save_path();
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['auth'] = 1;
8

Contoh untuk menambahkan data session:

<?php
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['role'] = 'admin';
$_SESSION['login_time'] = date('Y-m-d');
print_r($_SESSION);

/*
Output
Array
(
    [user] => agusph
    [role] => admin
    [login_time] => 2015-09-05
)
*/

IV. Membaca Data Session Pada PHP

Setelah kita menyimpan data pada session, data tersebut langsung dapat kita gunakan, untuk memanggil  data session pada PHP, seperti kita memanggil data pada array pada umumnya, yaitu dengan key nya, contoh:

<?php
    $_SESSION['user'] = 'agusph';
    echo $_SESSION['user']; // agusph
?>

Session yang telah kita isi datanya dapat langsung kita gunakan sehingga lebih banyak keuntungannya dibanding menggunakan $_COOKIE.

V. Menghapus Data Session Pada PHP

Untuk menghapus data session pada php, sama seperti ketika kita menghapus variabel, yaitu menggunakan perintah

<?php
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['role'] = 'admin';
$_SESSION['login_time'] = date('Y-m-d');
print_r($_SESSION);

/*
Output
Array
(
    [user] => agusph
    [role] => admin
    [login_time] => 2015-09-05
)
*/
6contoh berikut menyambung contoh sebelumnya:

<?php
unset($_SESSION['user']);
print_r($_SESSION);

/*
Output
Array
(
    [role] => admin
    [login_time] => 2015-09-05
)
*/

disamping itu kit juga dapat menggunakan perintah

<?php
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['role'] = 'admin';
$_SESSION['login_time'] = date('Y-m-d');
print_r($_SESSION);

/*
Output
Array
(
    [user] => agusph
    [role] => admin
    [login_time] => 2015-09-05
)
*/
7 untuk menghapus semua data pada $_SESSION, contoh:

<?php
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['role'] = 'Admin';
session_unset();
print_r($_SESSION);

/*
Output
Array ()
*/

perlu diperhatikan bahwa jika menggunakan perintah

<?php
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['role'] = 'admin';
$_SESSION['login_time'] = date('Y-m-d');
print_r($_SESSION);

/*
Output
Array
(
    [user] => agusph
    [role] => admin
    [login_time] => 2015-09-05
)
*/
6 untuk menghapus data session, pilihlah data secara spesifik, jangan menghapus $_SESSION itu sendiri (
<?php
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['role'] = 'admin';
$_SESSION['login_time'] = date('Y-m-d');
print_r($_SESSION);

/*
Output
Array
(
    [user] => agusph
    [role] => admin
    [login_time] => 2015-09-05
)
*/
9), karena akan menghapus semua isi data session, dan menghapus variabel $_SESSION itu sendiri, sehingga jika kita panggil akan memunculkan pesan error bahwa variabel $_SESSION undefined. contoh:

<?php
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['role'] = 'admin';
$_SESSION['login_time'] = date('Y-m-d');
unset($_SESSION);
print_r($_SESSION);

// Notice: Undefined variable: _SESSION in E:\xampp-1.8.3.2\htdocs\tutorial\session.php on line 7

VI. Mengakhiri Session Pada PHP

Untuk mengakhiri session pada PHP, kita gunakan perintah

<?php
echo session_save_path();
session_start();
$_SESSION['user'] = 'agusph';
$_SESSION['auth'] = 1;
8, dengan perintah ini maka file session akan dihapus dari server. contohnya ketika user logout, maka session akan berakhir dan user diminta untuk login kembali.

VII. Keamanan Session Pada PHP

Dari berbagai manfaat session terdapat beberapa kelemahan yang bisa menyebabkan kerugian terutama pada user, yaitu bocornya data-data sensitif ke pihak yang tidak bertanggung jawab.  Untuk membahas mengenai keamanan session dan bagaimana mencegahnya, dapat dibaca pada artike berikutnya.

Demikian pembahasan kita mengenai session pada PHP, semoga bermanfaat.

Subscibe Now

Suka dengan artikel di Jagowebdev.com? jangan sampai ketinggalan, segera join ke milis kami untuk update informasi terbaru dari Jagowebdev.com

Komitmen Kami: Kami senantiasa menghargai privasi Anda dan tidak akan membagikan identitas Anda ke pihak manapun.

Bagaimana cara kerja session pada PHP?

Cara kerja Session: Saat pengunjung mengakses suatu halaman, pengunjung tersebut memulai session (digunakan fungsi session_start()). Bila dalam konfigurasi php, session.auto_start diset ke 1 maka php akan melakukan start session secara otomatis.
Perbedaan antara session dan cookie yaitu, session menyimpan data pada sisi server sedangkan cookie menyimpan data pada sisi client dan karena itulah session lebih aman dalam menyimpanan data maupun file dibanding cookie karena penyimpanan dilakukan di sisi server.

Apa fungsi $_ session pada PHP?

Fungsi session adalah untuk melakukan aktivitas yang berhubungan dengan interaksi user pada sebuah web server php.

Dimana session PHP disimpan?

Berbeda dengan cookies yang disimpan di browser, session disimpan di dalam web server.