php中用于重定向的标头
新代码php中用于重定向的标头,php,html,mysql,header,Php,Html,Mysql,Header,新代码 $count= mysqli_num_rows($result); if ($count==1){ $row=mysqli_fetch_row($result); if(($row[1]==$username) && ($row[2]==$password))
$count= mysqli_num_rows($result);
if ($count==1){
$row=mysqli_fetch_row($result);
if(($row[1]==$username) && ($row[2]==$password))
{
echo $row[1];
$_SESSION["myusername"]= $username;
$_SESSION["mypassword"]= $password;
header("location: login_success.php");
exit();
} else {
echo "No user found";
}
} else {
echo "No rows selected";
//}
mysqli_close($dbc); // Closing Connection
}
}
?>
我修改了代码,但是header语句导致代码停止。如果我删除标题,它将按预期工作。
$username=stripslashes($sent\u username)
是罪魁祸首,因为您将获取的用户名保存在$sent\u user
中,而不是$sent\u username
中。因为这就是您在查询中使用的内容:
$sql="SELECT * FROM $tbl_name WHERE username='$username' and password='$password'";
其中,$username
没有任何意义,如果您回滚并查看它真正包含的内容,即,$username=stripslashes($sent\u username)代码>,现在您看到罪犯$sent\u username
,它在哪里?没有,确实是个打字错误
与此相反:
$sent_user=$_POST['myusername'];
$sent_password=$_POST['mypassword'];
$username = stripslashes($sent_username);
$password = stripslashes($sent_password);
header("location:login_success.php");
试试这个:
$sent_user=$_POST['myusername'];
$sent_password=$_POST['mypassword'];
$username = stripslashes($sent_user);
$password = stripslashes($sent_password);
编辑:
这应该可以解决您的问题,但是有几件事您应该重新检查
1)标题的正确语法:
与此相反:
$sent_user=$_POST['myusername'];
$sent_password=$_POST['mypassword'];
$username = stripslashes($sent_username);
$password = stripslashes($sent_password);
header("location:login_success.php");
使用以下命令:
header("Location: login_success.php");
2)echo
您的查询要查看实际发生的情况,请使用正确的列和正确的值发送正确的表
3)我怎么能忘记最重要的部分呢,不管你对会话做了什么,总是写session_start()代码>在每个文件的代码开头,您打算在其中使用会话
^例如:
删除:
echo $row[1];
在header命令上方。在向客户机提供任何其他输出之前,必须始终出现标题。这是因为在HTTP规范中,头首先出现,并且必须采用正确的格式
如果在将其他内容发送到客户端后尝试在PHP中使用Header,则会触发警告,因为您试图违反HTTP规范。这就是文件中所说的:
记住,在发送任何实际输出之前,必须调用header(),可以是通过普通HTML标记、文件中的空行,也可以是通过PHP。使用include或require函数或其他文件访问函数读取代码,并在调用header()之前输出空格或空行,这是非常常见的错误。使用单个PHP/HTML文件时也存在同样的问题
可能是你的逻辑。您确定$rows==1吗?因为如果没有,它将始终失败。echo$sql=“从$tbl_name中选择*,其中username='$username'和password='$password'代码>你看到了什么?你没有在任何地方显示你的错误。另外,您的代码发生了什么变化?你得到的是空白页吗?如果您得到的是空白页面,请尝试在mysqli_close($dbc)之后回显错误(如果有)代码>编辑:一个旁注是您的代码标题(“location:login_success.php”)
应该是标题(“Location:login_success.php”)代码>。这不会破坏您的代码,但这是正确的方法。感谢您的反馈。我想我使用了一个保留字作为变量行,这可能会让人困惑。我会改变它,看看会发生什么。@FaizAbdelhafid啊,这可能是一个问题。如果这有助于解决您的问题,请不要忘记接受我的答案代码>干杯。