php setcookie php5 altında başarısız olur

4 Cevap php

Ben de üç değerlere sahip bir cookie veya zaten ayarlanmış ise çerezleri değerlerini almak olacak bu basit bir komut dosyası oluşturulur. Benim sunucu çalışan PHP4 üzerine, her şey çalışıyor. PHP 5 (5.2.11) ile benim sunucuda, komut dosyası tarayıcıda çerez ayarlamak için başarısız olur. Çıktı tamponlama benim php.ini etkinse zaten kontrol ve öyle. Herkes bu işe neden başarısız olarak herhangi bir fikirleri var mı?

<?php 
echo "<!DOCTYPE html>";
echo "<body>";
if (!isset($_COOKIE['taeinv'])) {
    echo "No cookie set...   Attempting to set a new cookie.";
    $user = "testuser";
    $role = "admin";
    $expire = "true";
    $halfHour = 1800;
    setcookie("websitename[Expire]", $expire, time()+$halfHour);
    setcookie("websitename[User]", $user, time()+$halfHour);
    setcookie("websitename[Role]", $role, time()+$halfHour);
}
if (isset($_COOKIE['websitename'])) {
    echo "Cookie Values:";
    echo "<br />";
        foreach ($_COOKIE['websitename'] as $name => $value) {
            echo "<b>$name</b> : $value <br />\n";
        }
}
echo "<br />";
echo "<a href=logout.php>Logout</a>";
echo "</body>";
echo "</html>";
?>

4 Cevap

Sen tarayıcıya herhangi bir çıkıştan önce çerez ayarlamak zorunda. Bir yerde setcookie çağrısının altına tüm echo satırları taşımayı deneyin. Böyle bir şey yapabilirsiniz:

<?php
$set = false;
if (!isset($_COOKIE['taeinv'])) {
    $set = true;
    $user = "testuser";
    $role = "admin";
    $expire = "true";
    $halfHour = 1800;
    setcookie("websitename[Expire]", $expire, time()+$halfHour);
    setcookie("websitename[User]", $user, time()+$halfHour);
    setcookie("websitename[Role]", $role, time()+$halfHour);

}
echo "<!DOCTYPE html>";
echo "<body>";
if ($set) {
    echo "No cookie set...   Attempted to set a new cookie.";
}
if (isset($_COOKIE['websitename'])) {
    echo "Cookie Values:";
    echo "<br />";
        foreach ($_COOKIE['websitename'] as $name => $value) {
            echo "<b>$name</b> : $value <br />\n";
        }
}
echo "<br />";
echo "<a href=logout.php>Logout</a>";
echo "</body>";
echo "</html>";
?>

O değil PHP5 üzerine, benim eski PHP4 sunucu üzerinde çalıştı.

Ben benzer bir sorun vardı ama bu tanımlama kayboldu Chrome'da sadece idi. Firefox iyiydi.

setcookie fonksiyon tüm parametreleri ayarlama düzelttim.

Bu çerez ancak Chrome bir tıklama içinde çerez düşer:

setcookie('uname', 'Joe', time()+3600*24);

Bu çerez ve tarayıcı onu korur:

setcookie('uname', 'Joe', time()+3600*24, '/', 'www.domain.com', false, false);