- <?php
 
				- //参数处理函数
 
				- function RepPostVar($val){
 
				- //不考虑指令magic_quotes_gpc是否开启, 如果参数$val不等于addslashes($val)就退出
 
				- if($val!=addslashes($val)){
 
				- exit();
 
				- }
 
				- CkPostStrChar($val);
 
				- $val=str_replace("%","",$val);//删除所有的百分号字符
 
				- $val=str_replace(" ","",$val);//删除所有的空格
 
				- $val=str_replace("\t","",$val);//删除所有的\t制表符
 
				- $val=str_replace("%20","",$val);//删除所有的rawurlencode(" ")
 
				- $val=str_replace("%27","",$val);//删除所有的rawurlencode("'")
 
				- $val=str_replace("*","",$val);//删除所有的星号
 
				- $val=str_replace("'","",$val);//删除所有的单引号
 
				- $val=str_replace("\"","",$val);//删除所有的双引号
 
				- $val=str_replace("/","",$val);//删除所有的正斜杠
 
				- $val=str_replace(";","",$val);//删除所有的分号
 
				- $val=str_replace("#","",$val);//删除所有的井号
 
				- $val=str_replace("--","",$val);//删除所有的自减运算符
 
				- $val=RepPostStr($val,1);
 
				- $val=addslashes($val);
 
				- //FireWall
 
				- FWClearGetText($val);
 
				- return $val;
 
				- }
 
				- //处理编码字符
 
				- function CkPostStrChar($val){
 
				- //返回参数$val最后一个字符串
 
				- if(substr($val,-1)=="\\")
 
				- {
 
				- //如果参数$val最后一个字符等于反斜杠就退出
 
				- exit();
 
				- }
 
				- }
 
				- //addslashes 使用反斜线引用字符串
 
				- //string addslashes(string $str)
 
				- //返回字符串,该字符串为了数据库查询语句等的需要在某些字符前加上了反斜线。这些字符是单引号、双引号、反斜线与NUL(NULL字符)。
 
				- function AddAddsData($data){
 
				- //如果关闭了魔术引号,则addslashes
 
				- if(!MAGIC_QUOTES_GPC){
 
				- $data=addslashes($data);
 
				- }
 
				- return $data;
 
				- }
 
				- //string stristr(string $haystack, mixed $needle [,bool $before_needle=false])
 
				- //返回haystack字符串从needle第一次出现的位置开始到haystack结尾的字符串。
 
				- //haystack 在该字符串中查找。
 
				- //needle 如果needle不是一个字符串,那么它将被转换为整型并被视为字符顺序值。
 
				- //before_needle 若为TRUE,将返回needle在haystack中的位置之前的部分(不包括needle)。
 
				- //参数needle和haystack将以不区分大小写的方式对待。
 
				- //返回匹配的子字符串,如果needle未找到,返回false。
 
				-  
 
				- //检查敏感字符
 
				- function FWClearGetText($str){
 
				- global $ecms_config;
 
				- //开启防火墙(0为关闭,1为开启)
 
				- if(empty($ecms_config['fw']['eopen'])){
 
				- return '';
 
				- }
 
				- //屏蔽提交敏感字符,多个用半角逗号格开
 
				- if(empty($ecms_config['fw']['cleargettext'])){
 
				- return '';
 
				- }
 
				- $r=explode(',',$ecms_config['fw']['cleargettext']);
 
				- $count=count($r);
 
				- for($i=0;$i<$count;$i++){
 
				- if(stristr($str,$r[$i])){
 
				- FWShowMsg('Post String');
 
				- }
 
				- }
 
				- }
 
				- function FWShowMsg($msg){exit();}
 
				- //处理提交字符
 
				- function RepPostStr($val,$ecms=0){
 
				- $val=ehtmlspecialchars($val,ENT_QUOTES);//既转换双引号也转换单引号
 
				- if($ecms==0){
 
				- CkPostStrChar($val);
 
				- $val=AddAddsData($val);
 
				- //FireWall
 
				- FWClearGetText($val);
 
				- }
 
				- return $val;
 
				- }
 
				- //htmlspecialchars 将特殊字符转换为HTML实体
 
				- //string htmlspecialchars(string $string [,int $flags=ENT_COMPAT | ENT_HTML401 [,string $encoding=ini_get("default_charset") [,bool $double_encode=true]]])
 
				- //某类字符在HTML中有特殊用处,如需保持原意,需要用HTML实体来表达。本函数会返回字符转义后的表达。如需转换子字符串中所有关联的名称实体,使用htmlentities()代替本函数。
 
				- //string 待转换的string
 
				- //flags 位掩码,由以下某个或多个标记组成,设置转义处理细节、无效单元序列、文档类型。默认是ENT_COMPAT|ENT_HTML401。
 
				- //有效的flags常量
 
				- //ENT_COMPAT 会转换双引号,不转换单引号。
 
				- //ENT_QUOTES 既转换双引号也转换单引号。
 
				- //ENT_NOQUOTES 单/双引号都不转换。
 
				- //ENT_IGNORE 静默丢弃无效的代码单元序列,而不是返回空字符串。不建议使用此标记,因为它可能有安全影响。
 
				- //ENT_SUBSTITUTE 替换无效的代码单元序列为Unicode代替符,U+FFFD(UTF-8)或者�(其他),而不是返回空字符串。
 
				- //ENT_DISALLOWED 为文档的无效代码点替换为Unicode代替符(Replacement Character):U+FFFD(UTF-8)或�(其他),而不是把它们留在原处。比如以下情况下就很有用:要保证XML文档嵌入额外内容时格式合法。
 
				- //ENT_HTML401 以HTML 4.01处理代码
 
				- //ENT_XML1 以XML 1处理代码
 
				- //ENT_XHTML 以XHTML处理代码
 
				- //ENT_HTML5 以HTML5处理代码
 
				-  
 
				- //htmlspecialchars()函数把预定义的字符转换为HTML实体
 
				- //预定义的字符是:
 
				- //&(和号)会被转换成&
 
				- //"(双引号)会被转换成"
 
				- //'(单引号)会被转换成'
 
				- //<(小于)会被转换成<
 
				- //>(大于)会被转换成>
 
				-  
 
				- //支持的字符集列表
 
				- //ISO-8859-1 西欧,Latin-1
 
				- //ISO-8859-5 Little used cyrillic charset(Latin/Cyrillic)
 
				- //ISO-8859-15 西欧,Latin-9。增加欧元符号,法语和芬兰语字母在Latin-1(ISO-8859-1)中缺失。
 
				- //UTF-8 ASCII兼容的多字节8位Unicode。
 
				- //cp866 DOS特有的西里尔编码。本字符集在4.3.2版本中得到支持。
 
				- //cp1251 Windows特有的西里尔编码。本字符集在4.3.2版本中得到支持。
 
				- //cp1252 Windows特有的西欧编码。
 
				- //KOI8-R 俄语。本字符集在4.3.2版本中得到支持。
 
				- //BIG5 繁体中文,主要用于中国台湾省。
 
				- //GB2312 简体中文,中国国家标准字符集。
 
				- //BIG5-HKSCS 繁体中文,附带香港扩展的Big5字符集。
 
				- //Shift_JIS 日语
 
				- //EUC-JP 日语
 
				- //MacRoman Mac操作系统(Mac OS)使用的字符串。
 
				-  
 
				- //double_encode 可选,布尔值,规定了是否编码已存在的HTML实体。
 
				- //TRUE 默认,将对每个实体进行转换。
 
				- //FALSE 不会对已存在的HTML实体进行编码。
 
				-  
 
				- //返回编码后的字符,如果指定的编码encoding里,string包含了无效的代码单元序列,没有设置ENT_IGNORE或者ENT_SUBSTITUTE标记的情况下,会返回空字符串。
 
				-  
 
				- //更新日志
 
				- //5.6.0 The default value for the encoding parameter was changed to be the value of the default_charset configuration option(配置选项)。
 
				- //5.4.0 encoding参数的默认值改成UTF-8。
 
				- //5.4.0 增加常量ENT_SUBSTITUTE、ENT_DISALLOWED、ENT_HTML401、ENT_XML1、ENT_XHTML、ENT_HTML5。
 
				- //5.3.0 增加常量ENT_IGNORE。
 
				- //5.2.3 增加参数double_encode。
 
				-  
 
				- function ehtmlspecialchars($val,$flags=ENT_COMPAT){//默认会转换双引号,不转换单引号。
 
				- global $ecms_config;
 
				- if(PHP_VERSION>='5.4.0'){
 
				- if($ecms_config['sets']['pagechar']=='utf-8'){
 
				- $char='UTF-8';
 
				- }else{
 
				- $char='ISO-8859-1';
 
				- }
 
				- $val=htmlspecialchars($val,$flags,$char);
 
				- }else{
 
				- $val=htmlspecialchars($val,$flags);
 
				- }
 
				- return $val;
 
				- }
 
				- ?>
 
			  | 
		
	
暂无评论
发表评论