Приветствую! Перерыл интернет, но проблему не решил… Может неверно формулировал запрос?!
Вобщем трабла в следующем:
Долго оттачивал тему на Denwer. Перенес сайт на хостинг и все, вроде бы, нормально, за исключением формы обратной связи…
При заполнении всех полей (да и не всех если), все время пишет одно и то же: "Впишите имя и корректный email". Вписывал имя по английски!
Я не ас в кодинге, но покопавшись – проблем в нем не обнаружил (ознакомился с несколькими учебниками php, js)
Вот код темы для обратной связи:
if(isset($_POST['submit'])) {
error_reporting(E_NOTICE);
function valid_email($str)
{
return ( ! preg_match("/^([a-z0-9]+[a-z0-9\+_\-]*)(\.[a-z0-9\+_\-]+)*@([a-z0-9]+[a-z0-9\-]+\.)+[a-z]{2,6}$/ix", $str)) ? FALSE : TRUE;
}
if($_POST['name']!='' && $_POST['email']!='' && valid_email($_POST['email'])==TRUE && strlen($_POST['comment'])>1)
{
$to = preg_replace("([\r\n])", "", $_POST['receiver']);
$from = preg_replace("([\r\n])", "", $_POST['email']);
$subject = "Contact Form";
$message = $_POST['comment'];
$match = "/(bcc:|cc:|content\-type:)/i";
if (preg_match($match, $to) ||
preg_match($match, $from) ||
preg_match($match, $message)) {
die("Header injection detected.");
}
$headers = "От: ".$from."\r\n";
$headers .= "Reply-to: ".$from."\r\n";
if(mail($to, $subject, $message, $headers))
{
echo 1; //SUCCESS
}
else {
echo 2; //FAILURE - server failure
}
}
else {
echo 3; //FAILURE - not valid email
}
}else{
die("Direct access not allowed!");
}
Как видно в коде, есть три варианта ответ echo 1, 2 и 3. Так как выдает сообщение echo 3, предполагаю, что ошибка где-то в коде, а не у хостера…
Я новичок в этом, поэтому прошу строго не судить, если ошибка очевидна…
Заранее благодарен!
1. вынеси функцию всё таки за if
2. $_POST[‘name’]!=” – лучше так не писать, если хочешь проверить на пустоту, !empty($_POST[‘name’])
а в итоге, что то вроде
у себя проверял, всё норм, если не отправится, попробуй закоментить
если будет выводить всё как надо, проблема в хостере
Спасибо, axeleus!
Перепробовал все варианты – эффект тот же…
Отправил запрос хостеру – сказали посмотрят…
А может ли это возникать из-за кодировки?
Какие еще могут быть проблемы? Может ли быть проблема в месте вывода данного кода?
Это в шапке
Это на странице формы
Если все нормально, проблема точно в хостере?
P.S. Есть ли такое понятие, как лишний пробел в коде? Или это не имеет значение?
попробуй без аякса сначала, если всё норм, значит неправильно написан код ответа от запроса.
Закоментил аякс – результат: перенаправление на sendmail.php (то есть открылась страница) и в ней ответ 3 (то есть echo 3, но без текста из формы)…
Я в этом не спец, поэтому даже не знаю как реагировать 🙂
Что это значит? Что код работает?
Это значит, что нужно внимательно просмотреть что отправляется скрипту, в любом случае косяк в тех данных которые передаются. Если не справишься пиши в аську, посмотрим.
Спасибо большое, axeleus, попробую разобраться…
Напишу, если не справлюсь 🙂