好吧,这真的很令人困惑。我有两个页面,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 ... 放在代码末尾。