2015-04-02 74 views
1

我使用的是分页的留言mysqli_real_escape_string,我想保护的“页”与真正的逃生绳 这是我现在有:

$page = (int)(!isset($_GET["page"]) ? 1 : $_GET["page"]); 

如果尝试这样做,但paginations似乎不起作用anymmore:

$page = (int)(!isset($_GET["page"]) ? 1 : mysqli_real_escape_string($_GET["page"])); 

我应该怎么做,使这项工作?

+2

那么如果你[阅读手册](http://php.net/manual/en/mysqli.real-escape-string.php)它说,当程序调用函数的参数是:'mysqli_real_escape_string(mysqli $链接,字符串$ escapestr)'。所以你需要传递mysqli连接作为第一个参数。 – 2015-04-02 23:31:58

+2

如果'$ _GET ['page']'是一个数字,你在技术上不需要转义它。如果你将它转换为int(通过执行'(int)$ _ GET ['page']'),那么没有恶意注入的风险;它将始终转换为数字。 – Atli 2015-04-02 23:34:05

+2

此外,如果您使用MySQLi开始,您确实应该使用准备好的语句,而不是老派转义。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php – Atli 2015-04-02 23:35:22

回答

0

你不需要在这里做任何字符串转义,因为你已经强制变量是一个整数。即使将整数转换为字符串,它也只包含数字,因此任何人都无法将SQL注入查询。