Bagaimana sesi pemeriksaan dimulai atau tidak di php?

Saat Anda bekerja dengan aplikasi, Anda membukanya, melakukan beberapa perubahan, lalu menutupnya. Ini sangat mirip dengan Sesi. Komputer tahu siapa Anda. Ia tahu kapan Anda memulai aplikasi dan kapan Anda mengakhiri. Tapi di internet ada satu masalah. server web tidak tahu siapa Anda atau apa yang Anda lakukan, karena alamat HTTP tidak mempertahankan status

Variabel sesi mengatasi masalah ini dengan menyimpan informasi pengguna untuk digunakan di beberapa halaman (mis. g. nama pengguna, warna favorit, dll). Secara default, variabel sesi bertahan hingga pengguna menutup browser

Jadi;

Tip. Jika Anda memerlukan penyimpanan permanen, Anda mungkin ingin menyimpan data dalam database


Mulai Sesi PHP

Sesi dimulai dengan fungsi session_start()

Variabel sesi diatur dengan variabel global PHP. $_SESSION

Sekarang, mari buat halaman baru bernama "demo_session1. php". Di halaman ini, kita memulai sesi PHP baru dan mengatur beberapa variabel sesi

Contoh

// Mulai sesi
session_start();
?>


// Tetapkan variabel sesi
$_SESSION["favcolor"] = "hijau";
$_SESSION["favanimal"] = "kucing";
echo "Variabel sesi ditetapkan. ";
?>


Jalankan contoh »

Catatan. Fungsi session_start()_ harus menjadi hal pertama dalam dokumen Anda. Sebelum tag HTML apa pun



Dapatkan Nilai Variabel Sesi PHP

Selanjutnya, kami membuat halaman lain yang disebut "demo_session2. php". Dari halaman ini, kami akan mengakses informasi sesi yang kami atur di halaman pertama ("demo_session1. php")

Perhatikan bahwa variabel sesi tidak diteruskan satu per satu ke setiap halaman baru, melainkan diambil dari sesi yang kita buka di awal setiap halaman (session_start())

Perhatikan juga bahwa semua nilai variabel sesi disimpan dalam variabel $_SESSION global

Contoh

session_start();
?>


// Gema variabel sesi yang diatur di halaman sebelumnya
gema "Warna favorit adalah". $_SESSION["favcolor"]. "
";
gema "Binatang favorit adalah". $_SESSION["favanimal"]. ". ";
?>


Jalankan contoh »

Cara lain untuk menampilkan semua nilai variabel sesi untuk sesi pengguna adalah dengan menjalankan kode berikut

Contoh

session_start();
?>


print_r($_SESSION);
?>


Jalankan contoh »

Bagaimana cara kerjanya?

Sebagian besar sesi menyetel kunci pengguna di komputer pengguna yang terlihat seperti ini. 765487cf34ert8dede5a562e4f3a7e12. Kemudian, ketika sebuah sesi dibuka di halaman lain, itu memindai komputer untuk kunci pengguna. Jika ada kecocokan, ia mengakses sesi itu, jika tidak, ia memulai sesi baru

Meskipun solusinya tampaknya cukup mudah (jangan menyebutnya lebih dari sekali), dalam skenario tertentu, Anda tidak akan sepenuhnya yakin apakah suatu sesi telah dimulai atau belum. Dalam beberapa kasus, itu mungkin di luar kendali Anda

Ada dua cara untuk mendekati ini

Memeriksa untuk melihat apakah ada sesi dalam versi yang lebih rendah dari 5. 4

Jika Anda menggunakan versi PHP yang lebih rendah dari 5. 4. 0, Anda dapat melakukan hal berikut

<?php
if(session_id() == ''){
    //session has not started
    session_start();
}

var_dump(session_id());

Jika Anda menjalankan kode di atas, Anda akan melihat bahwa sesi selalu ada

