PHP - Filter_var альтернатива? - PullRequest
       10

PHP - Filter_var альтернатива?

4 голосов
/ 03 февраля 2012

Я создал скрипт 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 голосов
/ 03 февраля 2012

для электронной почты вы можете использовать регулярное выражение: (например: 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 работает совсем не так, как использование этих методов

2 голосов
/ 03 февраля 2012

я бы вообще использовал регулярное выражение.это обеспечивает вам большую гибкость.в интернете много полезных ресурсов по этому поводу.посмотрите здесь или здесь

2 голосов
/ 03 февраля 2012

Вы можете установить расширение через PECL в PHP 5.1: http://pecl.php.net/package/filter

0 голосов
/ 06 февраля 2012

Используя информацию, которую мне дали в предыдущих ответах, вот как я исправил свою проблему:

<?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>';
}
?>

Надеюсь, это кому-нибудь поможет:)

...