Форма не отправляется, функция eregi() устарела
Возможный дубликат:
Как я могу преобразовать выражения ereg в preg в PHP?
Escape-строка для использования в mail()
Я пытаюсь отправить свою форму, но я получаю эту ошибку...
Устаревший: функция eregi() устарела
Я попытался заменить его на preg_match(), но безуспешно. Вот мой код:
$all_valid = $name_valid = $email_valid = $comments_valid = true;
if (isset($_POST['submit'])) {
if ($_POST['name'] == '') {
$all_valid = $name_valid = false;
}
if ($_POST['comments'] == '') {
$all_valid = $comments_valid = false;
}
if (!$validator->check_email_address($_POST['email'])) {
$all_valid = $email_valid = false;
}
if ($all_valid) {
// #### NO PROBLEMS FOUND - PROCESS THE FORM DATA HERE
$mail_to = 'cat30@hotmail.com'; // recipient address
$subject = "Email from website"; // email message subject line
$name = mysql_real_escape_string(trim($_POST['name'])); // sanitize the name
if (eregi("\r",$name) || eregi("\n",$name)){ // avoid email header injection
die();
}
$mail_from = mysql_real_escape_string(trim($_POST['email'])); // sanitize their email address
if (eregi("\r",$mail_from) || eregi("\n",$mail_from)){ // avoid email header injection
die();
}
$comments = htmlspecialchars(trim($_POST['comments'])); // convert HTML characters into entities
$headers = 'From: '. $mail_from. "\r\n";
mail($mail_to, $subject, $comments, $headers);
$response = '<h2>Thanks for contacting us, will get back to you soon</h2>';
}
}
1 ответ
Он возвращает немного другое значение, чем eregi, но если я правильно читаю ваш код, вы сможете использовать функцию strpos(), чтобы определить, существует ли подстрока в строке. Eregi игнорирует регистр, поэтому вам, возможно, придется объединить это с вызовом strtolower($string).
Примерно так: if (strpos("\r",strtolower($name)) || strpos("\n",strtolower($name)))