Hal ini karena

  1. Kami memeriksa untuk melihat apakah fungsi session_id mengembalikan string kosong
  2. Jika fungsi session_id mengembalikan string kosong, maka kita dapat menganggap bahwa sesi tidak ada
  3. Jika demikian, kita cukup memulai sesi dengan memanggil fungsi session_start

Menggunakan fungsi session_status di PHP 5. 4 dan di atas

Dalam PHP versi 5. 4. 0 ke atas, kita dapat menggunakan fungsi session_status. Seperti namanya, fungsi ini mengembalikan status sesi saat ini

Fungsi ini dapat mengembalikan tiga nilai bilangan bulat yang berbeda, yang semuanya tersedia sebagai konstanta yang telah ditentukan sebelumnya

  • 0 – PHP_SESSION_DISABLED. Sesi saat ini dinonaktifkan
  • 1 – PHP_SESSION_NONE. Tidak ada sesi
  • 2 – PHP_SESSION_AKTIF. Sesi sudah ada

Jika kami menggunakan session_status, kode kami akan terlihat seperti ini

if(session_status() == PHP_SESSION_NONE){
    //session has not started
    session_start();
}
_

Seperti yang Anda lihat, menggunakan fungsi ini membuat kode Anda sedikit lebih jelas

Mengapa tidak memeriksa saja apakah array $_SESSION kosong?

Anda dapat memeriksa untuk melihat apakah array $_SESSION ada dan tidak kosong. Namun, perlu dicatat bahwa $_SESSION dapat dibuat secara manual seperti itu

Anda dapat memeriksa apakah suatu variabel telah disetel dalam sesi pengguna menggunakan fungsi isset(), seperti yang Anda lakukan pada variabel normal. Karena $_SESSION superglobal hanya diinisialisasi setelah session_start() dipanggil, Anda perlu memanggil session_start() sebelum menggunakan isset() pada variabel sesi. Sebagai contoh


Anda dapat, tentu saja, juga menggunakan fungsi empty() dengan data sesi, atau bahkan fungsi lainnya - larik $_SESSION dan datanya dapat digunakan seperti larik lainnya

Ingin belajar PHP7?

Peretasan dengan PHP telah diperbarui sepenuhnya untuk PHP 7, dan sekarang tersedia sebagai PDF yang dapat diunduh. Dapatkan lebih dari 1200 halaman pembelajaran langsung PHP hari ini

Jika ini membantu, luangkan waktu sejenak untuk memberi tahu orang lain tentang Meretas dengan PHP dengan men-tweet tentangnya

Apa itu fungsi session_start() PHP?

session_start() membuat sesi atau melanjutkan sesi saat ini berdasarkan pengenal sesi yang diteruskan melalui permintaan GET atau POST, atau diteruskan melalui cookie. When session_start() is called or when a session auto starts, PHP will call the open and read session save handlers.

Bagaimana cara memeriksa apakah variabel sesi diatur dalam PHP?

Fungsi isset() memeriksa apakah suatu variabel disetel, yang artinya harus dideklarasikan dan bukan NULL. Fungsi ini mengembalikan nilai true jika variabel ada dan bukan NULL, jika tidak maka akan mengembalikan nilai false.

Bagaimana cara menggunakan session_start di PHP?

Memulai Sesi PHP . Fungsi ini pertama-tama memeriksa apakah sesi sudah dimulai dan jika tidak ada yang dimulai maka akan dimulai. Direkomendasikan untuk memanggil session_start() di awal halaman

Apa fungsi PHP session_start () dan session_destroy ()?

session_destroy() menghancurkan semua data yang terkait dengan sesi saat ini . Itu tidak menghapus variabel global apa pun yang terkait dengan sesi, atau menghapus cookie sesi. Untuk menggunakan variabel sesi lagi, session_start() harus dipanggil. Catatan. Anda tidak perlu memanggil session_destroy() dari kode biasa.