php 表单验证过滤类

 更新时间:2016年11月25日 15:14  点击:1431
下面来看一下吧,这款php表单验证类用来判断过滤form来的值哦。

class post_get{
private $array; #提交表单检测字段和检测要求
# $type;  缺省为更新 或$type ="Into";  
public function _post_get($array,$type=""){
  if(!$array) die(" Error!! ");
   foreach ($array as $v)
   {
   $KK = $this->ck_split($v);
   $KKarray = split("_", $KK);
   if(preg_match("/Yes|No/is",$KKarray[1]))
    {
    $escape_filter = ($KKarray[2])? 'ck_'.$KKarray[2]:"";#需要转义和过滤
    $data = ($escape_filter)? $this->$escape_filter($_POST[$KKarray[0]]):$_POST[$KKarray[0]]; #输出合法数据
       if($data)
     {
     if(is_array($data))$data = implode(",",$data);
     $Into_data  .=",'$data'";
     $Into_Field.=",`$KKarray[0]`";
     $Updat_array[] ="`$KKarray[0]` = '$data'";
     }
    }
    else $error .= ($KK)? "[".$KK."],":"";
   }
   $_data=(!$type)? $Updat_array:array("$Into_Field","$Into_data");
   return (!$error)? $_data:$this->ck_script($error); # 数组为合法表单验证结果,字符串为错误信息提示
  }
public function ck_split($str){
  $strarray = explode(",",$str);
  foreach ($strarray as $i=> $var)
   if(0 ===$i)
   $name = trim($var);
  elseif(1===$i)
   {
   if(eregi("No",trim($var))&&!$_POST[$name])break;     #缺省忽略,否则...
   else $_type = (trim($var))? $name.'_'.trim($var):""; #检测后动作
   }
   elseif(2===$i)
   {
    $error = trim($var);
    if(!$_POST[$name])
    {
     $_error = $error;
     break;
    }
   }
   else # 检测部分
   {
    if(!trim($var))break;
    if(is_array($_POST[$name]))
    {
     foreach ($_POST[$name] as $_var)
      {
      $_error= ($this->ck_open($_var,trim($var)))?"":$error;
      if($_error)break;
      }
    }
    else
     {
     $_error= ($this->ck_open($_POST[$name],trim($var)))?"":$error;
     if($_error)break;
     }
   }
   return ($_error)? """.$name."","".$_error.""":$_type;
   }
# 窗口js提示
public function ck_script($str){
$str= trim($str,",");
  $str =  "
  <script>
  var str = new Array( $str );
  for (i=0; i < str.length; i++)
  {
  document.getElementById('J'+str[0]+'').innerHTML= str[1];
  }
  </script>
  ";
return $str;
}
# 类型判断
public function ck_detected($str){
  return (eregi("^[a-zA-Z]*$",$str))? 'ck_'.$str:'ck_Length';
}
# 函数调用
public function ck_open($string,$str){
  $functi = $this->ck_detected($str);
  return ($this->$functi($string,$str))? true:false;
}
#-------------------------------------以下为检测函数  
# 长度
public function ck_Length($string,$str){
  $len = split('-',trim($str));
  return (strlen($string) > ($len[0]-1) && strlen($string) < ($len[1]+1))? true:false;
}
# 价格
public function ck_money($str){
  return preg_match("/^(-|+)?d+(.d+)?$/",$str);
}
# 邮件
public function ck_email($str){
  return preg_match("/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/", $str);
}
# 网址
public function ck_url($str){
  return preg_match("/^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-&_~`@[]':+!]*([^<>"])*$/", $str);
}
# 数字型
public function ck_num($str){
  return is_numeric($str);
}
# 中文
public function ck_cn($str){
  return preg_match("/^[x7f-xff]+$/", $str);
}
# 字母
public function ck_en($str){
  return preg_match("/^[A-Za-z]+$/", $str);
}
# 数字字母混合
public function ck_numen($str){
  return preg_match("/^([a-zA-Z0-9_-])+$/",$str);
}
# 电话号码
public function ck_tel($str){
  return ereg("^[+]?[0-9]+([xX-][0-9]+)*$", $str);
}
# 敏感词
public function ck_key($str){
  Global $badkey;
  return (!preg_match("/$badkey/i",$str));
}
#-----------------------------------------------------输出
# 字符替换
public function ck_filter($str){
  $str=(is_array($str))? implode(",",$str):$str;
  $str=HTMLSpecialChars($str); //将特殊字元转成 HTML 格式。
  $str=nl2br($str); //将回车替换为<br>
  $str=str_replace(array(" ",'<? '),array(" ",'< ?'),$str); //替换空格替换为
  return $str;
}
# MD5加密
public function ck_md($str){
  return  MD5($str);
}
# 转义
public function ck_escape($str){
  return  (is_array($str))? implode(",",$str):$str;
}
# 有条件注销(数字)
public function ck_cancel($str){
  return (!is_numeric($str))? $str:"";
}
# 无条件注销(数字)
public function ck_delete(){
  return null;
  }
}

