亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

php 表單敏感字符過濾代碼

2024-09-04 11:44:08
字體:
來源:轉載
供稿:網友
  1. /** 
  2. * 表單生成驗證文件 
  3. */ 
  4. $_form = new formHtmlFind(); 
  5. class formHtmlFind{ 
  6.         /** 
  7.          * 輸出表單函數 
  8.          * $formKey  表單鍵 
  9.          * $infoArray 更新時的原始信息數組 
  10.          */ 
  11.  
  12.         public function formHtml($array,$infoArray=''
  13.         { 
  14.                 // 檢測數組是否存在 
  15.                 if(emptyempty($array))return false; 
  16.                 $newform = null; 
  17.                 // 信息數組(更新信息) 
  18.                 $this->infoArray = !emptyempty($infoArray)?$infoArray:array(); 
  19.                 $this->array['class'] =  get_class_methods(get_class()); 
  20.                 foreach ($array as $key =>$arr
  21.                 { 
  22.                         // 鍵值轉換為純英文 
  23.                         $key = preg_replace("/[^a-z]/i",'',$key); 
  24.                         // 生成表單 
  25.                         $newform .= $this->outputForm($arr,$key); 
  26.                 } 
  27.                 // 輸出表單 
  28.                 return $newform.$this->jsError(); 
  29.         } 
  30.         /** 
  31.          * 生成表單函數 
  32.          */ 
  33.         private function outputForm($arr,$key
  34.         { 
  35.                 $value = null; 
  36.                 if(emptyempty($arr))return false; 
  37.                 // input Type 
  38.                 $type   = $key
  39.                 // input NAME 
  40.                 $name   = trim($arr[0]); 
  41.                 // input 初始值 不包含多選,單選類 
  42.                 $value  = (!emptyempty($this->infoArray[$name]))? trim($this->infoArray[$name]):trim($arr[1]); 
  43.                 $value  = emptyempty($this->post[$name])? $value :trim($this->post[$name]); 
  44.                 // input Title 
  45.                 $title  = trim($arr[2]); 
  46.                 // 樣式 
  47.                 $style  = trim($arr[3]); 
  48.                 if($key!=="hidden"
  49.                 { 
  50.                         $dt = "<dt>{$title}</dt><dd>"
  51.                         // js錯誤提示 
  52.                         $dd = "<tt id="J{$name}"></tt></dd>rn"
  53.                 } 
  54.                 return (!preg_match("/checkbox|select|radio/i",$key))? 
  55.                 $dt.$this->newInput($type,$name,$value,$style,$title).$dd
  56.                 $this->formSelect($type,$name,$arr[1],$title,$style); // 多選類 
  57.         } 
  58.         /** 
  59.          * 提交數據檢測 
  60.          */ 
  61.         public function postForm($array
  62.         { 
  63.                 // 檢測數組是否存在 
  64.                 if(emptyempty($array)||emptyempty($_POST))return false; 
  65.                 $this->post           =  $_POST
  66.                 $this->array['class'] =  get_class_methods(get_class()); 
  67.                 foreach ($array as $key =>$arr
  68.                 { 
  69.                         // 鍵值轉換為純英文 
  70.                         $key = preg_replace("/[^a-z]/i",'',$key); 
  71.                         // 檢測 注銷file類表單 
  72.                         if (!emptyempty($arr)&&'file' != $key)$newData[trim($arr[0])] = $this->postFind($arr,$key); 
  73.                 } 
  74.                 // 輸出表單 
  75.                 if(!emptyempty($this->error)) 
  76.                 { 
  77.                         return false; 
  78.                 } 
  79.                 else return $newData
  80.         } 
  81.         /** 
  82.          * 生成表單 
  83.          */ 
  84.         private function newInput($type,$name,$value,$style,$title
  85.         { 
  86.                 switch ($type
  87.                 { 
  88.                         case 'text'
  89.                                 // 單行文本 
  90.                                 return  "<input type="text" name="{$name}" value="{$value}" {$style}/>"
  91.                                 break
  92.                         case 'password'
  93.                                 //密碼輸入 
  94.                                 return "<input type="password" name="{$name}" {$style}/>"
  95.                                 break
  96.                         case ''
  97.                                 //多行文本 
  98.                                 return "<textarea name="{$name}" {$style}/>{$value}</textarea>"
  99.                                 break
  100.                         case 'hidden'
  101.                                 // 隱藏 
  102.                                 return "<input type="hidden" name="{$name}" value="{$value}" {$style}/>"
  103.                                 break
  104.                         case 'file'
  105.                                 // 文件上傳 
  106.                                 return "<input type= "file"name="{$name}" {$style}/>"
  107.                                 break
  108.                         case 'submit'
  109.                                 // 提交 
  110.                                 return "<input type="submit" name="{$name}" value="$value" $style}/>"
  111.                                 break
  112.                         default
  113.                                 return "{$type}類型錯誤!!!"
  114.                                 break
  115.                 } 
  116.         } 
  117.         /** 
  118.          * 提交信息檢測 
  119.          * 錯誤返回error 
  120.          */ 
  121.         private function postFind($arr,$key
  122.         { 
  123.                 if(emptyempty($arr))return false; 
  124.                 $name = $title =$error =$find =$standard =null; 
  125.                 // input NAME 
  126.                 $name     = trim($arr[0]); 
  127.                 // input Title 
  128.                 $title    = trim($arr[2]); 
  129.                 // 錯誤提示 
  130.                 $error    = trim($arr[4]); 
  131.                 // 檢測類型 Y N 
  132.                 $find     = trim($arr[5]); 
  133.                 // 檢測標準 
  134.                 $standard = trim($arr[6]); 
  135.                 // 
  136.                 if(!emptyempty($standard))$this->error .=$this->ck_split($standard,$name,$title,$find,$error); 
  137.                 // 轉換為字符串 
  138.                 if(is_array($this->post[$name]))$this->post[$name] = implode(",",$this->post[$name]); 
  139.                 // 轉義或其他轉化 
  140.                 $KKarray = array(); 
  141.                 if(preg_match("/Y|N/is",$find)) 
  142.                 { 
  143.                         $KKarray       = split("_"$find); 
  144.                         // 轉義或過濾 
  145.                         $escape_filter = (!emptyempty($KKarray[1]))?'ck_'.$KKarray[1]:''
  146.                         // 輸出通過檢測的合法數據 
  147.                         $data          = ($escape_filter)?$this->$escape_filter($this->post[$name]):$this->post[$name]; 
  148.  
  149.                 } 
  150.                 else  $data        = ""
  151.                 // 輸出新的數據 
  152.                 return $data
  153.         } 
  154.         /** 
  155.          * 多選類表單生成 
  156.          */ 
  157.         private function formSelect($type,$name,$value,$title,$style
  158.         { 
  159.                 $outform = null; 
  160.                 // 觸發更新和提交動作時的初始 
  161.                 $nowvalue = (!emptyempty($this->post[$name]))?$this->post[$name]:$this->infoarray[$name]; 
  162.                 // 兼容多選的識別,轉為數組 
  163.                 if(!emptyempty($nowvalue))$valueArray = explode(",",$nowvalue); 
  164.                 // 選項標題 
  165.                 if(is_array($title)) 
  166.                 { 
  167.                         array_unshift($title,'選擇'); 
  168.                         $titarray = array_values($title); 
  169.                 }else $titarray = explode("|",$title); 
  170.                 // 選項值 
  171.                 if(is_array($value)) 
  172.                 { 
  173.                         array_unshift($value,'選擇'); 
  174.                         $valarray  = array_keys($value); 
  175.                         if(emptyempty($title))$titarray = array_values($value); 
  176.                 } 
  177.                 else $valarray = explode("|",$value); 
  178.                 // 取消表單的初始默認值 
  179.                 if(!emptyempty($this->post)&&!emptyempty($this->infoArray))$value = preg_replace("/Y_/i",'',$value); 
  180.  
  181.                 foreach ($valarray as $key =>$varl
  182.                 { 
  183.                         // 非默認的識別 
  184.                         if(!emptyempty($valueArray))$select   = (in_array($varl,$valueArray))?'Y':''
  185.                         //  判斷是否為默認 
  186.                         else $select   = (eregi("Y_",$varl))? 'Y':''
  187.  
  188.                         if($key >'0'
  189.                         { 
  190.                                 $_title=($titarray[$key])? $titarray[$key]:$title
  191.                                 switch ($type
  192.                                 { 
  193.                                         case 'select'
  194.                                                 if('Y' == $select)$select = 'selected'
  195.                                                 $outform .=        sprintf("<option %s value="%s"/>%s</option>rn" 
  196.                                                 ,$select,preg_replace("/Y_/i",'',$varl),$_title); 
  197.                                                 break
  198.                                         case 'radio'
  199.                                                 if('Y' == $select)$select = 'checked'
  200.                                                 $outform .= sprintf("<label>%s<input %s type="radio" name="%s" value="%s" %s/></label>rn"
  201.                                                 $_title,$select,$name,$varl,$style); 
  202.                                                 break
  203.                                         case 'checkbox'
  204.                                                 if('Y' == $select)$select = 'checked'
  205.                                                 $outform .= sprintf("<label>%s<input %s type="checkbox" name="%s[]" value="%s" %s/></label>rn",$_title,$select,$name,$varl,$style); 
  206.                                                 break
  207.                                 } 
  208.                                 $select =null; 
  209.                         } 
  210.                 } 
  211.                 // 下拉選擇 
  212.                 if($type =='select')$outform = sprintf('<select name="%s" %s>%s</select>',$name,$style,$outform); 
  213.                 return sprintf("<dt>%s</dt><dd>%s<tt id="J%s"></tt></dd>rn",$titarray[0],$outform,$name); 
  214.         } 
  215.         /** 
  216.          * 表單驗證 及全部 ck_類函數 
  217.          */ 
  218.         private function ck_split($standard,$name,$title,$find,$error
  219.         { 
  220.                 //  非必填缺省跳過 
  221.                 if(eregi('N',$find) && emptyempty($this->post[$name]))return false; 
  222.                 // 必填缺省檢測 
  223.                 if(eregi('Y',$find) && emptyempty($this->post[$name]))return "["J{$name}","$error"],"
  224.                 $t_error = null; 
  225.                 // 多項檢測 
  226.                 $arr = explode(',',$standard); 
  227.                 // POST數據檢測 
  228.                 if(!emptyempty($arr))foreach ($arr as $var
  229.                 { 
  230.                         if(trim($var)!=''
  231.                         { 
  232.                                 switch ($this->post) 
  233.                                 { 
  234.                                         case is_array($this->post[$name]): 
  235.                                                 // 數組類的檢測 
  236.                                                 foreach ($this->post[$nameas $_var
  237.                                                 { 
  238.                                                         $t_error.= ($this->ck_open($_var,trim($var)))?"":$error
  239.                                                         if($t_error)break
  240.                                                 } 
  241.                                                 break
  242.                                         default
  243.                                                 $t_error.= ($this->ck_open($this->post[$name],trim($var)))?"":$error
  244.                                                 break
  245.                                 } 
  246.                                 if($t_error)break
  247.                         } 
  248.                 } 
  249.                 return ($t_error)? "["J{$name}","$t_error"],":""
  250.         } 
  251.         // 函數調用 
  252.         private function ck_open($string,$str
  253.         { 
  254.                 $functi = $this->ck_detected($str); 
  255.                 return ($this->$functi($string,$str))? true:false; 
  256.         } 
  257.         // 類型判斷 
  258.         private function ck_detected($str
  259.         { 
  260.                 $detect = (eregi("^[a-zA-Z]*$",$str))? "{$str}Detect":'lengthDetect'
  261.                 if(!in_array($detect,$this->array['class'])) 
  262.                 { 
  263.                         location('index.php',$ck,' Lack of function !!!'); 
  264.                 } 
  265.                 return $detect
  266.         } 
  267.         //-------------------------------------以下為檢測函數可外部調用 
  268.         // 長度 
  269.         public function lengthDetect($string,$str){ 
  270.                 $len = split('-',trim($str)); 
  271.                 return (strlen($string) > ($len[0]-1) && strlen($string) < ($len[1]+1))? true:false; 
  272.         } 
  273.         // 價格 
  274.         public function moneyDetect($str){ 
  275.                 return preg_match("/^(-|+)?d+(.d+)?$/",$str); 
  276.         } 
  277.         // 郵件 
  278.         public function emailDetect($str){ 
  279.                 return preg_match("/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/"$str); 
  280.         } 
  281.         // 網址 
  282.         public function urlDetect($str){ 
  283.                 return preg_match("/^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-&_~`@[]':+!]*([^<>"])*$/", $str); 
  284.         } 
  285.         // 數字型 
  286.         public function numDetect($str){ 
  287.                 return is_numeric($str); 
  288.         } 
  289.         // 中文 
  290.         public function cnDetect($str){ 
  291.                 return preg_match("/^[x7f-xff]+$/"$str); 
  292.         } 
  293.         // 字母 
  294.         public function enDetect($str){ 
  295.                 return preg_match("/^[A-Za-z]+$/"$str); 
  296.         } 
  297.         // 數字字母混合 
  298.         public function numenDetect($str){ 
  299.                 return preg_match("/^([a-zA-Z0-9_-])+$/",$str); 
  300.         } 
  301.         // 電話號碼 
  302.         public function telDetect($str){ 
  303.                 return ereg("^[+]?[0-9]+([xX-][0-9]+)*$"$str); 
  304.         } 
  305.         // 敏感詞 
  306.         public function keyDetect($str){ 
  307.                 return (!preg_match("/$badkey/i",$str)); 
  308.         } 
  309.         //-----------------------------------------------------輸出 
  310.         // 字符替換 
  311.         public function ck_filter($str){ 
  312.                 $str=(is_array($str))? implode(",",$str):$str
  313.                 $str=nl2br($str); //將回車替換為<br> 
  314.                 $str=htmlspecialchars($str); //將特殊字元轉成 HTML 格式。 
  315.                 //$str=str_replace(array(" ",'<? '),array(" ",'< ?'),$str); //替換空格替換為 
  316.                 return $str
  317.         } 
  318.         // 轉義 
  319.         function ck_escape($str
  320.         { 
  321.                 if (!get_magic_quotes_gpc())return addslashes($str); 
  322.                 return $str
  323.         } 
  324.         // MD5加密 
  325.         public function ck_md5($str){ 
  326.                 return  MD5($str); 
  327.         } 
  328.         // base64加密 
  329.         public function ck_base64($str){ 
  330.                 return  base64_encode($str); 
  331.         } 
  332.         // 時間 
  333.         function ck_time($str){ 
  334.                 // time_r() 來在公用函數文件 
  335.                 if(!is_numeric($str)) 
  336.                 { 
  337.                         return time_r($str); 
  338.                 } 
  339.                 else return $str
  340.         } 
  341.         // 有條件注銷(數字) 
  342.         public function ck_cancel($str){ 
  343.                 return (!is_numeric($str))? $str:""
  344.         } 
  345.         // 無條件注銷 
  346.         public function ck_delete(){ 
  347.                 return null; 
  348.         } 
  349.         // js錯誤提示 
  350.         private function jsError() 
  351.         { 
  352.                 if(emptyempty($this->error))return false; 
  353.                 return  " 
  354.                 <script  language=javascript> rn var error = new Array(".trim($this->error,',')."); 
  355.                         rn for (i=0; i < error.length; i++){ 
  356.                         rn document.getElementById(error[0]).innerHTML=error[1]; 
  357.                          }rn </script> 
  358.                 "; 
  359.         } 
  360.  
  361. // 演示: 
  362. $form[1] =array
  363. 'text'=>array('title','','產品名稱','size=40','產品名稱不可缺少!','Y','cn,1-30'), 
  364. 'text1'=>array('categories','','產品名稱','','','Y_base64'), 
  365. 'select'=>array('superiors','||1|2|Y_3','產品類別|選擇|1|2|3','','必選項','Y'), 
  366. 'radio'=>array('superiors1','|1|Y_2|3','產品xun|產品1|產品2|產品3','','必選項','Y'), 
  367. 'checkbox'=>array('superiors2',array(1=>'11',2=>'22',3=>'33'),'','','必選項','Y'), 
  368. 'file'=>array('ddd','','文件'), 
  369. ); 
  370. $form =array ( 
  371.   'login' =>  
  372.   array ( 
  373.     'text' =>  
  374.     array ( 
  375.       0 => 'user'
  376.       1 => ''
  377.       2 => '用戶名'
  378.       3 => 'size=20'
  379.       4 => '!'
  380.       5 => 'Y'
  381.       6 => 'numen,6-12'
  382.     ), 
  383.     'password' =>  
  384.     array ( 
  385.       0 => 'pass'
  386.       1 => ''
  387.       2 => '密 碼'
  388.       3 => 'size=22'
  389.       4 => '密碼格式錯誤!'
  390.       5 => 'Y_md5'
  391.       6 => 'numen,6-12'
  392.     ), 
  393.     'radio' =>  
  394.     array ( 
  395.       0 => 'time'
  396.       1 => '|7200|3600|1800'
  397.       2 => 'cookies有效時間|2小時|1小時|30分鐘'
  398.       3 => ''
  399.       4 => ''
  400.       5 => 'N_delete'
  401.       6 => ''
  402.     ), 
  403.   ), 
  404.   ); 
  405.  
  406. // 表單提交效驗 
  407. $past = $_form->postForm($form['login']); 
  408. $dd = array('title'=>'標題','categories'=>'類別'); 
  409. // $dd 為已有的信息(如更新時的信息輸出) POST數據位內部處理具有優先權//開源代碼Vevb.com 
  410. if(!emptyempty($past)) 
  411.         echo "<pre>"
  412.         print_r($past); 
  413.         echo"</pre>"
  414. echo '<form method="POST" NAME="PostTopic" action="" enctype="multipart/form-data" style="margin:0px;">'
  415. echo $_form->formHtml($form['login'],$dd); 
  416. echo '<input type="submit" value="Y" name="B1"></form>'

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
97视频在线观看播放| 97在线日本国产| 麻豆成人在线看| 日韩中文字幕国产精品| 欧美日本啪啪无遮挡网站| 欧美夫妻性视频| 日韩网站在线观看| 欧美最近摘花xxxx摘花| 欧美性xxxx极品hd满灌| 亚洲精品美女久久久久| 日本一区二区三区在线播放| 久久久国产精品x99av| 亚洲aaaaaa| 国产va免费精品高清在线| 91在线中文字幕| 久久99国产精品自在自在app| 午夜精品一区二区三区在线视频| 欧美老女人bb| 性视频1819p久久| 国产成人精品免高潮费视频| 亚洲色图av在线| 国产日韩av高清| 国产精品青草久久久久福利99| 亚洲美女中文字幕| 欧美日韩一二三四五区| 久久国产精品免费视频| 国产噜噜噜噜噜久久久久久久久| 黑人巨大精品欧美一区二区免费| 亚洲欧美日韩另类| 国产一区二区黄| 国内精品一区二区三区四区| 国产精品精品久久久| 亚洲欧美国产精品久久久久久久| 日韩av一区在线| 亚洲人成亚洲人成在线观看| 91po在线观看91精品国产性色| 性视频1819p久久| 国产xxx69麻豆国语对白| 精品亚洲va在线va天堂资源站| 亚洲日韩中文字幕在线播放| 成人a在线视频| 国产精品专区h在线观看| 亚洲成人免费在线视频| 91人人爽人人爽人人精88v| 精品日本高清在线播放| 2019中文字幕全在线观看| 精品久久久一区二区| 欧美体内谢she精2性欧美| 97香蕉超级碰碰久久免费软件| 91夜夜未满十八勿入爽爽影院| 夜夜躁日日躁狠狠久久88av| www.亚洲天堂| 国产91亚洲精品| 成人高清视频观看www| 久久av在线播放| 国产综合视频在线观看| 北条麻妃久久精品| 久久99青青精品免费观看| 亚洲欧美日韩精品久久| 97精品视频在线播放| 日韩小视频网址| 精品偷拍一区二区三区在线看| 自拍偷拍亚洲一区| 欧美日本高清一区| 亚洲天堂av在线播放| 欧美日韩免费看| 亚洲人成在线免费观看| 色综合久久中文字幕综合网小说| 九九热精品视频在线播放| 亚洲一区制服诱惑| 成人在线激情视频| 成人观看高清在线观看免费| 精品性高朝久久久久久久| 国产欧美va欧美va香蕉在| 日本19禁啪啪免费观看www| 国产精品aaa| 日韩一级黄色av| 久久久久国产精品免费网站| 青青草一区二区| 日韩亚洲欧美中文在线| 日本精品久久久久久久| 欧美激情精品久久久久久黑人| 亚洲国产日韩欧美在线99| 日韩av免费在线播放| 成人av色在线观看| 夜夜嗨av色综合久久久综合网| 欧美日韩在线观看视频小说| 国产精品入口免费视频一| 久久人人爽人人爽人人片亚洲| 久久影视三级福利片| 久久精品国产2020观看福利| 国产精品视频26uuu| 日韩大陆毛片av| 日韩精品中文字幕在线播放| 国产亚洲成精品久久| 日韩中文字幕国产精品| 亚洲尤物视频网| 亚洲区bt下载| 精品国产一区二区在线| 一区二区三区天堂av| 亚洲美女精品成人在线视频| 国产成人精品av| 亚洲美女又黄又爽在线观看| 欧美大秀在线观看| 亚洲国产精品免费| 成人免费视频xnxx.com| 成人av资源在线播放| 黑人狂躁日本妞一区二区三区| 日韩av在线天堂网| 欧美国产精品人人做人人爱| 亚洲片国产一区一级在线观看| 国产精品久久久久久影视| 亚洲午夜久久久久久久| 欧美日韩国产页| 欧美精品18videosex性欧美| 欧美综合激情网| 日韩精品视频免费在线观看| 亚洲精品二三区| 久久影视电视剧免费网站| 国产亚洲精品久久久久久牛牛| 午夜精品一区二区三区在线视| 欧美一级成年大片在线观看| 国产精品久久久久久久午夜| 欧美激情一二三| 欧美在线观看视频| 国产精品专区一| 亚洲天堂免费视频| 欧美在线视频免费| 亚洲成人黄色在线观看| 欧洲成人午夜免费大片| 亚洲精品美女久久久久| 欧美日韩一区二区免费在线观看| 精品国产乱码久久久久酒店| 亚洲最大成人在线| 欧美性猛交xxxx乱大交极品| 日韩综合视频在线观看| 精品国产乱码久久久久久天美| 91久久久久久久久久久久久| 久久亚洲影音av资源网| 久久影视免费观看| 国产精品主播视频| 国产精品男女猛烈高潮激情| 国产精品69精品一区二区三区| 久久久视频精品| 日韩在线免费av| 欧美激情精品久久久久久免费印度| 日韩高清电影免费观看完整版| 欧美成人剧情片在线观看| 亚洲a在线观看| 国产精品久久久久久av下载红粉| 91视频国产一区| 高清欧美电影在线| 久久99视频免费| 欧美中文字幕视频在线观看| 欧美亚洲成人网| 欧美一级淫片aaaaaaa视频| 国模精品视频一区二区三区| 最近2019年手机中文字幕| 欧美午夜电影在线| 午夜精品久久久99热福利| 日韩视频在线一区| 九九精品视频在线| 精品视频久久久久久久| 国产精品永久免费视频|