2017-10-07 17 views
0

我有一个网页连接,并从数据库中选择课程后,课程将显示一个链接,查看下面的每个过程:是安全的传递从MySQL数据库跨页选择的数据的标识,并用它来获取和PHP显示更多的数据?

<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>'; 
     } 
    } 
} 

我的问题是,我不知道这是否是正确的,当然,安全做或有做它一个更安全/有道。会真的很感激你的答案。由于

+0

你的代码是不是安全的;用事先准备好的声明 –

+0

我如何在这里使用预处理语句? – Nayi

+1

您可以使用用户输入查询?当然,但现在你这样做的方式*是不安全的。看看[这个问题](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)来获取如何保护自己 –

回答

0

它的优良传内的URL标识,但他们应该像任何其他数据进行处理,即适当处理,验证和逃脱。准备好的声明是做这件事的好方法。最起码,在这里,因为你期望一个int,你可以这样做:

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

注意,预处理语句不防止,如果这样做“回声$ ID”没有用htmlspecialchars包裹它可能会出现的XSS漏洞。输入消毒总是很好,如果它是一个int,那么坚持一个intval!你永远不知道...

相关问题