php 文件上传


 
     
    
     
 第十章(1)文件上传(一)
一.表单提交:
接收普通表单信息的数组有: $_GET    $_POST    $_REQUEST<不能确定表单的接收方式>
接收文件上传信息的函数有: $_FILES
同时做多个上传文件的表单的时候,表单不能同名.
如果要做文件上传<form>表单必须要改加的:
1.method="post"
2.enctype="multipart/form-data"
3.要加的:<input type="hidden" name="MAX_FILE_SIZE" value="100000">
二.对文件的操作:
text 文件类型:
text/html    .html    .htm
text/plain    .txt    .log
image 图片类型:
image/gif    .gif
image/jpeg    .jpeg    .jpg
image/png    .png
audio 声音类型:
audio/x-midi  mid    .midi    ,mid
audio/x-wav    .wav
video/quicktime    .qt    .mov
video/mpeg    .mpeg
application 文件类型:
application/pdf    .pdf
application/msword    .doc    dot
application/vnd.ms-excel    .xls
application/vnd.ms-powerpoint    .ppt
application/zip    .zip
application/rar    .rar
application/xml    .xml    .xsl
application/mshelp    .hlp    .chm
application/octet-stream    .ext    .bin    .com    .dll    .class
is_uploaded_file(目标文件名称) 判断是否是上传文件的函数.
move_uploaded_file(1.目标文件名称 2.移动到的位置名称) 将上传的文件移动到新的位置的函数.
     第十章(3)上传多个文件和文件下载处理
continue:在循环结构中使用,用来跳过本次循环中剩余代码并开始执行下一次循环.
其详细内容可参见php视频.

HTML表单中主要包括下列元素:
button 普通按钮    radio 单选按钮    checkbox 复选框    select 下拉菜单    text 单行文本框    textrea 多行文本框    submit 提交按钮    reset 重填按钮
用HTML设计表单常用的标记是:<form>,<input>,<option>,<select>,<textarea>和<isindex>等标记.
1.<form>表单标记:该标记的主要作用是设置表单的起止位置,并指定处理表单数据程序的文件名或URL地址,其基本语法结构是: <form action=url method=get|post name=value onreset=function onsubmit=function target=window> </form>
action :用于设置处理表单数据程序url的地址,这样的程序通常是CGI应用程序,采用电子邮件方式时,用action="mailto:你的邮件地址".
method :指定数据传送到服务器的方式,有两种主要方式:当method=get时,将输入数据加在action指定的地址后面传送到服务器,当method=post时,则将输入的数据按照HTTP传输协议中的post传输方式传送到服务器,用电子邮件接收用户信息时在用这种方式.
name :用于设置表单的名称.
onrest和onsubmit :主要针对reset和submit按钮,它们分别设置了在按下相应的按钮之后要执行的子程序.
target :指定输入数据结果显示在哪个窗口,需要<frame>标记配合使用.
2.<input>表单输入标记:此标记在表单中使用频繁,大部分表单内容需要用到此标记,其语法是:<inpur aligh=left|right|middle|top|bottom name=value type=text|textarea|password|checkbox|radio|submit|reset|file|hidden|image|button value=value src=url checked maxlength=n size=n onclick=function onselect=function>
align :用于设置表单的位置是靠左(left),靠右(right),靠中(middle),靠上(top),靠下(bottom).
name :设置当前变量名称.
type :决定了输入数据的类型,各项的意思是:
type=text :表示输入单行文本.
type=textarea :表示输入多行文本.
type=password :表示输入的数据为密码,用星号表示.
type=checkbox :比赛哦是复选框.
type=radio :表示单选框.
type=submit :表示提交按钮,数据将被送到服务器.
type=reset :表示清除表单数据,以便重新输入.
type=file :表示插入一个文件.
type=hidden :表示隐藏按钮.
type=image :表示插入一个图片.
type=bueeon :表示普通按钮.
value :用于设置输入默认值,即如果用户不输入的化,就采用默认值.
src :是针对type=image的情况来说的,用于设置图像文件的地址.
checked :表示选择框中此项被默认选中.
maxlength :表示在输入单行文本时的最大的输入字符个数.
size :用于设置在输入多行文本时的最大输入字符数,采用width,height方式.
onclick :表示在按下输入时调用指定的子程序.
onselect :表示当前项被选择时调用指定的子程序.
3.<select>下拉菜单标记:用<select>标记可以在表中插入一个下拉菜单,它需与<option>标记联用,因为下拉菜单的每个选项要用<option>标记来定义,<select>标记的语法是:<select name=nametext size=n multiple>
name :设置下拉菜单的名称.
size :设置菜单框的高度,也就是一次显示几个菜单项,一般默认值(size="1").
multiple :设置为可以进行多选.
4.<option>选项标记:该标记为下拉菜单中的一个选项其语法是:<option delected value=value>
selected :表示当前项被默认选中.
value :表示该项对应的值在该项被选中之后,该项的这就会被发送到服务器进行处理.
5.<textarea>多行文本输入标记:这是一个建立多行文本输入框的专用标记,其语法是:<textarea name=name cols=n rows=n wrap=off|hard|soft>
name :文本框名称.
clos :宽度.
rows :高度.(行数)
wrap :换行控制.
off :不自动换行.
hard :自动硬回车换行,换行标记一同被传送到服务器中去.
soft :自动软回车换行,换行标记不会传送到服务器中去.
     数据库

