我有以下几行代码
if(isset($_GET['course_id'])) {
$data_id = mysql_real_escape_string($_GET['course_id']);
$subscriptionVerification = "SELECT `user_id`, `course_id` FROM subscriptions WHERE `user_id` = '".$user_id."' and `course_id`='".$data_id."'";
$subscriptionResult = mysql_query($subscriptionVerification);
if(!mysql_num_rows($subscriptionResult)===1)
{
header("location:login.php");
die(); // sends user to the login page if their userID and subscription code do not match the page they are trying to retrieve
}
}
问题是,当我从chapters.php?course_id=1234获取course_id时,如果该id不存在于mysql数据库中,它仍然加载页面而不是重定向。
如果我写 if(mysql_num_rows($subscriptionResult)===1)
而没有 !
那么它确实可以工作并引导所有流量(包括正确的类(class) ID) )结束。
我想知道我是否做错了什么。我也尝试过以下两种变体
if(!$subscriptionResult)
和 if($subscriptionResult===FALSE)
但都不起作用。
这样做的目的是避免人们尝试手动输入 course_id(尤其是不存在的)并加载其中包含内容的页面。
最佳答案
改用这个:
if(!$subscriptionResult || mysql_num_rows($subscriptionResult)!==1)
如果结果为空,或者行数不为 1,这将重定向。
我还强烈建议从已弃用的 mysql_* 查询切换到 PDO 或 mysqli。
关于php - 查询失败时脚本不重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18858092/