Rumah >pembangunan bahagian belakang >masalah PHP >Apa yang perlu dilakukan jika sesi php tidak boleh lulus nilai
Penyelesaian kepada masalah sesi php tidak dapat memindahkan nilai: 1. Semak konfigurasi parameter pelayan 2. Tukar nilai "session.use_trans_sid" kepada 1 dalam fail konfigurasi php.ini; Semak folder "var /tmp" boleh ditulis dan diubah suai.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP7.1, komputer Dell G3.
Apakah yang perlu saya lakukan jika sesi php tidak dapat melepasi nilai?
Penyelesaian kepada kegagalan sesi PHP dan tidak lulus
Dalam PHP, sesi tidak boleh dihantar ke halaman seterusnya secara amnya terdapat dua situasi:
Mari kita tulis fail php dahulu: =phpinfo()?> dan hantarkannya ke pelayan untuk melihat konfigurasi parameter pelayan.
Pergi ke bahagian sesi dan lihat bahawa parameter session.use_trans_sid ditetapkan kepada sifar.
Parameter ini menentukan sama ada untuk mendayakan sokongan SID telus, iaitu sama ada sesi itu dihantar bersama-sama dengan URL. Pemahaman peribadi saya ialah sebaik sahaja parameter ini ditetapkan kepada 0, satu sesi akan dimulakan untuk setiap URL. Dengan cara ini, halaman berikutnya tidak dapat menjejaki sesi halaman sebelumnya, yang kami panggil tidak dapat dihantar. Kedua-dua halaman menjana dua fail sesi pada bahagian pelayan dan tidak berkaitan. (Saya tidak tahu sama ada ini betul? Sila beri saya nasihat.)
Jadi salah satu cara ialah menukar nilai session.use_trans_sid kepada 1 dalam fail konfigurasi php.ini.
Sudah tentu kita tahu bahawa tidak semua orang mempunyai kuasa untuk menukar konfigurasi php, jadi apakah penyelesaian tidak langsung?
Mari kita gunakan dua contoh untuk menggambarkan:
Fail 1 ujian1.php
//Menunjukkan bahawa sesi dikenal pasti oleh ID pengguna
session_id(SID);
//Mulakan sesi
session_start();
//Tetapkan nama sesi kepada Havi
$_SESSION['name']="Havi";
//Output sesi dan tetapkan hiperpautan ke test halaman kedua2.php
echo " ".$_SESSION['name']."";
?>
Fail 2: test2.php
Menunjukkan bahawa sesi dikenal pasti oleh ID pengguna
session_id(SID);
//Start session
session_start();
//Output sesi yang diluluskan dalam test1.php.
gema “Ini ialah “.$_SESSION['name'];
?>
Setiap halaman mesti menulis untuk membuka sesi. . Jika tidak, ia masih tidak akan berfungsi dengan betul
Jadi, perkara utama ialah menambah session_id(SID); sebelum session_start();, supaya apabila halaman ditukar, pelayan menggunakan fail sesi disimpan oleh pengguna pada pelayan Sesi dalam folder menyelesaikan masalah penghantaran.
Walau bagaimanapun, sesetengah rakan sekerja akan melaporkan bahawa jika sesi berbilang pengguna ditulis dalam satu SID, nilai Sesi tidak akan direalisasikan sepenuhnya. Jadi terdapat satu lagi cara untuk menyelesaikan masalah ini. Tidak perlu menambah session_id (SID); tidak jelas.
Alasan kedua yang mungkin ialah folder tempat pelayan menyimpan sesi tidak mempunyai kebenaran membaca , atau kembali Dalam phpinfo.php, semak alamat tempat sesi disimpan:
session.save_path: var/tmp
Jadi semak sama ada folder var/tmp boleh ditulis.
Tulis fail: test3.php untuk mengujinya:
echo var_dump(is_writeable(ini_get(“session.save_path”)));
?> ;
Jika bool(false) dikembalikan, ia membuktikan bahawa kebenaran menulis folder adalah terhad, kemudian tukar folder dan tambah:
//Tetapkan direktori semasa ke halaman web yang anda tulis Subfolder sesi ialah laluan penjimatan sesi.
$sessSavePath = dirname(__FILE__).'/session/';
//Jika laluan baharu boleh dibaca dan boleh ditulis (ini boleh dicapai dengan menukar atribut folder kepada 777 pada FTP), maka menjadikan jalan itu Berkuatkuasa.
if(is_writeable($sessSavePath) && is_readable($sessSavePath))
{session_save_path($sessSavePath);}
Pembelajaran yang disyorkan: "Tutorial Video PHP" >
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika sesi php tidak boleh lulus nilai. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!