发新话题
打印

表单验证类 Validator for PHP

表单验证类 Validator for PHP

复制内容到剪贴板
代码:
<title>表单验证类 Validator for PHP β</title>

 <
style>

 
body,td{font:normal 12px Verdana;color:#333333}

 
input,textarea,select,td{font:normal 12px Verdana;color:#333333;border:1px solid #999999;background:#ffffff}

 
table{border-collapse:collapse;}

 
td{padding:3px}

 
input{height:20;}

 
textarea{width:80%;height:50px;overfmin:auto;}

 
form{display:inline}

 </
style>

 <
table align="center">

<
form action="form_Validate.php" method="post">

  <
tr>

   <
td>提示模式:</td><td>

   <
select name="emode">

   <
option value="1">警告提示框(客户端)</option>

   <
option value="2">提示框加红色文字提示</option>

   <
option value="3">附加红色提示</option>

   <
option value="4">警告提示框(服务器端)</option>

   <
option value="5">文字提示(服务器端)</option>

   </
select></td>

  </
tr>

  <
tr>

   <
td>真实姓名:</td><td><input name="Name"></td>

  </
tr>

  <
tr>

   <
td>英文名:</td><td><input name="Nick"></td>

  </
tr>

    <
tr>

   <
td>主页:</td><td><input name="Homepage"></td>

  </
tr>

  <
tr>

   <
td>密码:</td><td><input name="Password"></td>

  </
tr>

  <
tr>

   <
td>重复:</td><td><input name="Repeat"></td>

  </
tr>

  <
tr>

   <
td>信箱:</td><td><input name="Email"></td>

  </
tr>

    <
tr>

   <
td>信箱:</td><td><input name="Email1"></td>

  </
tr>

  <
tr>

   <
td>QQ:</td><td><input name="QQ"></td>

  </
tr>

    <
tr>

   <
td>身份证:</td><td><input name="Card"></td>

  </
tr>

  <
tr>

   <
td>年龄:</td><td><input name="Year"></td>

  </
tr>

   <
tr>

   <
td>年龄1:</td><td><input name="Year1"></td>

  </
tr>

   <
tr>

   <
td>电话:</td><td><input name="Phone"></td>

  </
tr>

   <
tr>

   <
td>手机:</td><td><input name="Mobile"></td>

  </
tr>

     <
tr>

   <
td>生日:</td><td><input name="Birthday"></td>

  </
tr>

   <
tr>

   <
td>邮政编码:</td><td><input name="Zip"></td>

  </
tr>

  <
tr>

   <
td>邮政编码:</td><td><input name="Zip1"></td>

  </
tr>

  <
tr>

   <
td>操作系统:</td><td><select name="OS"><option value="">选择您所用的操作系统</option><option value="Win98">Win98</option><option value="Win2k">Win2k</option><option value="WinXP">WinXP</option></select></td>

  </
tr>

  <
tr>

   <
td>所在省份:</td><td>广东<input name="Province" value="1" type="radio">陕西<input name="Province" value="2" type="radio">浙江<input name="Province" value="3" type="radio">江西<input name="Province" value="4" type="radio"></td>

  </
tr>

  <
tr>

   <
td>爱好:</td><td>运动<input name="Favorite" value="1" type="checkbox">上网<input name="Favorite" value="2" type="checkbox">听音乐<input name="Favorite" value="3" type="checkbox">看书<input name="Favorite" value="4" type="checkbox"></td>

  </
tr>

   <
td>自我介绍:</td><td><textarea name="Description">中文是一个字</textarea></td>

  </
tr>

     <
td>自传:</td><td><textarea name="History">中文是两个字节t</textarea></td>

  </
tr>

  <
tr>

   <
td colspan="2"><input name="Submit" type="submit" value="确定提交"></td>

  </
tr>

  </
form>

 </
table>

 <
script defer>

 
/*************************************************

 Validator for PHP  β 客户端脚本

 code by 我佛山人

 [email]wfsr@cunite.com[/email]

 [url]http://www.cunite.com[/url]

*************************************************/

 
function dispError(itemsmessagesmodeseparator){

 var 
iArray items.split(separator);

 for(var 
i=iArray.length-1;i>=0;i--)

  
iArray[i] = getObj(iArray[i]);

 
messages = ("以下原因导致提交失败:\t\t\t\t" separator messages).split(separator);

 switch(
mode){

  case 
:

   for(
i=iArray.length-1;i>=0;i--)

    
iArray[i].style.color "red";

  case 
:

   
alert(messages.join("\n"));

   
iArray[0].focus();

   break;

  case 
:

   for(
i=iArray.length-1;i>=0;i--){

    try{

     var 
span document.createElement("SPAN");

     
span.id "__ErrorMessagePanel";

     
span.style.color "red";

     
iArray[i].parentNode.appendChild(span);

     
span.innerHTML messages[i+1].replace(/d+:/,"*");

    }

    catch(
e){alert(e.description);}

   }

   
iArray[0].focus();

   break;

 }

 }

 function 
getObj(name){

 var 
objs document.getElementsByName(name);

 return 
objs[objs.length -1];

 }

</script>

<?php

class Validator{

/*************************************************

 Validator for PHP  β 服务器端脚本

 code by 我佛山人

 [email]wfsr@cunite.com[/email]

 [url]http://www.cunite.com[/url]

*************************************************/

 
var $submit;

 var 
$error_item$error_message$error_mode$error_no;

 function 
Validator($submit_name "Submit"$mode 5){

  
$this->submit $submit_name;

  
$this->error_mode $mode;

  
$this->error_no 1;

 }

 function 
Validate($arr){

  if(! isset(
$_POST[$this->submit])) return false;

  
$this->error_mode $_POST["emode"];

  echo 
"<script defer>document.getElementsByName(\"emode\")[0].selectedIndex =" . ($this->error_mode 1) . "</script>";

  if(
is_array($arr)){

   
$len count($arr);

   for(
$i 0$i $len$i++){

    
$this->is_valid($arr[$i]);

   }

  }

  if(
$this->error_no 1

   
$this->display_error();

 }

 function 
is_valid($str){

  
$str split(","$str);

  if(
count($str) < 3) return false;

  
$name trim($str[0]);

  
$message trim($str[1]);

  
$data_type trim($str[2]);

  
$value trim($_POST[$name]);

  switch(
$data_type){

   case 
"compare" :

    break;

   case 
"range" :

    break;

   case 
"repeat" :

    break;

   default :

    
$method "is_".$data_type;

    if(!
$this->$method($value))

     
$this->add_error($name$message);

    break;

  }

 }

 function 
add_error($name$message){

  
$this->error_item .= "," $name;

  
$this->error_message .= "," $this->error_no ":" $message;

  
$this->error_no ++;

 }

 function 
display_error(){

  
$this->error_item ereg_replace("^,+"""$this->error_item);

  
$this->error_message ereg_replace("^,+"""$this->error_message);

  switch(
$this->error_mode){

   case 
:

    
$info "以下原因导致提交失败:\t\t\t\t,";

    echo 
"<script>alert(\"".join("\\n"split(","$info $this->error_message))."\")</script>";

    
//print >>>end;

    
break;

   case 
:

    echo 
"输入有错误:<br /><ul><li>" ereg_replace"\b\d+:""",join("</li><li>"split(","$this->error_message))) . "</li></ul>";

    echo 
"<br /><a href='javascript:history.back()'>返回</a>";

    exit;

    break;

   default :

    echo 
"<script defer>dispError(\"" $this->error_item "\", \"" $this->error_message "\", " $this->error_mode ", \",\")</script>";

   break;

  }

 }

 function 
is_email($str){

  return 
preg_match("/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/"$str);

 }

 function 
is_url($str){

  return 
preg_match("/^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"])*$/"$str);

 }

 function 
is_qq($str){

  return 
preg_match("/^[1-9]\d{4,8}$/"$str);

 }

 function 
is_zip($str){

  return 
preg_match("/^[1-9]\d{5}$/"$str);

 }

 function 
is_idcard($str){

  return 
preg_match("/^\d{15}(\d{2}[A-Za-z0-9])?$/"$str);

 }

 function 
is_chinese($str){

  return 
ereg("^[".chr(0xa1)."-".chr(0xff)."]+$",$str);

 }

 function 
is_english($str){

  return 
preg_match("/^[A-Za-z]+$/"$str);

 }

 function 
is_mobile($str){

  return 
preg_match("/^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/"$str);

 }

 function 
is_phone($str){

  return 
preg_match("/^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/"$str);

 }

 function 
is_safe($str){

  return (
preg_match("/^(([A-Z]*|[a-z]*|\d*|[-_\~!@#\$%\^&\*\.\(\)\[\]\{\}<>\?\\\/\'\"]*)|.{0,5})$|\s/"$str) != 0);

 }

}

$v = new Validator();

$v ->Validate(array("Name,名字只允许中文,chinese""Nick, 只允许英文昵称, english""Homepage, 主页Url格式不正确, url""Password, 密码不符合安全规则, safe","Email,信箱格式错误,email""QQ, QQ号码不存在, qq","Card, 身份证号码不正确, idcard","Phone, 电话号码不存在, phone","Mobile, 手机号码不存在, mobile","Zip, 邮政编码不存在, zip"));

?>

TOP

发新话题