Rumah >pembangunan bahagian belakang >tutorial php >Mengapa kuki 'username2' saya kosong walaupun menetapkannya menggunakan setcookie() dalam PHP?

Mengapa kuki 'username2' saya kosong walaupun menetapkannya menggunakan setcookie() dalam PHP?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-22 00:15:11502semak imbas

Why is my 'username2' cookie blank despite setting it using setcookie() in PHP?

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:

  • Tamat tempoh parameter: Tentukan masa tamat tempoh dalam format yang sah. Kod yang diberikan menetapkan tamat tempoh 365 hari, tetapi format yang dicadangkan ialah time() n, dengan n ialah bilangan saat.
  • Parameter laluan: Seperti yang dicadangkan dalam penyelesaian, tetapan laluan = / memastikan bahawa kuki digunakan pada keseluruhan tapak, bukan hanya direktori semasa.

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!

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