php如何判斷get或post的值是否存在,這個問題困擾了我很長時間,是用isset還是empty還是is_array啥的,請大神給一個指點
回複內容:
php如何判斷get或post的值是否存在,這個問題困擾了我很長時間,是用isset還是empty還是is_array啥的,請大神給一個指點
isset()是判斷這個變數是否定義,empty()是在這個變數已經定義的情況下(如果變數沒定義,將報錯variable is undefinded),判斷這個變數是否為null,Null 字元串,空數組都被empty()視為空白,返回true。舉個例子,比如傳過來一個表單$user('name'=>'tom','nickname'=>''),你想判斷$use['nickname']是都已經被使用者填寫了資料,可以用empty()來判斷,比如你的表單裡面本來有password欄位,但是第三方登入註冊的使用者暫時沒有密碼欄位,這你就需要判斷isset($user['password'])了,isset和empty有本質上的區別,希望我舉的例子可以為你的理解提供協助~
可以利用$_SERVER['REQUEST_METHOD']來判斷是什麼請求類型
可以看看官方的解釋
$_SERVER — 伺服器和執行環境資訊
來來來,手把手教
$apply_name = isset($_POST['apply_name']) ? $_POST['apply_name'] : '';
或者
$apply_name = isset($_GET['apply_name']) ? $_GET['apply_name'] : '';
如果連get和post都不知道,就
$apply_name = isset($_REQUEST['apply_name']) ? $_REQUEST['apply_name'] : '';
我個人的寫法就是[全部檢查],這樣能避免各種錯誤的產生。畢竟安全性跟全面性在普通項目裡面還是用的比較多的。
//我所有的項目都有包括一個custom_function.php的公用檔案。function check_var( $var, $default = ''){ return( (isset($var) and !empty($var )) ? $var : (!empty($default) ? $default : false) ); }// 這樣我就可以在我任何的檔案裡面調用全域函數檢測變數:$array =['id'=>123];var_dump( check_var( $array['id'] ) ); // 輸出 int(123) var_dump( check_var( $array['code'] ) ); // 輸出 bool(false) var_dump( check_var( $array['code'], 'not set') ); // 輸出 string(7) "not set"
先弄清楚 isset、empty、is_null等這些變數判斷函數的作用,再根據你的使用情境去使用對應的函數:
php empty,isset,is_null比較 參考1
php empty,isset,is_null比較 參考2
php empty,isset,is_null比較 參考3
變數判斷附錄