在很多编程语言中引用(&)是少不了的,下面我们来看看php引用(&)实例教程

php的引用(就是在变量或者函数、对象等前面加上&符号)

在PHP 中引用的意思是:不同的名字访问同一个变量内容.
与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存放的地址

变量的引用

PHP 的引用允许你用两个变量来指向同一个内容
复制PHP内容到剪贴板
PHP代码:

<?
$a="ABC";
$b =&$a;
echo $a;//这里输出:ABC
echo $b;//这里输出:ABC
$b="EFG";
echo $a;//这里$a的值变为EFG 所以输出EFG
echo $b;//这里输出EFG
?>


函数的传址调用
传址调用我就不多说了 下面直接给出代码
复制PHP内容到剪贴板
PHP代码:
function test(&$a)
{
$a=$a+100;
}
$b=1;
echo $b;//输出1
test($b);  //这里$b传递给函数的其实是$b的变量内容所处的内存地址,通过在函数里改变$a的值 就可以改变$b的值了
echo "<br>";
echo $b;//输出101


要注意的是,在这里test(1);的话就会出错,原因自己去想

函数的引用返回
先看代码
复制PHP内容到剪贴板
PHP代码:
function &test()
{
static $b=0;//申明一个静态变量
$b=$b+1;
echo $b;
return $b;
}

$a=test();//这条语句会输出 $b的值 为1
$a=5;
$a=test();//这条语句会输出 $b的值 为2

$a=&test();//这条语句会输出 $b的值 为3
$a=5;
$a=test();//这条语句会输出 $b的值 为6


下面解释下: 
通过这种方式$a=test();得到的其实不是函数的引用返回,这跟普通的函数调用没有区别 至于原因: 这是PHP的规定
PHP规定通过$a=&test(); 方式得到的才是函数的引用返回
至于什么是引用返回呢(PHP手册上说:引用返回用在当想用函数找到引用应该被绑定在哪一个变量上面时。) 这句狗屁话 害我半天没看懂

用上面的例子来解释就是
$a=test()方式调用函数,只是将函数的值赋给$a而已, 而$a做任何改变 都不会影响到函数中的$b
而通过$a=&test()方式调用函数呢, 他的作用是 将return $b中的 $b变量的内存地址与$a变量的内存地址 指向了同一个地方
即产生了相当于这样的效果($a=&b;) 所以改变$a的值 也同时改变了$b的值 所以在执行了
$a=&test();
$a=5;
以后,$b的值变为了5

这里是为了让大家理解函数的引用返回才使用静态变量的,其实函数的引用返回多用在对象中

对象的引用
复制PHP内容到剪贴板
PHP代码:

<?
class a{
 var $abc="ABC";
 }
