うーん、これは本当に紛らわしいです。A と B の 2 つのページがあります。どちらも次のコードを使用します。
$row = mysqli_fetch_array($data);
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['username'] = $row['username'];
setcookie('user_id', $row['user_id'], time() + (60 * 60 * 24 * 30)); // expires in 30 days
setcookie('username', $row['username'], time() + (60 * 60 * 24 * 30)); // expires in 30 days
$home_url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . '/main.php';
header('Location: ' . $home_url);
A は、ヘッダーの設定後にコードを実行し (簡単にするために削除しました)、ヘッダーを設定します。B は、ヘッダーの設定後にコードを実行し、ヘッダーを設定しません。
私は多数の回答をチェックアウトしましたが、空白はありません.main.phpファイルは通常どおりに設定されています.AファイルとBファイルは同じように見えますが、IFステートメントの前の内容が異なります.
エラーは表示されません。リダイレクト (ヘッダーを設定し、それに応じて反応する必要があります) は、B ではログアウトしたかのように動作します (したがって、ヘッダーはアクティブではありません) が、A では意図したとおりに表示されます。
Cookie を設定する 2 つのコード ブロック (どちらも IF ステートメント内) の唯一の違いは、IF ステートメントが異なることです。
A と B のコードの違いについて、どのような点に注意すればよいですか?
(PS: コードの末尾に IF $_SESSION ... を配置することにより、セッションが開始されていないため、ヘッダーが設定されていないことも知っています。