我有一个网页,在连接到数据库并从数据库中选择课程后,课程会显示一个链接以查看每个课程,如下所示:
<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)
在网址中传递ID是可以的,但它们应该像任何其他数据一样处理,即正确清理,验证和转义。准备好的声明是一个很好的方法。至少,在这里,因为你期望一个int,你可以这样做:
$id = intval($_GET['t']);
请注意,准备好的语句不能防止在没有将其包装在htmlspecialchars中时执行“echo $ id”时可能发生的XSS漏洞。输入清理总是很好,如果它是一个int,坚持一个intval!你永远不会知道...