1

PHP の初心者です。ここで何が間違っているのか理解できません。私は決まり文句の記憶機能を実装しようとしていますが、Cookie を機能させることができません。私はこれにかなりの時間を費やしてきました。

これらはすべてパスワード チェック機能にラップされており、ログインとセッションのエコーの両方を完全に行うことができます。しかし、クッキーを設定できないようです。私はMAMPを使用しています。

if($_POST['_remember'] == 'true') {
    $cookie = $_SESSION['user']['id']. '-' .$_SESSION['user']['password']. '-' .$_SESSION['user']['timestamp'];
    setcookie('remedy', $cookie, time() +60*60*24*7, '/', 'localhosttest');
  } else {
    //destroy any previously set cookie
    setcookie('remedy', '', time() -60*60*24*7, '/', 'localhosttest');
  }

echo $_COOKIE['remedy'];

他にあげられるものがあればいいのですが、これしかありません。私はグラフィック デザイナーであり、写真家でもありますが、この種の論理は私の範囲外です。あいまいなタイトルで申し訳ありませんが、より具体的にする方法がわかっている場合は修正します。

また、私の計画は、ユーザー ID、パスワード (ハッシュ化およびソルト化)、およびタイムスタンプをサーバー上で同じ値でチェックすることです。タイムスタンプ値は、ユーザーがサイトを閲覧するたびに更新されます。これは良い習慣ですか?

4

4 に答える 4

2

setcookie() は、クライアントへのサーバー応答とともに送信される Cookie を準備します。$_COOKIE 配列は、クライアントがリクエストを送信したときにのみ設定されます。

setcookie() を実行した後、ユーザーがリクエストした次のページで $_COOKIE 配列を確認します。前のページ リクエストで作成した Cookie が表示されます。

ドキュメント (http://php.net/manual/en/function.setcookie.php) の「次のページの読み込み時」に注意してください。

Cookie が設定されると、次のページ読み込み時に $_COOKIE または $HTTP_COOKIE_VARS 配列を使用してアクセスできます。$_COOKIE などのスーパーグローバルは、PHP 4.1.0 で使用できるようになったことに注意してください。Cookie 値も $_REQUEST に存在します。

于 2012-11-01T14:11:57.010 に答える
1

Chrome コンソールを開く (F12) -> リソース -> クッキー -> yourSite で、クッキーが存在するかどうかを確認できます。

于 2012-11-01T14:17:29.690 に答える
0

Cookie に関する回答については、Rays の回答をご覧ください。

セキュリティ上のリスクがあるため、クライアント側にパスワードを保存しないことを強くお勧めします。

  • http を使用してページを提供する場合、常にパスワードを暗号化せずにインターネット経由で送信します。
  • スパイウェアまたは同じコンピュータの別のユーザーは、ユーザーの資格情報を簡単に見つけることができます

完全に安全な方法でそれを行うことはできません。Cookie 内にランダム ハッシュのみを保存することをお勧めします。これは、ユーザー資格情報と共にデータベースにも保存されます。

于 2012-11-01T15:08:29.097 に答える
0

あなたのドメインは完全修飾ドメインですか? 通常、ドメイン名には . (ドット) を入力して、Cookie を受け入れます。

于 2012-11-01T14:14:39.583 に答える