-1

うーん、これは本当に紛らわしいです。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 ... を配置することにより、セッションが開始されていないため、ヘッダーが設定されていないことも知っています。

4

1 に答える 1

1
session_start();
$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);
exit;

見る

于 2012-11-01T21:43:05.127 に答える