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

0

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

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

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

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

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

<?php


$your_email = "[email protected]"; // 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 appears



if (!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 [email protected]\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

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

Теги:
forms
contact

1 ответ

0

Вам не хватает побега в вашем регулярном выражении для параметра $ mes:

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

Поскольку это - не ускользнуло, оно рассматривалось как any chars from slash to space.

  • 0
    Не могли бы вы объяснить немного лучше, пожалуйста. Я действительно не знаю, как это работает. Спасибо
  • 0
    [az] - это «все символы между a и z . [a\-z] is» должно быть либо a , тире, либо z ». Как я уже сказал, указанная тире не экранирована.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню