这是代码:
if($rowCheck>0) {
session_start();
while($row = mysql_fetch_assoc($check)) {
$_SESSION['developer'] = $row;
}
header("Location: http://".$_SERVER['SERVER_NAME']."/index.php");
}
else
echo 'Invalid Password or Email!';
除了header
之外,一切都工作正常,如果我在header
之后写一个echo
,它将正常工作。另外,如果我打印了location
,它将向我显示准确和正确的location
。
我在 mamp 和 macos 上运行。所以它是在本地主机上。
有什么帮助吗?
正如 scott 所说,你需要在标头后使用 exit() 或 die()。
另外,检查在打开和关闭 php 标签之前或之后是否没有空格,如下所示:
<?php
这将导致标头函数失败,因为它被视为输入。还应检查任何相关的包含文件。
在
标题行后添加 exit() 或 die()。标头函数不会停止脚本其余部分的执行。
只需注释所有内容并粘贴在header("Location: http://".$_SERVER['SERVER_NAME']."/index.php");
的右开头,看看它是否正常工作。如果没有,请检查 BOM 编码。
几件事。
首先,我会ini_set("display_errors", 1);
放在PHP代码中页面的最顶部。 您可能会收到"标头已发送"错误。
在标头后添加退出以防止脚本继续前进:
header("Location: http://".$_SERVER['SERVER_NAME']."/index.php");
exit;
最后,这一点没有意义。
while($row = mysql_fetch_assoc($check)) {
$_SESSION['developer'] = $row;
}
您只需设置一次该会话变量,因此不需要 while。您还将它设置为等于mysql资源(您可能打算这样做),但也许您只需要一列
$row = mysql_fetch_assoc($check);
$_SESSION['developer'] = $row['username'];