0

PHP内でCookieを作成しようとしています。次のコードを使用して:

<?php
//Writing Cookie Data
setcookie("Enabled", "True", time()+3600);
setcookie("Username", $username);
//Test if cookie is set. / Just for test purposes.
echo $_COOKIE["Username"];
?>

Cookie が設定された後、コードを使用して、ユーザーが画像 (リンク) を押すことで次のページに移動できるようにしました。これです :

<a href="folder/index.php"><img src="image.png"></img></a>

次のページで、Cookie が存在するかどうかを確認するコードを使用しました。これです :

<!-- Security Start -->
<?php
If (isset($_COOKIE["Enabled"])) {

}
else
{
header("Location: ../");
}
?>
<!-- Security Stop -->

ユーザーが次のページに移動すると、セキュリティ Cookie が存在しない場合、指定されたフォルダーにリダイレクトされます。私はおそらくすべてを正しくセットアップし、すでに多くのことを確認しましたが、この問題の解決策を思いつきません. Cookie が存在する必要があり、存在します。エコーコードが同じページで機能するためです。しかし、次のページに行った後; Cookie が突然なくなり、存在しません。エコーと、次のページの If ステートメントでの使用はどちらもできません。

これを引き起こす可能性のあるアイデアはありますか?

4

2 に答える 2

0

クッキー

Cookieが必要な場合、これをデバッグするために私が行ういくつかのこと:

パトリックが述べたようにパスを確認します

setcookie の戻り値を見て、失敗したかどうかを確認します。

ブラウザですべての Cookie のリストを表示できるはずです。また、Cookie が実際に設定されているかどうかを確認できます。もう一度、ここでパスを見てください。

代わりにセッションを使用する

ただし、developerwjk によるセッションの推奨事項には同意します。これを行う 1 つの方法は、ページで最初に発生することの 1 つとして「ob_start()」を呼び出すことです。これにより、出力がバッファリングされ、 $_SESSION を操作します。次に、ob_flush() を呼び出して、すべてのセッション処理が終了したらバッファーをフラッシュするようにしてください。そうしないと、ページの最後でバッファーが自動的にフラッシュされると思いますが、すべてが破棄される可能性があります。

于 2013-08-26T19:42:44.257 に答える