0

動作しているようです:

if ($_POST['stayloggedin'] == 'stayloggedin') {

    setcookie("user", $_POST['mail'], time()+7*24*60*60, '/', 'subdomain.example.com', false, true);
    setcookie("hash", md5(sha1(md5($_POST['pw']))), time()+7*24*60*60, '/', 'subdomain.example.com', false, true);

}

header("Location: /"); 
exit();

私はコードの上にob_start()を置いたので、それがポイントになるべきではありません。

4

5 に答える 5

13

php.iniファイルでCookieが許可されていることを確認してください。また、機密データをCookieまたはセッション変数に保存しないでください。

提案:代わりに一意のIDを保存してから、データベースにユーザー名やパスワードなどの詳細を照会してください。あなたはそれをあなたがしているようにそれをやってハッキングされることを求めているだけです。

否定的ではなく、ただ役立つ予防の秘訣です。

于 2011-07-06T01:53:16.697 に答える
5

setcookie()関数が呼び出される前に、ブラウザに出力を送信していないことを確認してください。ob_start()「出力前setcookie()」エラーを停止する必要がありますが、正しく実装されていない可能性があります。

于 2011-12-20T00:25:03.087 に答える
3

マイクは正しいです。何かを出力する前に、ページを離れてPHPの実行を強制終了します。ob_start()実際には問題です。(実際にデータを送信する代わりに)出力バッファを開きます。何かを送信したい場合は、バッファを(でob_end_flush())フラッシュするか、PHPスクリプトの通常の終了を待つ必要があります。したがって、あなたの場合、Cookieはまったく送信されません。

于 2012-10-05T09:05:14.570 に答える
1

そのコードスニペットを見ると、問題はCookieがユーザーのブラウザに送信されないことだと思います。Cookieはサーバー側ではなく、クライアント側に保存されます。2つの新しいスクリプトを作成していますが、すぐにexit()を呼び出して、サーバーからユーザーに応答がディスパッチされる前にPHPスクリプトを強制終了します。

于 2012-08-29T15:17:59.490 に答える
0

これを試して

setcookie("user", $_POST['mail'], time()+7*24*60*60, '/', '.example.com');
setcookie("hash", md5(sha1(md5($_POST['pw']))), time()+7*24*60*60, '/', '.example.com');
于 2011-02-26T13:12:25.077 に答える