$b=new a;
$c=$b;
echo $b->abc;//这里输出ABC
echo $c->abc;//这里输出ABC
$b->abc="DEF";
echo $c->abc;//这里输出DEF
?>


以上代码是在PHP5中的运行效果
在PHP5中 对象的复制 是通过引用来实现的。上列中$b=new a; $c=$b; 其实等效于$b=new a; $c=&$b;
PHP5中默认就是通过引用来调用对象, 但有时你可能想建立一个对象的副本,并希望原来的对象的改变不影响到副本 . 为了这样的目的,PHP定义了一个特殊的方法,称为__clone.

引用的作用
如果程序比较大,引用同一个对象的变量比较多,并且希望用完该对象后手工清除它,个人建议用 "&" 方式,然后用$var=null的方式清除. 其它时候还是用php5的默认方式吧. 另外, php5中对于大数组的传递,建议用 "&" 方式, 毕竟节省内存空间使用。


取消引用
当你 unset 一个引用,只是断开了变量名和变量内容之间的绑定。这并不意味着变量内容被销毁了。例如:

<?php
$a = 1;
$b =& $a;
unset ($a);
?> 

不会 unset $b,只是 $a。


global 引用
当用 global $var 声明一个变量时实际上建立了一个到全局变量的引用。也就是说和这样做是相同的:

<?php
$var =& $GLOBALS["var"];
?> 

这意味着,例如,unset $var 不会 unset 全局变量。

$this
在一个对象的方法中,$this 永远是调用它的对象的引用。


//下面再来个小插曲
php中对于地址的指向(类似指针)功能不是由用户自己来实现的,是由Zend核心实现的,php中引用采用的是“写时拷贝”的原理,就是除非发生写操作,指向同一个地址的变量或者对象是不会被拷贝的。

通俗的讲
1:如果有下面的代码
复制PHP内容到剪贴板
PHP代码:
$a="ABC";
$b=$a;


其实此时 $a与$b都是指向同一内存地址 而并不是$a与$b占用不同的内存

2:如果在上面的代码基础上再加上如下代码
复制PHP内容到剪贴板
PHP代码:
$a="EFG";


由于$a与$b所指向的内存的数据要重新写一次了,此时Zend核心会自动判断 自动为$b生产一个$a的数据拷贝,重新申请一块内存进行存储

php在文件上传方面比起asp来说方便了很多,记得用asp文件上传时那麻烦了,现在我们下看看php 文件上传入门教程吧。

一.表单提交:
接收普通表单信息的数组有: $_GET    $_POST    $_REQUEST<不能确定表单的接收方式>
接收文件上传信息的函数有: $_FILES
同时做多个上传文件的表单的时候,表单不能同名.
如果要做文件上传<form>表单必须要改加的:
1.method="post"
2.enctype="multipart/form-data"
3.要加的:<input type="hidden" name="MAX_FILE_SIZE" value="100000">
二.对文件的操作:
text 文件类型:
text/html    .html    .htm
text/plain    .txt    .log
image 图片类型:
image/gif    .gif
image/jpeg    .jpeg    .jpg
image/png    .png
audio 声音类型:
audio/x-midi  mid    .midi    ,mid
audio/x-wav    .wav
video/quicktime    .qt    .mov
video/mpeg    .mpeg
application 文件类型:
application/pdf    .pdf
application/msword    .doc    dot
application/vnd.ms-excel    .xls
application/vnd.ms-powerpoint    .ppt
application/zip    .zip
application/rar    .rar
application/xml    .xml    .xsl
application/mshelp    .hlp    .chm
application/octet-stream    .ext    .bin    .com    .dll    .class
is_uploaded_file(目标文件名称) 判断是否是上传文件的函数.
move_uploaded_file(1.目标文件名称 2.移动到的位置名称) 将上传的文件移动到新的位置的函数.

转载注明:www.111cn.net/phper/php.html

在php在上传文件简单到了极点哦,我们只要用php自带的函数move_uploaded_file就可以快速的开发出文件上传功能哦。

