Rumah > pembangunan bahagian belakang > tutorial php > Terangkan bagaimana sesi berfungsi dalam PHP.

Terangkan bagaimana sesi berfungsi dalam PHP.

Robert Michael Kim
Lepaskan: 2025-03-20 18:37:29
asal
1016 orang telah melayarinya

Terangkan bagaimana sesi berfungsi dalam PHP.

Sesi di PHP menyediakan cara untuk menyimpan maklumat di beberapa halaman laman web. Tidak seperti kuki, yang menyimpan data pada penyemak imbas klien, data sesi disimpan di pelayan. Inilah cara kerja sesi dalam PHP:

  1. Inisialisasi: Apabila pengguna mengakses laman web, PHP secara automatik memulakan sesi jika seseorang tidak wujud atau meneruskan sesi yang ada. Ini dilakukan menggunakan fungsi session_start() pada permulaan skrip php.
  2. ID Sesi: ID Sesi yang unik dihasilkan dan biasanya disimpan dalam kuki pada penyemak imbas pengguna. ID ini digunakan untuk mengaitkan pengguna dengan data sesi yang betul pada pelayan.
  3. Menyimpan data: Data sesi boleh disimpan menggunakan array superglobal $_SESSION . Sebagai contoh, untuk menyimpan nama pengguna, anda akan melakukan $_SESSION['username'] = 'JohnDoe'; .
  4. Mengakses Data: Data sesi yang disimpan boleh diakses dari mana -mana halaman di mana session_start() telah dipanggil. Sebagai contoh, untuk mendapatkan nama pengguna yang disimpan, anda akan menggunakan echo $_SESSION['username']; .
  5. Menamatkan sesi: Anda boleh mengakhiri sesi dan membersihkan datanya menggunakan session_destroy() . Walau bagaimanapun, ini tidak mencetuskan pembolehubah sesi; Anda juga mesti menggunakan session_unset() untuk mengalih keluar semua pembolehubah sesi.

Apakah perbezaan utama antara sesi dan kuki dalam PHP?

Perbezaan utama antara sesi dan kuki dalam PHP adalah seperti berikut:

  1. Lokasi Penyimpanan:

    • Sesi: Data disimpan di pelayan. Pelayan menghantar ID sesi kepada pelanggan, yang biasanya disimpan dalam kuki.
    • Kuki: Data disimpan pada penyemak imbas pelanggan.
  2. Keselamatan:

    • Sesi: Oleh kerana data disimpan di pelayan, ia umumnya lebih selamat. Walau bagaimanapun, ID sesi mesti dilindungi untuk mengelakkan rampasan sesi.
    • Kuki: Data dihantar dengan setiap permintaan HTTP dan boleh menjadi lebih terdedah kepada pemintasan dan gangguan.
  3. Batasan Saiz:

    • Sesi: Tiada had praktikal untuk jumlah data yang boleh disimpan dalam sesi.
    • Kuki: Terdapat batasan saiz pada kuki, biasanya sekitar 4kb per cookie.
  4. Jangka hayat:

    • Sesi: Jangka hayat boleh diuruskan oleh pelayan dan biasanya tamat tempoh apabila pengguna menutup penyemak imbas atau selepas tempoh yang ditetapkan tidak aktif.
    • Kuki: Jangka hayat boleh ditetapkan untuk tamat tempoh selepas masa tertentu atau kekal sehingga dihapuskan secara manual oleh pengguna.
  5. Penggunaan:

    • Sesi: Sesuai untuk menyimpan maklumat sensitif dan mengekalkan keadaan di beberapa halaman.
    • Kuki: Berguna untuk menyimpan maklumat yang tidak sensitif dan untuk menjejaki pilihan atau tetapan pengguna.

Bagaimanakah anda dapat mengamankan data sesi di PHP untuk mengelakkan rampasan?

Mengamankan data sesi dalam PHP untuk mengelakkan rampasan melibatkan beberapa strategi:

  1. Gunakan HTTPS: Menghantar ID Sesi melalui Sambungan Selamat (HTTPS) untuk mengelakkan serangan lelaki-dalam-tengah.
  2. ID Sesi Regenerate: Gunakan session_regenerate_id() secara berkala atau selepas log masuk yang berjaya untuk membatalkan ID sesi lama dan menghasilkan yang baru.
  3. Tetapkan bendera yang selamat dan httponly: Konfigurasikan kuki sesi dengan bendera secure dan httponly untuk mengelakkan akses melalui JavaScript dan pastikan mereka hanya dihantar melalui HTTPS.

     <code class="php">session_set_cookie_params([ 'lifetime' => 0, 'path' => '/', 'domain' => '', 'secure' => true, 'httponly' => true, 'samesite' => 'Strict' ]); session_start();</code>
    Salin selepas log masuk
  4. Mengesahkan Ejen Pengguna dan IP: Simpan ejen pengguna dan alamat IP dalam sesi dan sahkannya pada setiap permintaan untuk mengesan anomali.
  5. Melaksanakan masa tamat sesi: Tetapkan tempoh masa tamat sesi yang munasabah dan menguatkuasakannya untuk mengehadkan tingkap kelemahan.
  6. Gunakan pengendali sesi yang selamat: Melaksanakan pengendali sesi tersuai yang menggunakan mekanisme penyimpanan yang selamat, seperti fail yang disulitkan atau pangkalan data, untuk menyimpan data sesi.
  7. Mencegah penetapan sesi: Pastikan ID Sesi diperbaharui selepas log pengguna masuk untuk mengelakkan serangan penetapan sesi.

Apakah jangka hayat sesi di PHP dan bagaimana ia dapat diuruskan?

Jangka hayat sesi di PHP boleh diuruskan melalui pelbagai teknik:

  1. Jangka hayat lalai:

    • Secara lalai, sesi dalam PHP berlangsung sehingga pengguna menutup penyemak imbas mereka. Data sesi pelayan biasanya dipadamkan selepas tempoh tidak aktif, yang dikawal oleh tetapan session.gc_maxlifetime dalam fail php.ini .
  2. Masa tamat sesi:

    • Anda boleh menetapkan masa tamat sesi tertentu dengan menyesuaikan session.cookie_lifetime dan session.gc_maxlifetime dalam php.ini . Tetapan ini mengawal seumur hidup cookie sesi dan tempoh pengumpulan sampah.
  3. Jangka hayat tersuai:

    • Anda boleh menguruskan jangka hayat sesi secara programatik dengan menetapkan sesi Cookie sepanjang hayat menggunakan session_set_cookie_params() . Sebagai contoh, untuk menetapkan sesi untuk bertahan selama satu jam:

       <code class="php">session_set_cookie_params(3600); // 3600 seconds = 1 hour session_start();</code>
      Salin selepas log masuk
  4. Penjanaan Sesi:

    • Meningkatkan semula ID Sesi dengan session_regenerate_id() boleh digunakan untuk melanjutkan jangka hayat sesi dengan menyegarkan cookie sesi.
  5. Tamat tempoh sesi:

    • Anda boleh tamat tempoh secara manual dengan menghubungi session_destroy() untuk menamatkan sesi dan membersihkan datanya. Di samping itu, menggunakan session_unset() akan mengalih keluar semua pembolehubah sesi.

Dengan menggunakan kaedah ini, anda boleh mengawal dan menguruskan jangka hayat sesi dalam PHP untuk memenuhi keperluan aplikasi anda.

Atas ialah kandungan terperinci Terangkan bagaimana sesi berfungsi dalam PHP.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan