4

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

我需要在短期内(最好是昨天)知道一个替代方案,并且在 Google 或 Stack Overflow 上找不到直接的东西。

也许这里有人过去遇到过同样的问题并为我提供了快速解决方案?

这段代码:

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

需要与 PHP 5.1.6 兼容,所以邮箱地址经过真实性检查,两个字段都没有使用恶意代码。有小费吗?

非常感谢!

4

4 回答 4

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 函数与仅使用这些方法有很大不同

于 2012-02-03T09:35:30.440 回答
2

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

于 2012-02-03T09:31:44.903 回答
2

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

于 2012-02-03T09:44:29.160 回答
-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>';
}
?>

我希望这可以帮助别人 :)

于 2012-02-06T09:57:45.147 回答