ホームページ >バックエンド開発 >PHPチュートリアル >PHP で setcookie() を使用して設定したにもかかわらず、「username2」Cookie が空白になるのはなぜですか?
セッション処理による空の Cookie のトラブルシューティング
提示された PHP 関数では、ユーザー検証プロセスに「ユーザー名」と「」の両方の Cookie の設定が含まれています。 setcookie() を使用して username2 '。ただし、「username2」Cookie を取得すると、空白のままになります。この問題はさまざまな理由で発生する可能性があります。
Cookie 構成が不完全である
setcookie() 構成全体に必要なパラメータが含まれていることを確認してください:
出力修正
PHP マニュアルの警告「スクリプトからの出力の前に Cookie を送信する必要があります。」に注意してください。すでに送信されているヘッダーを防ぐために、Cookie を設定する前にエコーを避けてください。指定されたコードで、 echo $_COOKIE['username2'];出口(); header("Location: ../new.php"); の前に配置する必要があります。 line.
Validate 関数の最適化
validateUser() 関数は、ロジックやデータベース クエリを使用せずに、セッションとリダイレクトのみを設定するために使用する必要があります。ユーザー検証用と Cookie 設定用に別の関数を作成することを検討してください。
例
validateUser() 関数と Cookie 設定の最適化されたバージョン:
// User validation function function validateUser($username) { session_regenerate_id (); $_SESSION['valid'] = 1; $_SESSION['username'] = $username; } // Cookie setting function function setCookies($username, $password) { setcookie('username', $username, time() + 60 * 60 * 24 * 365, '/'); setcookie('password', $password, time() + 60 * 60 * 24 * 365, '/'); } // Function call if(mysql_num_rows($queryreg) != 0){ $row = mysql_fetch_array($queryreg,MYSQL_ASSOC); $hash = hash('sha256', $row['salt'] . hash('sha256', $password)); if($hash == $row['password']) { if($row['confirm'] == 1){ setCookies($username, $password); validateUser($username); } } }
以上がPHP で setcookie() を使用して設定したにもかかわらず、「username2」Cookie が空白になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。