【发布时间】:2015-09-01 04:13:39
【问题描述】:
我使用$id = intval( $_REQUEST['id'] ); 来获取我网站上新闻/帖子的ID,新闻的链接是article.php?id=XXX。因此,当有人键入 ?id=1 并且没有任何内容时,它是空的,没有帖子,它应该转到索引页面(index.php)而不是显示空白页面。可能吗?我已经通过 isset 尝试了一些东西,但它没有奏效。谁能帮帮我,拜托。
if($ArticleSQL = $mysqli->query("SELECT * FROM articles WHERE id='$id' ")){
...
}
【问题讨论】:
-
else {header("Location: /");} -
还要小心:你在这里实现了一个 sql 注入漏洞。您想利用
mysqli提供的“准备好的语句”和“参数绑定”的优势来解决这个问题(提示:id='$id'真的邪恶...)。 -
我猜你有一些选择。首先:检查get
isset($_GET['id'])是否存在,如果不存在,使用header("Location: index.php")。第二:通过 POST 发送 id,但这不是一个好的选择。第三:检查你是否从你的 db 得到任何回报,如果没有使用header("Location: index.php"). -
@arkascha 我正在学习,我还不知道使用准备好的语句,但我读到如果它只是数字,则不能注入 SQL。
-
@arkascha 我同意添加更多典型的 SQL 注入预防,但 OP 使用 intval 来确保输入是数字/整数。这不是典型的解决方案,但我想说 OP 意识到了威胁。
标签: php