2015-04-02 73 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注入查詢。