在PHP中过滤非法字符的实现
< PHP
类sqlsafe {
私人getfilter =|美元(和|或) B +(> < | | = |在|像)| / *。+ * / | < *脚本 B | ◎预算执行情况 B |联盟。+选择|更新。+ |插入 +到+价值|(选择|删除)。+ |(创建|改变|滴|截断) +(表|数据库);
私人$后置= B(和|或) B. {或}(= | > | < | 本 B | Blike B)| / *,+ * / | < *脚本 B | 预算执行情况 B |联盟。+选择|更新。+ |插入 +到+价值|(选择|删除)。+ |(创建|改变|滴|截断) +(创建|改变|滴|截断)。
私人cookiefilter美元= B(和|或) B. {或}(= | > | < | 本 B | Blike B)| / *,+ * / | < *脚本 B | 预算执行情况 B |联盟。+选择|更新。+ |插入 +到+价值|(选择|删除)。+ |(创建|改变|滴|截断) +(创建|改变|滴|截断)。
*构造函数
* /
公共功能__construct(){
foreach(_get美元美元美元关键= >价值){ $这-> stopattack(美元,美元的价值,美元-> getfilter);}
foreach(_post美元美元美元关键= >价值){ $这-> stopattack(美元,美元的价值,美元->后置);}
foreach(_cookie美元美元美元关键= >价值){ $这-> stopattack(美元,美元的价值,美元-> cookiefilter);}
}
*参数检查和写入日志
* /
公共功能stopattack(strfiltkey美元美元美元,strfiltvalue,arrfiltreq){
如果(is_array($ strfiltvalue))strfiltvalue美元=崩溃(美元strfiltvalue);
如果(preg_match(。arrfiltreq美元。 / /
美元-> writeslog($ _server {remote_addr )。。strftime (% y %M - %:% H M:%s)。美元。_server {php_self 。_server美元{request_method 。strfiltkey美元。strfiltvalue美元。)。
showmsg(你提交的参数是非法的,系统记录了你的工作!,',0,1);
}
}
* SQL注入日志
* /
公共功能writeslog($日志){
log_path = cache_path美元。'logs'。directory_separator。'sql_log .txt;
TS = fopen(log_path美元美元,+);
作用是:将内容($ TS,$日志。 ;
Fclose($ TS);
}
}
>