Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Apakah yang perlu saya lakukan jika sesi applet php tidak dapat diperoleh?

Apakah yang perlu saya lakukan jika sesi applet php tidak dapat diperoleh?

PHPz
PHPzasal
2023-04-25 18:19:021017semak imbas

Dalam proses membangunkan applet PHP, Sesi sering digunakan, dan Sesi ialah mekanisme sisi pelayan yang digunakan untuk menyimpan maklumat sesi yang ditubuhkan semasa proses mengakses pelayan Web. Dalam proses membangunkan applet PHP, kadangkala anda menghadapi masalah yang Sesi tidak dapat diperolehi Artikel ini akan menganalisis dan menyelesaikan masalah ini.

1. Apakah itu Sesi?

Sesi merujuk kepada mekanisme untuk menyimpan status pengguna pada bahagian pelayan Pada asasnya ia adalah fail dan juga boleh disimpan dalam pangkalan data. Apabila pengguna mengakses pelayan untuk kali pertama, pelayan menjana ID Sesi untuk pengguna dan mengembalikannya kepada pengguna. SessionID akan disimpan dalam kuki, supaya pada kali berikutnya pengguna melawat, SessionID akan dibawa dan pelayan boleh mencari maklumat Sesi pengguna berdasarkan SessionID. Maklumat sesi biasanya termasuk ID pengguna, nama pengguna, kebenaran pengguna, dsb.

2 Sebab mengapa Sesi tidak boleh diperolehi

  1. Sesi tidak didayakan

Dalam PHP, untuk membuka Sesi, anda perlu menggunakan fungsi session_start() Jika fungsi ini tidak dipanggil, akan berlaku situasi di mana Sesi tidak boleh diperolehi. Oleh itu, sebelum menggunakan Sesi, anda mesti memanggil fungsi session_start() dahulu.

  1. Tetapan laluan menyimpan sesi tidak betul

Apabila pelayan menyimpan maklumat sesi, fail sesi akan disimpan dalam laluan yang ditentukan. Jika laluan menyimpan fail sesi ditetapkan dengan tidak betul, ia akan menyebabkan masalah tidak dapat mendapatkan maklumat sesi.

Sebagai contoh, jika laluan penjimatan sesi ditetapkan kepada /tmp, tetapi laluan itu tidak wujud atau tidak mempunyai kebenaran menulis, sesi tidak akan disimpan atau diperolehi.

Anda boleh melihat laluan penjimatan Sesi semasa melalui kod berikut:

echo session_save_path();
  1. Tamat masa sesi

Sesi mempunyai tempoh tamat masa Masa tamat sesi, Akan ada masalah tidak dapat memperoleh maklumat Sesi. Secara lalai, Sesi tamat tempoh dalam masa yang ditetapkan dalam fail konfigurasi php.ini, biasanya 24 minit. Jika tiada operasi dilakukan dalam masa 24 minit, Sesi akan dimusnahkan secara automatik.

Anda boleh melihat tamat masa Sesi semasa melalui kod berikut:

echo ini_get('session.gc_maxlifetime');
  1. Isu kuki

Sesi dilaksanakan melalui Kuki, jika Kuki disabled , maka adalah mustahil untuk mendapatkan maklumat Sesi. Oleh itu, untuk menggunakan Sesi, Kuki mesti didayakan.

Anda boleh menggunakan kod berikut untuk menyemak sama ada kuki didayakan:

if (isset($_COOKIE['test'])) {
    echo "Cookies are enabled.";
} else {
    echo "Cookies are disabled.";
}
  1. Isu merentas domain

Jika pelayan dan pelanggan sedang tidak di bawah nama domain yang sama , maka akan berlaku masalah merentas domain, menyebabkan Sesi tidak dapat diperolehi. Untuk menyelesaikan masalah merentas domain, mekanisme CORS (Cross-Origin Resource Sharing) boleh digunakan.

3 Kaedah untuk menyelesaikan masalah yang Sesi tidak boleh diperolehi

  1. Periksa sama ada fungsi session_start() dipanggil dengan betul dalam kod.

Jika fungsi ini tidak dipanggil, ia akan menyebabkan masalah tidak dapat mendapatkan maklumat Sesi.

  1. Semak sama ada laluan menyimpan Sesi adalah betul.

Anda boleh melihat laluan menyimpan Sesi semasa melalui kod berikut:

echo session_save_path();

Jika laluan menyimpan Sesi semasa tidak betul, anda boleh menetapkan laluan menyimpan Sesi kepada yang betul laluan melalui kod berikut:

session_save_path("/path/to/save");
  1. Anda boleh melanjutkan tamat masa Sesi dengan mengubah suai parameter session.gc_maxlifetime dalam fail konfigurasi php.ini.
  2. Semak sama ada kuki didayakan.

Anda boleh menggunakan kod berikut untuk menyemak sama ada kuki didayakan:

if (isset($_COOKIE['test'])) {
    echo "Cookies are enabled.";
} else {
    echo "Cookies are disabled.";
}

Jika kuki tidak didayakan, anda boleh menetapkan kuki melalui kod berikut:

setcookie("test", "test", time()+3600);
  1. Selesaikan isu merentas domain.

Anda boleh menggunakan mekanisme CORS untuk menyelesaikan masalah merentas domain Untuk kaedah tertentu, anda boleh melihat maklumat yang berkaitan.

Ringkasnya, melalui analisis dan penyelesaian di atas, kami dapat memahami dan menggunakan Sesi dengan lebih baik, mengelakkan situasi tidak dapat memperoleh Sesi, dan membangunkan applet PHP dengan lebih baik.

Atas ialah kandungan terperinci Apakah yang perlu saya lakukan jika sesi applet php tidak dapat diperoleh?. 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