从URL中的GET参数发送数据库表中的ID是一种好习惯吗?

时间:2017-02-11 15:00:18

标签: php get

我只想问一件事。我从数据库中选择书籍并将其显示为列表。当用户按书名时,需要他预订内页。我认为这很简单,使用get参数(ID)进行href(此ID参数是从数据库中选择的)。例如:<a href="book/?id=12">Book title</a>。这样做是好的做法吗?或者更好地发送其他参数,而不是id

3 个答案:

答案 0 :(得分:2)

只要查询字符串不包含敏感信息,就可以了。像这样传递ID是绝对正常的,甚至是标准的。

作为旁注,如果您对SEO感兴趣,您可能希望在URL中传递书名,因为URL内容会在一定程度上影响您的排名。因此,拥有像book/{book-id}-{bookname}这样的网址可能是一个好主意,例如book/12344-critique-of-pure-reason

<强>更新

正如@Fred -ii-合理地指出,您必须确保您受到SQL注入的保护。由于您愿意使用简单的整数ID,因此实现起来非常简单(在最基本的层面上):

<?php

if (!empty($_GET['id'])) {

    // Filter value of $_GET['id'] to prevent SQL injection
    //
    // This particular line removes all characters 
    // except digits, plus and minus sign from the passed parameter.
    $requestedId = filter_var($_GET['id'], FILTER_VALIDATE_INT);

    // continue with querying your database

}

所以,确保你这样做,否则你的数据库是不安全的。

答案 1 :(得分:0)

是没问题你也可以发送POST请求而不是GET,我认为会更好。

答案 2 :(得分:0)

解决方案1 ​​

book/?ids=12,13,14

解决方案2:提交表格如下

<input name="id" value="12"/>
<input name="id" value="13"/>
<input name="id" value="14"/>