【发布时间】:2015-12-16 19:47:04
【问题描述】:
我正在尝试学习 PHP,我从一个简单的 CRUD 项目开始。我基本上已经下载了一些源代码,我只是在尝试完成它。当我进入 CRUD 项目的删除部分时,我遇到了这段代码:
include 'connect.php';
$id = $_GET['id']; // What does this line do?
$table = 'book';
$query = "DELETE FROM $table WHERE id_book=$id";
$result = mysqli_query($connect, $query) or die(mysqli_error($connect));
header('location: index.php');
我真的被这句话弄糊涂了:
$id = $_GET['id'];
当我在 Google 上进行一些搜索时,我发现的唯一内容是来自一些类似代码的简短描述,上面写着“从 URL 获取 id”。这对我来说毫无意义。这行实际上做了什么以及存储在 $id 变量中的内容是什么?
【问题讨论】:
-
见过这样的网址
http://www.example.com/index.php?id=123吗? -
在这种情况下,它使您的代码可注入 SQL。它从这样的 URL 读取
42:file.php?id=42。但是,没有执行验证,所以有人可以注入任何东西。 -
昨天看到一个类似的问题。可惜你们不是邻居。
-
查看准备好的语句; php.net/manual/en/mysqli.quickstart.prepared-statements.php。虽然与您的问题无关,但此代码可以很容易地删除您的所有书籍。
-
是的,在担心安全性之前,我只是想了解一切是如何工作的