我有以下代码行
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 db中不存在时,它仍然会加载页面而不是重定向。
如果我在没有if(mysql_num_rows($subscriptionResult)===1)
的情况下编写!
,那么它确实有用,它可以指示所有流量(包括正确的航线ID)。
我想知道是否有些事我做错了。我也尝试了以下两种变体
if(!$subscriptionResult)
和if($subscriptionResult===FALSE)
,但都没有效果。
这样做的目的是避免让人们尝试手动输入course_id(尤其是那些不存在的)并加载包含内容的页面。
答案 0 :(得分:1)
请改用:
if(!$subscriptionResult || mysql_num_rows($subscriptionResult)!==1)
如果结果为空,或者行数不是1,则会重定向。
我还强烈建议从弃用的mysql_ *查询切换到PDO或mysqli。