Menyelesaikan Masalah Kuki Kosong dengan Pengendalian Sesi
Dalam fungsi PHP yang dibentangkan, proses pengesahan pengguna termasuk menetapkan kuki untuk kedua-dua 'nama pengguna' dan ' username2' menggunakan setcookie(). Walau bagaimanapun, apabila mendapatkan semula kuki 'username2', ia kekal kosong. Isu ini boleh timbul atas pelbagai sebab.
Konfigurasi Kuki Tidak Lengkap
Pastikan keseluruhan konfigurasi setcookie() termasuk parameter yang diperlukan:
Output Pengubahsuaian
Beri perhatian kepada amaran dalam manual PHP: "kuki mesti dihantar sebelum sebarang output daripada skrip anda." Elakkan bergema sebelum menetapkan kuki untuk mengelakkan sebarang pengepala telah dihantar. Dalam kod yang diberikan, echo $_COOKIE['username2']; keluar(); hendaklah diletakkan sebelum pengepala("Lokasi: ../new.php"); baris.
Sahkan Pengoptimuman Fungsi
Fungsi validateUser() harus digunakan untuk menetapkan sesi dan ubah hala sahaja, tanpa sebarang pertanyaan logik atau pangkalan data. Pertimbangkan untuk mencipta fungsi berasingan untuk pengesahan pengguna dan satu lagi untuk menetapkan kuki.
Contoh
Versi yang dioptimumkan bagi fungsi validateUser() dan tetapan kuki:
// User validation function function validateUser($username) { session_regenerate_id (); $_SESSION['valid'] = 1; $_SESSION['username'] = $username; } // Cookie setting function function setCookies($username, $password) { setcookie('username', $username, time() + 60 * 60 * 24 * 365, '/'); setcookie('password', $password, time() + 60 * 60 * 24 * 365, '/'); } // Function call if(mysql_num_rows($queryreg) != 0){ $row = mysql_fetch_array($queryreg,MYSQL_ASSOC); $hash = hash('sha256', $row['salt'] . hash('sha256', $password)); if($hash == $row['password']) { if($row['confirm'] == 1){ setCookies($username, $password); validateUser($username); } } }
Atas ialah kandungan terperinci Mengapa kuki 'username2' saya kosong walaupun menetapkannya menggunakan setcookie() dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!