从页面传递从mysql数据库中选择的数据的id是否安全并使用它来获取并在php中显示更多数据?

时间:2017-10-07 16:58:56

标签: php mysql mysqli

我有一个网页,在连接到数据库并从数据库中选择课程后,课程会显示一个链接以查看每个课程,如下所示:

<div class="col-md-4">

    //query db action and assign the query to $result
    $result = $dbcon->query($query);

    if($result -> num_rows > 0){

        //If courses are available(rows > 0), fetch and display them

        while($row = $result->fetch_object()){

            echo '<h2>'.$row->course_title.'</h2';

            echo '<p>'.$row->course_description.'</p>';

            echo '<a href="view.php?action=view&t='. $row->course_id.'">View Course</a>';
        }
    }

</div>

这是 view.php 页面的代码:

if(isset($_GET['action']) && $_GET['action'] == "view"){

    //Assign var $id to the id from the _GET array
    $id = $_GET['t'];

    //Use the $id to fetch course details from the database
    $query = ("SELECT * FROM courses WHERE course_id = '$id'");

    //Query the db action
    $result = $db_connect->query($query);

    $rows = mysqli_num_rows($result);

    if($result && $rows > 0){

        while($row = $result->fetch_object()){

            echo '<div class="col-md-10">';

                echo '<h1>'.$row->course_title.'</h1>';

                echo '<p>'.$row->course_description.'</p>';

                echo '<div class="col-md-6"><span class="inline-elm">'.$row->course_subject.'</div>';

                echo '<div class="col-md-6"><span>'.$row->course_level.'</p></div>'</div>';
         }
     }
}

我的问题是,我不确定这是否合适,当然是安全的,或者有更安全/更合适的方法。真的很感激你的答案。感谢

1 个答案:

答案 0 :(得分:0)

在网址中传递ID是可以的,但它们应该像任何其他数据一样处理,即正确清理,验证和转义。准备好的声明是一个很好的方法。至少,在这里,因为你期望一个int,你可以这样做:

$id = intval($_GET['t']);

请注意,准备好的语句不能防止在没有将其包装在htmlspecialchars中时执行“echo $ id”时可能发生的XSS漏洞。输入清理总是很好,如果它是一个int,坚持一个intval!你永远不会知道...