2010-08-13 47 views
0

我在我的网站上有联系表单。我做了一个班来处理整个过程。 但有些东西没有在其中工作。验证电子邮件漏洞的表单不起作用

我有2个函数来检查开发,他们不工作。我不知道什么是与他们错了,所以在这里,他们是:

private function _validateExploit($val) { 
    $exploitPattrens = array('content-type', 'to:', 'bcc:', 'cc:', 'document.cookie', 'document.write', 'onclick', 'onload', '\n', '\r', '\t', '%0A', '%0D', '%08', '%09'); 

    foreach ($exploitPattrens as $exploit) { 
     if (strpos($exploit, $val) !== false){ 
      return true; 
     } 
    } 
    return false; 
} 

public function isExploit() { 

    if(call_user_func_array(array($this, '_validateExploit'), $_POST)) { 
      echo $errorMsg; 
    } 
} 

当我打电话isExploit(),它总是返回假的,不管我把它作为输入。

我想call_user_func_array有问题,但我找不到它。

在此先感谢!

回答

0

strpos($exploit, $val)应该strpos($val, $exploit)

你也有echo $errorMsg;但从未定义$errorMsg

我想你可能需要array_walkhttp://us3.php.net/manual/en/function.array-walk.php)而不是call_user_func_array。我只是循环$ _POST,而不是使用这两个函数。在这种情况下,我不认为他们真的会给你买东西 - 而且他们可能不会像你期待的那样回报价值。

+0

感谢您的建议,我使用'array_filter'是因为'array_walk'在成功时总是返回true,在这种情况下它必须能够成功验证。 'array_filter'返回函数返回的内容。感谢您指点我:D – Maher4Ever 2010-08-13 16:07:18

0

您正在将$_POST变量传递给函数。 $_POSTcall_user_func_array()函数所需的数组,但您不会将它视为_validateExploit函数中的数组。你把它当作一个字符串来对待。您需要循环遍历$ val数组,以及测试该数组中的每个项目,或者只需选择一个。如另一个答案中所示,您也可以在strpos()中将您的干草堆和针头逆转。

private function _validateExploit($val) { 
    $exploitPattrens = array('content-type', 'to:', 'bcc:', 'cc:', 'document.cookie', 'document.write', 'onclick', 'onload', '\n', '\r', '\t', '%0A', '%0D', '%08', '%09'); 

    foreach ($exploitPattrens as $exploit) { 
     foreach ($val as $itm) { 
      if (strpos($itm, $exploit) !== false){ 
       return true; 
      } 
     } 
    } 
    return false; 
} 
+0

call_user_func_array()问题的好处。如果OP以你的方式重写'_validateExploit()',他可以调用'$ this - > _ validateExploit($ _ POST)' – 2010-08-13 14:52:37

+0

他们可以这样做,但使用'call_user_func_array()'调用它可以让他们灵活地调用任何函数他们希望在传入$ _POST数组的循环中作为参数。 if语句可能只是真实代码的一小部分,为我们的好处添加了函数的名称。 – Buggabill 2010-08-13 15:23:11

+0

感谢您帮助我,我修复了'strpos()'。但我实际上认为''call_user_func_attay()'会为我完成这项工作,而不是通过对性能不利的嵌套循环。 – Maher4Ever 2010-08-13 16:05:41