天天看點

表單驗證的3個函數ISSET()、empty()、is_numeric()的使用方法

本文就簡單講一下php中表單驗證的三個函數,應該比較常用吧,最後給一些示例,請看下文。

ISSET();——适合于檢測是否存在這個參數。

定義和作用範圍:用于測試一個變量是否具有值(包括0,FALSE,或者一個空字串,但不能是NULL),即:“http://localhost/?fo=”也是可以通過檢測,是以不适用。但如果是“http://localhost/”參數中并不含fo參數,就可以用isset來檢測,此時isset($_GET['fo'])傳回false。

不适用于:該函數不适合于驗證html表單中的文本的有效方式。要檢查使用者輸入文本是否有效,可以用empty();

empty();——最好用的一個函數。

定義和作用範圍:用于檢查變量是否具有空值:包括:空字串,0,null 或false,即:“http://localhost/?fo=”或“http://localhost/?fo=0”時,empty檢測出來的結果都是ture,不适用範圍:不适用于檢測可為0的參數。

is_numeric();——隻适用于檢測數字,但假如參數名不存在,會出錯,是以不适合于第一層檢測。

綜合示例:

<?php

ini_set("display_errors",1);

//ini_set("error_reporting",E_ALL); print_r

error_reporting(E_ALL);

$a=NULL;

if(isset($a))echo '變量$a的isset為真';

echo '<h2>isset的情形:</h2>';

if(isset($_GET['fo'])){

echo '變量/'fo/'的isset為真,變量可用';

}else{

echo '變量/'fo/'的isset為假,無變量設定';

}

echo '<h2>empty的情形:</h2>';

if(empty($_GET['fo'])){

echo '變量/'fo/'的empty為真,即空值或無效值';

echo '變量/'fo/'的empty為假,有值';

echo '<h2>is_numeric的情形:</h2>';

if(is_numeric($_GET['fo'])){ //在參數中無fo參數時,則出錯。

echo '變量/'fo/'的is_numeric為真,是數字';

echo '變量/'fo/'的is_numeric為假,不是數字';

echo "<h2>/$_GET['fo']=''的情形:</h2>";

if($_GET['fo']==''){ //在參數中無fo參數時,則出錯。

echo 'fo無值,空的字元串';

}elseif($_GET['fo']!=''){

echo 'fo有值,不為/'/'.';

echo "<h2>/$_GET['sex']='m'的情形:</h2>";

if($_GET['sex']=='m'){ //當參數中無sex變量時就會出錯。

echo '男的';

}elseif($_GET['sex']=='f'){

echo '女的';

?>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>無标題文檔</title>

</head>

<body>

</body>

<p>

<a href="?fo=Jack">傳有效值</a> <a href="?fo=">傳空值</a> <a href="?fo=0">傳0值</a>

<br /><br />

<a href="?sex=m">性别:男</a> <a href="?sex=f">性别:女</a>

<a href="/">清空</a>

<input type="text" value="<?php echo $_GET['fo']!=''?$_GET['fo']:'';?>" size="155" />

</p>

</html>