PHP 양식 민감한 문자 필터링 class_php 기술
이 기사의 예에서는 PHP 형식 감지 문자 필터링 클래스와 그 사용법을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 구체적인 분석은 다음과 같습니다.
/**
* 양식 생성 확인 파일
*/
$_form = 새로운 formHtmlFind()
클래스 formHtmlFind{
/**
* 출력형식 기능
* $formKey 양식 키
* $infoArray 업데이트 시 원본 정보 배열
*/
공개 함수 formHtml($array,$infoArray='')
~ // 배열이 존재하는지 감지
If(emptyempty($array))는 false를 반환합니다.
$newform = null
// 정보 배열(업데이트 정보)
$this->infoArray = !emptyempty($infoArray)?$infoArray:array()
$this->array['class'] = get_class_methods(get_class())
foreach($array를 $key =>$arr로)
~ // 키 값을 순수 영어로 변환
$key = preg_replace("/[^a-z]/i",'',$key)
// 양식 생성
$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 = 비어 있음($this->post[$name])? $value :trim($this->post[$name]); // 제목 입력
$title = 트림($arr[2])
// 스타일
$style = Trim($arr[3])
If($key!=="숨김")
~ $dt = "
//js 오류 메시지
$dd = "
~ (!preg_match("/checkbox|select|radio/i",$key)
를 반환하시겠습니까? $dt.$this->newInput($type,$name,$value,$style,$title).$dd:
> $this->formSelect($type,$name,$arr[1],$title,$style) // 다중 선택 클래스
}
/**
* 테스트용 데이터 제출
*/
공개 함수 postForm($array)
~ // 배열이 존재하는지 감지
If(emptyempty($array)||emptyempty($_POST))는 false를 반환합니다.
$this->포스트 = $_POST; $this->array['class'] = get_class_methods(get_class())
foreach($array를 $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))
~ | ~ 그렇지 않으면 $newData를 반환합니다.
}
/**
* 양식 생성
*/
비공개 함수 newInput($type,$name,$value,$style,$title)
~ 스위치($type)
~케이스 '텍스트':
// 한 줄의 텍스트
""를 반환합니다.
휴식
케이스 '비밀번호':
//비밀번호 입력
""를 반환합니다.
휴식
케이스 '':
//여러 줄의 텍스트
"{$value}"를 반환합니다. 휴식
사례 '숨김':
// 숨기기
""를 반환합니다.
휴식
케이스 '파일':
> ""을 반환합니다. 휴식
사례 '제출':
> ""를 반환합니다.
부서지다;
기본값:
"{$type}类型错误!!!"를 반환합니다.
부서지다;
}
}
/**
* 테스트를 위한 정보 제출
* 오류는 오류를 반환합니다
*/
개인 함수 postFind($arr,$key)
{
if(emptyempty($arr))return false;
$name = $title =$error =$find =$standard =null;
// 이름 입력
$name = 트림($arr[0]);
// 제목 입력
$title = 트림($arr[2]);
// 错误提示
$error = 트림($arr[4]);
// 检测类型 Y N
$find = 트림($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 = 분할("_", $find);
// 转义或过滤
$escape_filter = (!emptyempty($KKarray[1]))?'ck_'.$KKarray[1]:'';
// 출력통합법
$data ~
~ ~ ~ $data // 새로운 데이터 출력
$data 반환
}
/**
* 다중 선택 양식 생성
*/
비공개 함수 formSelect($type,$name,$value,$title,$style)
~ $outform = null
// 업데이트 및 커밋 작업을 트리거할 때 초기
$nowvalue = (!emptyempty($this->post[$name]))?$this->post[$name]:$this->infoarray[$name]
// 다중 선택 인식과 호환되며 배열로 변환됩니다
If(!emptyempty($nowvalue))$valueArray = 폭발(",",$nowvalue)
// 옵션 제목
If(is_array($title))
~ array_unshift($title,'선택')
$titarray = 배열_값($title)
}else $titarray = 폭발("|",$title)
// 옵션 값
If(is_array($value))
~ array_unshift($value,'선택')
$valarray = array_keys($값)
If(emptyempty($title))$titarray = array_values($value)
~ else $valarray = 폭발("|",$value)
// 폼의 초기 기본값 취소
If(!emptyempty($this->post)&&!emptyempty($this->infoArray))$value = preg_replace("/Y_/i",'',$value)
foreach($valarray는 $key =>$varl)
~ // 기본이 아닌 인식
If(!emptyempty($valueArray))$select = (in_array($varl,$valueArray))?'Y':''; // 判断是否为默认
else $select = (eregi("Y_",$varl))? '와이':'';
if($key >'0')
{
$_title=($titarray[$key])? $titarray[$key]:$제목;
스위치($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 =널;
}
}
// 下拉选择
if($type =='select')$outform = sprintf('',$name,$style,$outform);
return sprintf("
}
/**
* 양식 유효성 검사 및 모든 ck_ 클래스 함수
*/
개인 함수 ck_split($standard,$name,$title,$find,$error)
{
// 비必填缺省跳过
if(eregi('N',$find) &&empty($this->post[$name]))return false;
// 必填缺省检测
if(eregi('Y',$find) &&empty($this->post[$name]))return "["J{$name}","$error"],";
$t_error = null;
// 多项检测
$arr = 폭발(',',$standard);
// POST 数据检测
if(!emptyempty($arr))foreach ($arr를 $var로)
{
if(trim($var)!='')
{
스위치($this->post)
{
케이스 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);
($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 = 분할('-',trim($str))
(strlen($string) > ($len[0]-1) && strlen($string) < ($len[1] 1)) true:false; }
// 가격
공개 함수 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); }
// 민감한 단어
공개 기능 키감지($str){
return (!preg_match("/$badkey/i",$str))
}
//------------------------------------------------ -----출력
// 문자 교체
공개 함수 ck_filter($str){
$str=(is_array($str)) implode(",",$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){
return base64_encode($str)
}
// 시간
함수 ck_time($str){
// time_r()은 공개 함수 파일에 들어옵니다
If(!is_numeric($str))
~ 반환 시간_r($str)
~ 그렇지 않으면 $str을 반환합니다.
}
// 조건부 취소(숫자)
공개 함수 ck_cancel($str){
(!is_numeric($str))을 반환하시겠습니까? $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 < error.length; i ){
~ ~ ";
}
}
// 데모:
$form[1] =배열(
'text'=>array('title','','제품명','size=40','제품명은 필수!','Y','cn,1-30'),
'text1'=>array('categories','','제품 이름','','','Y_base64'),
'select'=>array('superiors','||1|2|Y_3','제품 카테고리|선택|1|2|3','','필수 옵션','Y'),
'radio'=>array('superiors1','|1|Y_2|3','product xun|제품 1|제품 2|제품 3','','필수 옵션','Y'),
'checkbox'=>array('superiors2',array(1=>'11',2=>'22',3=>'33'),'','','필수 옵션', 'Y'),
'파일'=>array('ddd','','파일'),
);
$form =배열(
'로그인' =>
배열(
'텍스트' => 배열(
0 => '사용자',
1 => '',
2 => '사용자 이름',
3 => '크기=20',
4 => '!',
5 => '예',
6 => '숫자,6-12',
),
'비밀번호' =>
배열(
0 => '통과',
1 => '',
2 => '비밀번호',
3 => '크기=22',
4 => '비밀번호 형식이 잘못되었습니다!',
5 => 'Y_md5',
6 => '숫자,6-12',
),
'라디오' => 배열(
0 => '시간',
1 => '|7200|3600|1800',
2 => '쿠키 유효 시간|2시간|1시간|30분',
3 => '',
4 => '',
5 => 'N_삭제',
6 => '',
),
),
);
// 양식 제출 확인
$past = $_form->postForm($form['login'])
$dd = array('제목'=>'제목','카테고리'=>'카테고리')
// $dd는 기존 정보입니다(예: 업데이트 중 출력되는 정보). POST 데이터 비트의 내부 처리가 우선합니다.
if(!emptyempty($past))
{
echo "<사전>"
print_r($past)
echo ""; }
echo ''
이 기사가 모든 사람의 PHP 프로그래밍 설계에 도움이 되기를 바랍니다.

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이번 장에서는 CakePHP의 환경 변수, 일반 구성, 데이터베이스 구성, 이메일 구성에 대해 알아봅니다.

PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
