Bisakah kita membuat banyak sesi di php?

Be carefull with $_SESSION array elements when you have the same name as a normal global.

The following example leads to unpredictable behaviour of the $wppa array elements, some are updated by normal code, some not, it is totally unpredictable what happens._

global $wppa;
$wppa = array( 'elm1' => 'value1', 'elm2' => 'value2', ....etc...);

if ( ! session_id() ) @ session_start();
if ( ! isset($_SESSION['wppa']) $_SESSION['wppa'] = array();

if ( ! isset($_SESSION['wppa']['album']) ) $_SESSION['wppa']['album'] = array();
$_SESSION['wppa']['album'][1234] = 1;
_

$wppa['elm1'] = 'newvalue1';

print_r($_SESSION);
?>
This will most likely display Array ( [wppa] => Array ( [album] => Array ( [1234] => 1 ) [elm1] => 'newvalue1' [elm2] => 'value2' .. etc ...
But setting $wppa['elm1'] to another value or referring to it gives unpredictable results, maybe 'value1', or 'newvalue1'.
_

The most strange behaviour is that not all elements of $wppa[xx] show up as $_SESSION['wppa'][xx].

Apakah ada cara untuk memulai dua sesi di PHP?

Jawabannya adalah tidak". Anda tidak dapat memulai beberapa sesi secara bersamaan. Dan jika Anda melakukannya, Anda akan mendapatkan kesalahan seperti "Sesi sudah dimulai"

Anda tidak perlu memulai sesi secara bersamaan, asalkan Anda dapat membuat beberapa kunci

Misalnya…

$_SESSION['key1'], $_SESSION['key2']

Semua sesi aktif dapat dihancurkan dengan perintah "SESSION_DESTROY()", atau Anda dapat menghapus kunci tertentu menggunakan "UNSET($_SESSION['key1'])"

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

Saya mengautentikasi pengguna menggunakan mekanisme cookie yang cukup rumit. Masalahnya adalah bahwa menggunakan cookie (saya juga memiliki versi menggunakan sesi dengan masalah yang sama), sepertinya saya hanya dapat membuat satu pengguna masuk dari satu contoh browser mana pun. (Mengapa saya ingin masuk sebagai dua pengguna dari satu browser/IP? Jika saya ingin membuka tab browser lain, masuk sebagai "root" atau siapa pun, dan lakukan beberapa administrasi tanpa keluar dari sesi saya yang lain. )

Misalnya, saya menjalankan Firefox, dan masuk ke aplikasi saya. Sesi dimulai untuk browser. Saya membuka tab lain, dan masuk sebagai pengguna yang berbeda, sesi (dan variabel sesi apa pun) "ditimpa" oleh sesi baru ini

Saya telah membuat solusi untuk saat ini, dengan menulis alamat IP dan nama pengguna ke sebuah tabel, dan hanya mengizinkan satu login dari satu alamat IP mana pun. Masalahnya di sini adalah jika pengguna lupa untuk keluar, maka session_destroy() (atau pembersihan cookie manual, bergantung pada versi aplikasi saya) tidak pernah dipanggil, dan saat saya meluncurkan ini, pengguna akan memanggil DBA/SA ( . ) dan saya harus HAPUS DARI ip_addr WHERE username = 'blah' AND ip_addr = 'xxx. xxx. xxx. xxx' untuk menghapus entri dan menghapus kunci - sesuatu yang tidak ingin saya lakukan untuk 150 pengguna

Singkatnya, apakah ada yang tahu cara untuk mengizinkan beberapa sesi independen dengan ID sesi independen dari instance browser yang * sama *?

Bantuan apa pun akan sangat dihargai. Jika tidak, saya masih dapat tetap menggunakan metode satu-login-per-IP saya, karena semua klien kami menggunakan alamat IP yang berbeda dan proxy dilewati di jaringan lokal

Berapa banyak sesi yang dapat ditangani PHP?

Tidak, ini berarti bahwa tidak boleh ada lebih dari 30 koneksi simultan . Sesi Http pada dasarnya adalah serangkaian permintaan http dengan keadaan umum yang disimpan di server (dan yang sebenarnya disebut 'sesi').

Bagaimana cara membuat sesi berbeda di PHP?

Anda dapat memulai sesi dalam PHP dengan menggunakan fungsi session_start() . Fungsi ini, secara default, akan memeriksa sesi yang ada terlebih dahulu. Jika sesi sudah ada, itu tidak akan melakukan apa-apa, tetapi akan membuatnya jika tidak ada sesi yang sudah ada sebelumnya.

Bisakah satu pengguna memiliki beberapa sesi?

Tidak, tidak mungkin untuk memulai sesi baru dengan sesi lain berjalan .

Bagaimana saya bisa sesi beberapa halaman di PHP?

Sesi PHP membantu menyimpan informasi pengguna di sisi klien, yang dapat diakses di banyak halaman. .
Langkah 1. Tetapkan sesi. .
Langkah 2. Dapatkan Nilai Variabel Sesi. .
Langkah 3. Ubah Data Sesi. .
Langkah 4. Hancurkan atau Hapus Sesi