PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
程序员文章站
2022-04-06 09:45:53
isset();——适合于检测是否存在这个参数。 定义和作用范围:用于测试一个变量是否具有值(包括0,false,或者一个空字串,但不能是null),即:“http://l...
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>
定义和作用范围:用于测试一个变量是否具有值(包括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>