PHP フォーム依存文字フィルタリング クラス、PHP フォーム フィルタリング_PHP チュートリアル
phpフォームセンシティブ文字フィルタリングクラス、phpフォームフィルタリング
この記事の例では、PHP のフォーム依存文字フィルタリング クラスとその使用法について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです:
/**
* フォーム生成検証ファイル
*/
$_form = 新しいフォームHtmlFind(); クラスフォームHtmlFind{
/**
* フォーム出力機能
* $formKey フォームキー
* $infoArray 更新時の元の情報配列
*/
パブリック関数 formHtml($array,$infoArray='')
// 配列が存在するかどうかを確認します
If(emptyempty($array)) false を返します
$newform = null; // 情報配列(更新情報)
$this->infoArray = !emptyempty($infoArray)?$infoArray:array(); $ this-> array ['class'] = foreach ($array as $key =>$arr)
//キー値を純粋な英語に変換します $key = preg_replace("/[^a-z]/i",'',$key); // formを生成します $newform .= $this->outputForm($arr,$key); // 出力フォーム
return $newform.$this->jsError(); }
/**
* フォーム生成機能
*/
プライベート関数outputForm($arr,$key)
$value = null; If(emptyempty($arr)) false を返します
// 型を入力
$タイプ = $キー
// 名前を入力
// 入力初期値には複数の選択肢、単一選択肢のカテゴリは含まれません
$value = (!emptyempty($this->infoArray[$name]))?trim($this->infoArray[$name]):trim($arr[1]); $value = emptyempty($this->post[$name]) $value :trim($this->post[$name]); // タイトルを入力
$title = トリム($arr[2]); // スタイル
$style = trim($arr[3]);If($key!=="非表示")
$dt = "
$dd = "
$ this-> formselect($ type、$ name、$ arr [1]、$ title、$ style); }
/**
* テスト用のデータを送信します
*/
パブリック関数 postForm($array)
// 配列が存在するかどうかを確認します
If(emptyempty($array)||emptyempty($_POST)) false を返します
$ this->投稿 $ this-> array ['class'] = foreach ($array as $key =>$arr)
//キー値を純粋な英語に変換します $key = preg_replace("/[^a-z]/i",'',$key); // ログアウト ファイル フォームを検出
If (!emptyempty($arr)&&'file' != $key)$newData[trim($arr[0])] = $this->postFind($arr,$key); // 出力フォーム
If(!emptyempty($this->error))
falseを返します。 それ以外の場合は $newData を返します。 }
/**
* フォームを生成
*/
プライベート関数 newInput($type,$name,$value,$style,$title)
スイッチ ($type)
ケース「テキスト」:
" を返します
; 休憩
ケース「パスワード」:
//パスワード入力
" を返します
; 休憩
ケース '':
// 複数行のテキスト
"{$value} を返します
休憩
ケース「非表示」:
" を返します
; 休憩
ケース「ファイル」:
" を返します
; 休憩
ケース「送信」:
" を返します
壊す;
デフォルト:
return "{$type}类型错误!!!";
壊す;
}
}
/**
* テスト用の情報を送信します
* エラーはエラーを返します
*/
プライベート関数 postFind($arr,$key)
{
if(emptyempty($arr)) false を返します;
$name = $title =$error =$find =$standard =null;
// 名前を入力
$name = トリム($arr[0]);
// タイトルを入力
$title = トリム($arr[2]);
// 错误提案
$error = トリム($arr[4]);
// 检测型 Y N
$find = trim($arr[5]);
// 检测标準
$standard = トリム($arr[6]);
//
if(!emptyempty($standard))$this->error .=$this->ck_split($standard,$name,$title,$find,$error);
// 转换は文字串
if(is_array($this->post[$name]))$this->post[$name] = implode(",",$this->post[$name]);
// 转义またはその他转化
$KKarray = 配列();
if(preg_match("/Y|N/is",$find))
{
$KKArray = split("_", $find);
// 转义または过滤
$escape_filter = (!emptyempty($KKarray[1]))?'ck_'.$KKarray[1]:'';
// 检测を通した合法データの出力
$データ
以来 // 新しいデータを出力します
$data を返します。 }
/**
*複数選択フォームの生成
*/
プライベート関数 formSelect($type,$name,$value,$title,$style)
$outform = null; // 更新およびコミットアクションをトリガーするときの初期
$nowvalue = (!emptyempty($this->post[$name]))?$this->post[$name]:$this->infoarray[$name]; // 複数選択認識に対応、配列に変換
If(!emptyempty($nowvalue))$valueArray =explode(",",$nowvalue); // オプションのタイトル
If(is_array($title))
array_unshift($title,'select'); $titarray = array_values($title); }else $titarray =explode("|",$title); // オプションの値
If(is_array($value))
array_unshift($value,'select'); $valarray = array_keys($value); If(emptyempty($title))$titarray = array_values($value); else $valarray =explode("|",$value); // フォームの初期デフォルト値をキャンセルします
If(!emptyempty($this->post)&&!emptyempty($this->infoArray))$value = preg_replace("/Y_/i",'',$value);
foreach ($valarray as $key =>$varl)
//非デフォルト認識
If(!emptyempty($valueArray))$select = (in_array($varl,$valueArray))?'Y':''; // 默认かどうか判断する
else $select = (eregi("Y_",$varl))? 'Y':'';
if($key >'0')
{
$_title=($titarray[$key])? $titarray[$key]:$title;
スイッチ ($type)
{
ケース「選択」:
if('Y' == $select)$select = '選択済み';
$outform .= sprintf("%srn"
,$select,preg_replace("/Y_/i",'',$varl),$_title);
壊す;
ケース「ラジオ」:
if('Y' == $select)$select = 'チェック済み';
$outform .= sprintf("rn",
$_title,$select,$name,$varl,$style);
壊す;
ケース「チェックボックス」:
if('Y' == $select)$select = 'チェック済み';
$outform .= sprintf("rn",$ _title,$select,$name,$varl,$style);
壊す;
}
$select =null;
}
}
// 下拉选择
if($type =='select')$outform = sprintf('',$name,$style,$outform);
return sprintf("
}
/**
* フォーム検証とすべての ck_ クラス関数
*/
プライベート関数 ck_split($standard,$name,$title,$find,$error)
{
// 非必要充填缺省跳过
if(eregi('N',$find) && emptyempty($this->post[$name]))return false;
// 必須充填缺省检测
if(eregi('Y',$find) && emptyempty($this->post[$name]))return "["J{$name}","$error"],";
$t_error = null;
// 多项检测
$arr =explode(',',$standard);
// POSTデータベース检测
if(!emptyempty($arr))foreach ($arr を $var として)
{
if(trim($var)!='')
{
スイッチ ($this->post)
{
case is_array($this->post[$name]):
// 数组类的检测
foreach ($this->post[$name] を $_var として)
{
$t_error.= ($this->ck_open($_var,trim($var)))?"":$error;
if($t_error)break;
}
壊す;
デフォルト:
$t_error.= ($this->ck_open($this->post[$name],trim($var)))?"":$error;
壊す;
}
if($t_error)break;
}
}
戻ります ($t_error)? "["J{$name}","$t_error"],":"";
}
//関数数调用
プライベート関数 ck_open($string,$str)
{
$functi = $this->ck_detected($str);
return ($this->$functi($string,$str))?真/偽;
}
// 型判断
プライベート関数 ck_detected($str)
$detect = (eregi("^[a-zA-Z]*$",$str)) "{$str}Detect":'lengthDetect'; If(!in_array($detect,$this->array['class']))
location('index.php',$ck,' 機能がありません !!!'); $detect を返す
}
//----------------------------------------次の検出関数は外部から呼び出すことができます
// 長さ
パブリック関数 lengthDetect($string,$str){
$len = split('-',trim($str)); 戻り値 (strlen($string) > ($len[0]-1) && strlen($string) < ($len[1]+1))? }
// 価格
パブリック関数moneyDetect($str){
return preg_match("/^(-|+)?d+(.d+)?$/",$str); }
// メール
パブリック関数 emailDetect($str){
return preg_match("/^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$/", $str); }
// URL
パブリック関数 urlDetect($str){
return preg_match("/^http://[A-Za-z0-9]+.[A-Za-z0-9]+[/=?%-&_~`@[]':+!]*( [^<>"])*$/", $str); }
// 数値型
パブリック関数 numDetect($str){
return is_numeric($str); }
// 中国語
パブリック関数 cnDetect($str){
return preg_match("/^[x7f-xff]+$/", $str); }
// 文字
パブリック関数 enDetect($str){
return preg_match("/^[A-Za-z]+$/", $str); }
// 数字と文字の組み合わせ
パブリック関数 numenDetect($str){
return preg_match("/^([a-zA-Z0-9_-])+$/",$str); }
// 電話番号
パブリック関数 telDetect($str){
return ereg("^[+]?[0-9]+([xX-][0-9]+)*$", $str); }
// センシティブな言葉
public function keyDetect($str){
return (!preg_match("/$badkey/i",$str)); }
//------------------------------------------------ -----アウトプット
// 文字置換
パブリック関数 ck_filter($str){
$str=(is_array($str)):$str; $str=nl2br($str); // 改行を
に置き換えます。 $str=htmlspecialchars($str); //特殊文字を HTML 形式に変換します。
//$str=str_replace(array(" ",''),array(" ",'< ?'),$str); //スペースを
に置き換えます。 $str; を返します。 }
// 逃げる
関数 ck_escape($str)
if (!get_magic_quotes_gpc())return addedlashes($str); $str; を返します。 }
// MD5 暗号化
パブリック関数 ck_md5($str){
MD5($str) を返します。 }
// Base64 暗号化
パブリック関数 ck_base64($str){
Base64_encode($str) を返します
}
// 時間
関数 ck_time($str){
// time_r() はパブリック関数ファイルに含まれます
If(!is_numeric($str))
time_r($str) を返します
それ以外の場合は $str を返します。 }
// 条件付きキャンセル (数値)
パブリック関数 ck_cancel($str){
return (!is_numeric($str))? }
// 無条件ログアウト
パブリック関数 ck_delete(){
null を返します。 }
// js エラー メッセージ
プライベート関数 jsError()
If(emptyempty($this->error)) false を返します
「
」を返します & Lt; スクリプト言語 = javascript & gt; rn var error = new array (".Trim ($ this- & gt; error, ',')."); rn for (i=0; i
}
}
// デモ:
$form[1] =array(
'text'=>array('title','','商品名','size=40','商品名は必須です!','Y','cn,1-30'),
'text1'=>array('カテゴリ','','製品名','','','Y_base64'),
'select'=>array('上位','||1|2|Y_3','製品カテゴリ|選択|1|2|3','','必須オプション','Y'),
'radio'=>array('superiors1','|1|Y_2|3','product xun|product 1|product 2|product 3','','必須オプション','Y'),
'checkbox'=>array('superiors2',array(1=>'11',2=>'22',3=>'33'),'','','必須オプション', 「はい」)、
'file'=>array('ddd','','file'),
); $form =array (
'ログイン' =>
配列 (
'テキスト' => 配列 (
0 => 'ユーザー'、
1 =>
2 => 'ユーザー名'、
3 => 'サイズ=20'、
4 =>「!」、
5 =>「Y」、
6 => '数値,6-12',
)、
'パスワード' => 配列 (
0 => 'パス'、
1 =>
2 => 'パスワード'、
3 => 'サイズ=22'、
4 => 「パスワードの形式が間違っています!」、
5 => 'Y_md5'、
6 => '数値,6-12',
)、
「ラジオ」=> 配列 (
0 => '時間'、
1 => '|7200|3600|1800'、
2 => 'Cookie の有効時間|2 時間|1 時間|30 分'、
3 =>
4 =>
5 => 'N_削除'、
6 => ''、
)、
)、
);
// フォーム送信の検証
$past = $_form->postForm($form['login']); $dd = array('title'=>'タイトル','categories'=>'カテゴリ'); // $dd は既存の情報(更新時に出力される情報など)です。POST データビットの内部処理が優先されます
if(!emptyempty($past))
{
echo "
"; print_r($past) <br> echo ""; }
echo '';
この記事で説明した内容が皆様の PHP プログラミング設計に役立つことを願っています。
http://www.bkjia.com/PHPjc/923907.html
www.bkjia.com
true
PHP フォーム依存文字フィルタリング クラス、PHP フォーム フィルタリング この記事では、PHP フォーム依存文字フィルタリング クラスとその使用例について説明します。参考のためにみんなで共有してください。具体的な分析は次のとおりです: コードをコピーします...

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

CakePHP へのログインは非常に簡単な作業です。使用する関数は 1 つだけです。 cronjob などのバックグラウンド プロセスのエラー、例外、ユーザー アクティビティ、ユーザーが実行したアクションをログに記録できます。 CakePHP でのデータのログ記録は簡単です。 log()関数が提供されています

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP はオープンソースの MVC フレームワークです。これにより、アプリケーションの開発、展開、保守がはるかに簡単になります。 CakePHP には、最も一般的なタスクの過負荷を軽減するためのライブラリが多数あります。
