0

我有以下几行代码

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 并且如果 mysql 数据库中不存在该 id 时,它仍然会加载页面而不是重定向。

如果我if(mysql_num_rows($subscriptionResult)===1)不写,!那么它确实有效,它会引导所有流量(包括正确的课程 ID)。

我想知道我做错了什么。我也尝试了以下两种变体 if(!$subscriptionResult)if($subscriptionResult===FALSE)但都没有奏效。

这样做的目的是避免让人们尝试手动输入 course_id(尤其是那些不存在的)并加载包含内容的页面。

4

1 回答 1

1

改用这个:

if(!$subscriptionResult || mysql_num_rows($subscriptionResult)!==1)

如果结果为空,或者行数不是 1,这将重定向。

我还强烈建议从已弃用的 mysql_* 查询切换到 PDO 或 mysqli。

于 2013-09-17T19:20:11.823 回答