我正在使用以下内容清理联系表单中的输入:
<?php
$name = strip_tags(stripslashes($_POST['name']));
//this is repeated for several other fields, then:
if(isInjected($name)) { die(); }
/* see isInjected function below */
// send the mail
?>
我正在使用此功能:
<?php
/* function from http://phpsense.com/php/php-mail.html */
function isInjected($str) {
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str)) {
return true;
}
else {
return false;
}
}
?>
这是否足以清理我的联系表格?
感谢。
答案 0 :(得分:4)
作为旁注,代码有点臃肿。它很容易被削减:
/* function from http://phpsense.com/php/php-mail.html */
function isInjected($str) {
$inject = "/(\r|\t|%0A|%0D|%08|%09)+/i";
return (preg_match($inject, $str) > 0);
}
答案 1 :(得分:1)
看起来很好,比平均输入验证更好。我个人也喜欢处理输入类型。在我的基础控制器中,我有几个功能可以检查输入是否是有效的出生日期,电子邮件地址等。如果您在现有验证中添加此类验证,则可以很好地处理IMO。