3

3 つの値で Cookie を設定するか、既に設定されている場合は Cookie の値を取得する簡単なスクリプトを作成しました。PHP4 を実行しているサーバーでは、すべてが機能します。私のサーバーで PHP 5 (5.2.11) を使用している場合、スクリプトはブラウザーで Cookie を設定できません。php.ini で出力バッファリングが有効になっているかどうかを確認しましたが、有効です。なぜこれがうまくいかないのか、誰にもアイデアがありますか?

<?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

4 に答える 4

2

ブラウザに出力する前にCookieを設定する必要があります。すべての行を通話echoの下のどこかに移動してみてください。setcookieあなたはこのようなことをすることができます:

<?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>";
?>
于 2010-02-08T19:34:52.607 に答える
0

出力バッファリングob_start()およびを使用しますob_end_flush()

例:

<?php
    ob_start();
    echo '<p>Initializing…<code></p>';
    setcookie('myLanguage'、'PHP');
    ob_end_flush();
    //ここでPHPコードを続行できます…
?>

于 2011-01-28T18:24:30.517 に答える
0

これは私の古いPHP4サーバーでは機能しましたが、PHP5では機能しませんでした。

于 2010-02-08T19:42:05.760 に答える