关闭。这个问题需要更多 focused .它目前不接受答案。
想改进这个问题?更新问题,使其仅关注一个问题 editing this post .
8年前关闭。
Improve this question
好吧,这真的很令人困惑。我有两个页面,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 语句之前具有不同的内容,这是铁定的。
没有出现错误;重定向(应该设置标题并做出相应的 react ,就像您在 B 上注销(因此没有事件的标题)一样),而在 A 上则显示为预期。
设置 cookie 的两个代码块之间的唯一区别(都在 IF 语句中)是 IF 语句是不同的,根据它出现之前的代码。
就 A 和 B 的代码之间的差异而言,我应该注意哪些(如果有的话)?
(PS:我也知道没有设置标题,因为 session 没有开始,通过将 IF $_SESSION ... 放在代码末尾。
最佳答案
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;
看
关于php - 未设置 Cookie,但其余代码正在执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13185770/