PHP判斷變數是否存在並且己賦值安全的寫法

2021-06-16 05:27:11 字數 633 閱讀 6256

php程式設計中,我們會經常遇到需要判斷乙個變數($_get,$_post,$_request)是否存在並且是否有賦值。這個時候如果我們不小心去寫,那麼就有可能會導致注入式漏洞的產生。特別是涉及到資料庫操作的時候,這種行為就更加明顯。

下面通過乙個例項來講解如何書寫正確的語句,規避潛在的可能產生的漏洞。我們需要獲取$_get['id']的值,為下面的資料庫查詢做準備。

<?php

$id = 0;

if(isset($_get['id']) && !empty($_get['id']))

if($id < 0)

?>
intval強制轉換成數字的問題。數字大於2147483647會出現溢位出現負數,但是在一般情況下,數字不會超過這麼大。所以 按照上面的寫法 ,應該是沒問題 的。

先給$id變數設乙個值,為0,接下來判斷$_get['id']是否有設定,並判斷下是否為空值。如果不為空,就取整數,如果為負數,就是溢位的情況 ,給它強制性設為0.這樣就能確保後面所得的$id值為安全值,不存在除整數外其它的情況出現。

如果是字串型別的變數,在插入資料庫之前,要用mysql_real_escape_string方法處理下字串,避免注入式漏洞。

php判斷變數是否存在

主要包含三個方法isset,empty,is null 寫這篇的目的主要是為了在平時做健壯性的時候的一些總結,舉例子肯定簡單,因為已經知道此資料的結構,但是實操中情況非常複雜不知道過來的是什麼結構的資料是很稀鬆平常的事。bool isset mixed va r m ixedva r m ixed ...

php判斷變數是否存在

isset 檢測變數是否設定,isset 只能用於變數,因為傳遞任何其它引數都將造成解析錯誤。若想檢測常量是否已設定,可使用 defined 函式。如果已經使用 unset 釋放了乙個變數之後,它將不再是 isset 若使用 isset 測試乙個被設定成 null 的變數,將返回 false。同時要...

php 判斷檔案是否存在

sha1 file file 語法 sha1 file file,raw 引數 file 必需。規定要計算的檔案。raw 可選。布林值,規定十六進製制或二進位制輸出格式 true 原始 16 字元二進位制格式 false 預設。32 字元十六進製制數 版本 php 4.2.0 說明 sha1 fil...