私はPHPでクッキーを作成しようとすると、ウェブサイトがオンラインのときに保存されません。 私はlocalhost上にいるとき、そのすべてが大丈夫です。例えばウェブサイトがオンラインのときにクッキーを作成する
:
setcookie('user_register', 'username', time() + 3600, '/');
どのように私は、このトラブルシューティングを行うことができますか? cpanelにクッキーの作成を無効にする設定がありますか?
ありがとうございます
私はPHPでクッキーを作成しようとすると、ウェブサイトがオンラインのときに保存されません。 私はlocalhost上にいるとき、そのすべてが大丈夫です。例えばウェブサイトがオンラインのときにクッキーを作成する
:
setcookie('user_register', 'username', time() + 3600, '/');
どのように私は、このトラブルシューティングを行うことができますか? cpanelにクッキーの作成を無効にする設定がありますか?
ありがとうございます
を経て起動します。
<?php
// top of file
Echo "saving cookie";
setcookie('user', 'username', 3600, '/');
?>
これは、ローカルホスト上で動作するかもしれませんが、いつも失敗します実際のPHPサーバ上で。
ますsetcookieはheader
であり、それが最初にクッキーを設定し、出力するようにあなたは、エコーとは、setcookieの場所をchaangeする必要があり、作業上のコードを作成するには、手動http://php.net/manual/en/function.setcookie.php
に述べたように任意の出力の前に配置する必要がありますテキスト:
<?php
// top of file
setcookie('user', 'username', 3600, '/');
Echo "saving cookie";
?>
次に、新しいページに移動するか、ページを更新する必要があります。
PHPで同時にCookieを設定したり読み込んだりすることはできません。
<?php
// top of file
If($_COOKIE(['user']){
Echo $_COOKIE(['user']);
}Else{
setcookie('user', 'username', 3600, '/');
Echo "saving cookie";
}
?>
今、あなたはクッキーを設定し、ページを更新する場合は、同じページ上でそれを読むことができます。だから我々はこのように行うことができますコードを完了するために
。
これは問題でした。私はクッキーを設定する前に出力できなかったことを忘れていました。ありがとう;) – user3306164
次回は、このページにアクセスしたときにCookieが使用されます。したがって、3つの一般的な解決法があります。1.クッキーに保存し、初めてCOOKIEの代わりにPOST変数をエコーします。
setcookie('user', $_POST['user'], time()+3600); // notice time() function
setcookie('pass', $_POST['pass'], time()+3600); // you cant use absolute value here
if (!isset($_COOKIE['user'])) echo $_POST['user'] . ' ' . $_POST['pass'];
else echo $_COOKIE['user'] . ' ' . $_COOKIE['pass'];
を、しかし、あなたが本当にクッキー(非常に悪いアイデア)でパスワードを保存したい場合は、その後、少なくともそれをハッシュ:コードは次のようになります。ハッシュを使用するコードは次のようになります。
setcookie('pass', hash(whirlpool/*algorithm*/, $_POST['pass']/*text*/), time()+3600);
の場合、パスワードを確認するときにハッシュしてハッシュを比較するだけです。
同じリクエストでクッキーを送受信することはできません。ここに試してみる必要がある修正があります
if(isset($_POST['user']) && isset($_POST['pass'])){
setcookie("user",$_POST['user'],3600);
setcookie("pass",$_POST['pass'],3600);
header("location:".$_SERVER['PHP_SELF']);
}
if(isset($_COOKIE['user']) && isset($_COOKIE['user']))
{
echo $_COOKIE["user"] . " " . $_COOKIE["pass"]; // This is line 28
}
ただし、代わりにセッションを使用することをお勧めします。私はあなたが例えば、このような出力以下ますsetcookieを配置していることを考えるように警告している、あなたはそれがローカルホスト上で動作すると言うPHP_SESSION
あなたは完全なコードを投稿できますか? setcookieの前に出力がありますか?それは動作しないようになります。できるだけコード内でsetcookieを高くしてください – Andreas
http://php.net/manual/en/function.error-reporting.php –