Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menetapkan masa tamat Sesi dalam PHP

Bagaimana untuk menetapkan masa tamat Sesi dalam PHP

PHPz
PHPzasal
2023-04-04 13:59:234132semak imbas

Apabila menulis tapak web PHP, pembangun sering menyimpan data pengguna dalam Sesi untuk melaksanakan fungsi seperti pemindahan maklumat merentas halaman dan pengesahan pengguna. Secara lalai, Sesi PHP dikosongkan secara automatik apabila sesi tamat, atau tamat tempoh apabila penyemak imbas ditutup. Walau bagaimanapun, kadangkala pembangun perlu mengawal masa tamat sesi dengan lebih tepat untuk memastikan sesi itu sah untuk tempoh masa tertentu. Artikel ini akan memperkenalkan cara untuk menetapkan masa tamat tempoh Sesi dalam PHP.

  1. Konsep Asas

Sebelum kita bermula, kita perlu memahami dua konsep berikut:

ID Sesi: Setiap pengguna menetapkan sesi dengan pelayan , ID Sesi unik diberikan untuk mengenal pasti keadaan sesi pengguna.

Pembolehubah sesi: Pembolehubah sesi merujuk kepada pembolehubah yang disimpan di bahagian pelayan semasa sesi.

  1. Cara mengubah suai masa tamat Sesi

2.1. Ubah suai fail php.ini

masa tamat sesi PHP boleh didapati dalam php. ini fail konfigurasi Tetapkan, menggunakan parameter session.gc_maxlifetime, dalam beberapa saat. Secara lalai, nilainya ialah 1440 saat, iaitu 24 minit. Anda boleh mengubah suainya dengan mengikuti langkah di bawah:

  1. Buka fail konfigurasi php.ini.
  2. Cari baris berikut: session.gc_maxlifetime = 1440.
  3. Tukar 1440 kepada masa tamat tempoh yang diingini dalam beberapa saat.
  4. Simpan dan tutup fail php.ini.
  5. Mulakan semula pelayan web.

Mengubah suai parameter ini akan menjejaskan masa tamat Sesi semua skrip PHP.

2.2. Tetapkannya dalam kod

Jika anda hanya perlu mengubah suai masa tamat tempoh Sesi halaman tertentu atau menetapkan masa tamat Sesi secara dinamik seperti yang diperlukan dalam kod, anda boleh menggunakan kod berikut:

session_start(); // Mulakan Sesi
$expireTime = 60*30; // Masa tamat tempoh ialah 30 minit
$_SESSION['timeout' ] = masa () + $expireTime; // Tetapkan masa tamat tempoh pembolehubah Sesi yang ditentukan
?>

Dalam kod, gunakan $_SESSION['masa tamat'] untuk menentukan pembolehubah Sesi yang berkaitan kepada masa tamat tempoh. Ia menyimpan nilai cap masa semasa (masa()) ditambah masa tamat tempoh ($masa tamat). Setiap kali anda melawat halaman, anda boleh menyemak sama ada pembolehubah ini telah tamat tempoh Jika ia telah tamat tempoh, panggil fungsi session_destroy() untuk memusnahkan Sesi.

2.2.1 Dengan mengubah suai parameter kitaran hayat Sesi

Anda juga boleh menggunakan fungsi session_set_cookie_params() untuk menetapkan masa tamat tempoh Sesi dalam kod. Fungsi ini boleh menerima berbilang parameter, yang paling penting ialah parameter kitaran hayat Sesi, yang menentukan masa tamat tempoh Sesi.

Berikut ialah contoh:

session_start();
$expireTime = 60*30; // Masa tamat tempoh ialah 30 minit
session_set_cookie_params( $expireTime);
?>

Kod ini akan menetapkan masa tamat tempoh Sesi kepada 30 minit.

  1. Nota lain

Sama ada dengan mengubah suai fail php.ini, menetapkannya dalam kod atau menetapkannya melalui parameter kitaran hayat Sesi, terdapat nota berikut:

  • Masa tamat tempoh Sesi tidak tepat sepenuhnya kerana ia bergantung pada mekanisme kutipan sampah PHP dan masa tamat tempoh sebenar mungkin tidak konsisten dengan masa yang ditetapkan disebabkan oleh pelbagai faktor.
  • Jika anda menggunakan teknologi pengimbangan beban berbilang pelayan, anda perlu memastikan ID Sesi semua pelayan adalah sama, jika tidak, ketidakkonsistenan Sesi akan berlaku.

Sesi ialah ciri yang sangat penting semasa menulis aplikasi PHP. Dengan menetapkan masa tamat sesi, anda boleh melindungi keselamatan data pengguna dengan lebih baik dan mengelakkan pembaziran sumber pelayan yang tidak perlu.

Atas ialah kandungan terperinci Bagaimana untuk menetapkan masa tamat Sesi dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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