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

y0umer發表於2011-03-14

本文就簡單講一下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為真,即空值或無效值`;
}else{
echo `變數/`fo/`的empty為假,有值`;
}

echo `<h2>is_numeric的情形:</h2>`;
if(is_numeric($_GET[`fo`])){ //在引數中無fo引數時,則出錯。
echo `變數/`fo/`的is_numeric為真,是數字`;
}else{
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 `女的`;
}
?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>
<html xmlns=”http://www.w3.org/1999/xhtml“>
<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>
<br /><br />
<a href=”/”>清空</a>
<br /><br />
<input type=”text” value=”<?php echo $_GET[`fo`]!=“?$_GET[`fo`]:“;?>” size=”155″ />
</p>
</html>


相關文章