PHP - Filter_var替代?

时间:2012-02-03 09:16:35

标签: php sanitize filter-var

我构建了一个php脚本来输出表单中发布的数据,但是我遇到了一个问题。该网站将运行的服务器运行PHP 5.1.6。此版本的PHP不支持filter_var。

我需要在短期内(最好是昨天)了解替代方案,并且无法在Google或Stack Overflow上找到直接的内容。

Mayhap过去有人遇到过同样的问题并快速解决了这个问题吗?

此代码:

$email= filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$answer= filter_var($_POST['answer'], FILTER_SANITIZE_STRING);

需要与PHP 5.1.6兼容,因此检查电子邮件地址的genuinity,并且在任一字段中都不使用恶意代码。有什么提示吗?

非常感谢!

4 个答案:

答案 0 :(得分:4)

对于电子邮件,您可以使用正则表达式:(例如:http://www.totallyphp.co.uk/validate-an-email-address-using-regular-expressions

对于字符串你也可以做正则表达式,但这有点太重,所以如果你把它发送到数据库可能是mysql_real_escape_string()的组合,而对于html,你应该使用htmlentities()

http://de.php.net/manual/en/function.mysql-real-escape-string.php

http://www.php.net/manual/en/function.htmlentities.php

我不认为filter_var函数与使用这些方法有很大不同

答案 1 :(得分:2)

您可以通过PECL将扩展安装到PHP 5.1: http://pecl.php.net/package/filter

答案 2 :(得分:2)

我会一般使用正则表达式。它为您提供最大的灵活性。在互联网上有很多有用的资源。看一看herehere

答案 3 :(得分:-1)

使用我在之前的答案中给出的信息,这是我如何解决我的问题:

<?PHP // Retreive POST data and sanitize it: trim string, no HTML, plain text
$variable1=htmlentities(trim($_POST['input1']), ENT_NOQUOTES);
$variable2=htmlentities(trim($_POST['input2']), ENT_NOQUOTES);
$emailaddress=$_POST['email']; // sanitizing email address happens below

if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$", $emailadres)){    // check email address and if legit, do this:
        echo '<p>The e-mail address given is valid.</p>'

} else{ // if email is not legit, do this:
        echo '<p>The e-mail address given is not valid.</p>';
}
?>

我希望这有助于某人:)