PHPフォーム検証の3つの関数ISSET()、empty()、is_numeric()の使い方


ISSET()――このパラメータが存在するかどうかを検出するのに適しています。定義と作用範囲:1つの変数が値(0、FALSE、または空の文字列を含むが、NULLではない)を持つかどうかをテストするために使用されます。http://localhost/?fo=」も測定できますので、適用されません。でも、もしhttp://localhost/」パラメータにfoパラメータが含まれていないので、issetで検出できます。この時isset($u)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>