-1

好吧,这真的很令人困惑。我有两个页面,A 和 B。两者都使用以下代码:

 $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 的两个代码块之间的唯一区别(都在 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 回答