第十章(1)文件上传(一)
一.表单提交:
接收普通表单信息的数组有: $_GET    $_POST    $_REQUEST<不能确定表单的接收方式>
接收文件上传信息的函数有: $_FILES
同时做多个上传文件的表单的时候,表单不能同名.
如果要做文件上传<form>表单必须要改加的:
1.method="post"
2.enctype="multipart/form-data"
3.要加的:<input type="hidden" name="MAX_FILE_SIZE" value="100000">
二.对文件的操作:
text 文件类型:
text/html    .html    .htm
text/plain    .txt    .log
image 图片类型:
image/gif    .gif
image/jpeg    .jpeg    .jpg
image/png    .png
audio 声音类型:
audio/x-midi  mid    .midi    ,mid
audio/x-wav    .wav
video/quicktime    .qt    .mov
video/mpeg    .mpeg
application 文件类型:
application/pdf    .pdf
application/msword    .doc    dot
application/vnd.ms-excel    .xls
application/vnd.ms-powerpoint    .ppt
application/zip    .zip
application/rar    .rar
application/xml    .xml    .xsl
application/mshelp    .hlp    .chm
application/octet-stream    .ext    .bin    .com    .dll    .class
is_uploaded_file(目标文件名称) 判断是否是上传文件的函数.
move_uploaded_file(1.目标文件名称 2.移动到的位置名称) 将上传的文件移动到新的位置的函数.

[!--infotagslink--]

相关文章

  • cmd下过滤文件名称的两种方法

    这篇文章主要介绍了cmd下过滤文件名称的两种方法,需要的朋友可以参考下...2020-06-30
  • Django def clean()函数对表单中的数据进行验证操作

    这篇文章主要介绍了Django def clean()函数对表单中的数据进行验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-09
  • JavaScript实现密码框输入验证

    这篇文章主要为大家详细介绍了JavaScript实现密码框输入验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-01
  • Nest.js 授权验证的方法示例

    这篇文章主要介绍了Nest.js 授权验证的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-02-22
  • el-table树形表格表单验证(列表生成序号)

    这篇文章主要介绍了el-table树形表格表单验证(列表生成序号),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2020-06-01
  • selenium 反爬虫之跳过淘宝滑块验证功能的实现代码

    这篇文章主要介绍了selenium 反爬虫之跳过淘宝滑块验证功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-08-27
  • vue element table中自定义一些input的验证操作

    这篇文章主要介绍了vue element table中自定义一些input的验证操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2020-07-18
  • js canvas实现滑块验证

    这篇文章主要为大家详细介绍了js canvas实现滑块验证,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-03-14
  • vue实现表单验证小功能

    这篇文章主要为大家详细介绍了vue实现表单验证小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-09-29
  • JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)

    这篇文章主要介绍了JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结,非常不错,具有参考借鉴价值,需要的朋友参考下吧...2017-06-15
  • JavaScript表单验证示例详解

    这篇文章主要为大家详细介绍了JavaScript表单验证示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-04
  • Python验证的50个常见正则表达式

    这篇文章主要给大家介绍了关于利用Python验证的50个常见正则表达式的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-11
  • javascript数据类型验证方法

    这篇文章主要为大家分享了一个简单的javascript数据类型验证方法,感兴趣的小伙伴们可以参考一下...2016-01-05
  • PHP正则表达式过滤html标签属性(DEMO)

    这篇文章主要介绍了PHP正则表达式过滤html标签属性的相关内容,实用性非常,感兴趣的朋友参考下吧...2016-05-06
  • jQuery实现表单验证功能

    这篇文章主要为大家详细介绍了jQuery实现表单验证功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-10-21
  • bootstrapValidator自定验证方法写法

    这篇文章主要为大家详细介绍了bootstrapValidator自定验证方法写法,研究bootstrapValidator验证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-12-02
  • Javascript的表单与验证-非空验证

    JavaScript 可用来在数据被送往服务器前对 HTML 表单中的这些输入数据进行验证。本文给大家介绍javascript的表单与验证-非空验证,对javascript表单验证相关知识感兴趣的朋友一起学习吧...2016-03-22
  • layui 正则表达式验证使用实例详解

    layui的正则表达式是在form表单中完成的,这篇文章主要介绍了layui 正则表达式验证使用教程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-05-07
  • AngularJS中实现用户访问的身份认证和表单验证功能

    这篇文章主要介绍了AngularJS中实现用户访问的身份认证及表单验证功能的方法,Angular是Google开发的一款浏览器端的高人气JavaScript框架,需要的朋友可以参考下...2016-04-23
  • JS常见简单正则表达式验证功能小结【手机,地址,企业税号,金额,身份证等】

    这篇文章主要介绍了JS常见简单正则表达式验证功能,结合实例形式总结分析了JS针对手机,地址,企业税号,金额,身份证等的常见验证技巧,需要的朋友可以参考下...2017-01-26