формы — я не могу отправить сообщение, используя .Stack Overflow

Я не могу отправить сообщение используя .php.

Как ни странно, я проверял и мог отправлять сообщения в прошлом, но по какой-то причине я теперь получаю сообщение «* Поле« Сообщение »должно содержать только буквы, цифры, пробелы и основные знаки препинания (‘-,.), Имеет ограничение из 1000 символов & не следует оставлять пустым. ».

Я знаю, что это сообщение, полученное из-за конфликта в форме сообщения и .php, но у меня нет навыков для его исправления.

Я создал сайт некоторое время назад, используя тот же контакт & .php формы, и это тоже имеет ту же проблему.

Пожалуйста, порекомендуйте:

<?php$your_email = "mailto@host.com"; // email address to which the form data will be sent
$subject = "Subject Here"; // subject of the email that is sent
$thanks_page = "/thankyou/"; // path to the thank you page following successful form submission
$contact_page = "http://test.com/contact/index.html"; // path to the HTML contact page where the form appearsif (!isset($_POST['submit'])) {
header( "Location: $contact_page" );
}

if (isset($_POST["submit"])) {
$nam = $_POST["name"];
$ema = trim($_POST["email"]);
$mes = $_POST["message"];
$spa = $_POST["spam"];

if (get_magic_quotes_gpc()) {
$nam = stripslashes($nam);
$ema = stripslashes($ema);
$mes = stripslashes($mes);
}

$error_msg=array();

if (empty($nam) || !preg_match("~^[a-z\-'\s]{1,60}$~i", $nam)) {
$error_msg[] = "<br/>* The name field must contain only letters, spaces, dashes ( - ) and single quotes ( ' ).\n<br />\n<br />";
}

if (empty($ema) || !filter_var($ema, FILTER_VALIDATE_EMAIL)) {
$error_msg[] = "<br/>* Your email must have a valid format, such as name@mailhost.com\n<br />\n<br />";
}

$limit = 1000;

if (empty($mes) || !preg_match("/^[0-9A-Za-z\/-\s'\(\)!\?\.,]+$/", $mes) || (strlen($mes) > $limit)) {
$error_msg[] = "<br/>* The Message field must contain only letters, digits, spaces and basic punctuation (&nbsp;'&nbsp;-&nbsp;,&nbsp;.&nbsp;), has a limit of 1000 characters &amp; should not be left empty.\n<br />\n<br />";
}

if (!empty($spa) && !($spa == "4" || $spa == "four")) {
echo "* You failed the spam test! Please go back and try again.\n<br />\n<br />";
exit ();
}

if ($error_msg) {
echo '<!--CONTACT--->
<!DOCTYPE html>
<!--[if lt IE 7]><html lang="en-US" class="no-js lt-ie9 lt-ie8 lt-ie7"><![endif]-->
<!--[if IE 7]><html lang="en-US" class="no-js lt-ie9 lt-ie8"><![endif]-->
<!--[if IE 8]><html lang="en-US" class="no-js lt-ie9"><![endif]-->
<!--[if gt IE 8]><!--><html lang="en-US" class="js"><!--<![endif]-->
<head>
</head>
<body>
</body>
</html>';
exit();
}

$email_body =
"Name of Sender: $nam\n\n" .
"Email: $ema\n\n" .
"Message:\n\n" .
"$mes" ;if (isset($_REQUEST['message']) && !$error_msg) {
mail ($your_email, $subject, $email_body, "From: $nam <$ema>" . "\r\n" . "Reply-To: $nam <$ema>");
header ("Location: $thanks_page");
exit();
}
}

Пример неправильной работы контактной формы можно посмотреть здесь — http://mickscaricatures.co.uk/contact.html

Есть ли какая-либо дополнительная информация, которую я могу предоставить, чтобы помочь разрешить эту ситуацию?

0

Решение

В вашем регулярном выражении отсутствует пропущенный параметр $ mes:

[..snip..]\/-\s[..snip..]
^---

С тех пор - не избежал, это рассматривается как any chars from slash to space,

0

Другие решения

Других решений пока нет …