我构建了一个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,并且在任一字段中都不使用恶意代码。有什么提示吗?
非常感谢!
答案 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)
答案 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>';
}
?>
我希望这有助于某人:)