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 を取得したときに、その id が mysql db に存在しない場合でも、リダイレクトせずにページをロードすることです。

if(mysql_num_rows($subscriptionResult)===1)なしで書く!と、それは機能し、すべてのトラフィック (正しいコース ID を含む) を転送します。

何か間違っているのではないかと思います。次の 2 つのバリエーションも試しました が、どちらも機能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 に答える