- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Добрый день!
Поставил форму обратной связи на сайте, а она глючит: отказывается проводить проверку. Подскажите в чем может быть проблема?
А вот больной зуб:
header("Content-type: text/html; charset=utf-8");
//**********************************************
if(empty($_POST['js'])){
$log =="";
$error="no"; //флаг наличия ошибки
$posName = addslashes($_POST['posName']);
$posName = htmlspecialchars($posName);
$posName = stripslashes($posName);
$posName = trim($posName);
$posEmail = addslashes($_POST['posEmail']);
$posEmail = htmlspecialchars($posEmail);
$posEmail = stripslashes($posEmail);
$posEmail = trim($posEmail);
$posText = addslashes($_POST['posText']);
$posText = htmlspecialchars($posText);
$posText = stripslashes($posText);
$posText = trim($posText);
//Проверка правильность имени
if(!$posName || strlen($posName)>20 || strlen($posName)<3) {
$log.="<li>Неправильно заполнено поле \"Ваше имя\" (3-15 символов)!</li>"; $error="yes"; }
//Проверка email адреса
function isEmail($posEmail)
{
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i"
,$posEmail));
}
if($posEmail == '')
{
$log .= "<li>Пожалуйста, введите Ваш email!</li>";
$error = "yes";
}
else if(!isEmail($posEmail))
{
$log .= "<li>Вы ввели неправильный e-mail. Пожалуйста, исправьте его!</li>";
$error = "yes";
}
//Проверка наличия введенного текста комментария
if (empty($posText))
{
$log .= "<li>Необходимо указать текст сообщения!</li>";
$error = "yes";
}
//Проверка длины текста комментария
if(strlen($posText)>1010)
{
$log .= "<li>Слишком длинный текст, в вашем распоряжении 1000 символов!</li>";
$error = "yes";
}
//Проверка на наличие длинных слов
$mas = preg_split("/[\s]+/",$posText);
foreach($mas as $index => $val)
{
if (strlen($val)>60)
{
$log .= "<li>Слишком длинные слова (более 60 символов) в тексте записи!</li>";
$error = "yes";
break;
}
}
sleep(2);
//Если нет ошибок отправляем email
if($error=="no")
{
//Отправка письма админу о новом комментарии
$to = "ххххх@gmail.com";//Ваш e-mail адрес
$mes = "Человек по имени $posName отправил Вам сообщение из формы обратной связи Вашего сайта: \n\n$posText";
$from = $posEmail;
$sub = '=?utf-8?B?'.base64_encode('Новое сообщение с Вашего сайта').'?=';
$headers = 'From: '.$from.'
';
$headers .= 'MIME-Version: 1.0
';
$headers .= 'Content-type: text/plain; charset=utf-8
';
mail($to, $sub, $mes, $headers);
echo "1"; //Всё Ok!
}
else//если ошибки есть
{
echo "<p style='font: 13px Verdana;'><font color=#FF3333><strong>Ошибка !</strong></font></p><ul style='list-style: none; font: 11px Verdana; color:#000; border:1px solid #c00; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; background-color:#fff; padding:5px; margin:5px 10px;'>".$log."</ul><br />"; //Нельзя отправлять пустые сообщения
}
}
if(empty($_POST['js']))
Что проверяем?
Имя, мыло, телефон, текст.
Если правильно вас понял, эта строчка должна выглядеть так?
if(empty($_POST["posName", "posEmail", "posTell", "posText"])){
---------- Добавлено 01.06.2016 в 14:47 ----------
Не фурычит
---------- Добавлено 01.06.2016 в 14:58 ----------
А js у формы такой:
$(document).ready(function() {
// Форма обратной связи................................./
var regVr22 = "<div><img style='margin-bottom:-4px;' src='img/load.gif' alt='Отправка...' width='16' height='16'><span style='font: 11px Verdana; color:#333; margin-left:6px;'>Сообщение обрабатывается...</span></div><br />";
$("#send").click(function(){
$("#loadBar").html(regVr22).show();
var posName = $("#posName").val();
var posEmail = $("#posEmail").val();
var posTell = $("#posTell").val();
var posText = $("#posText").val();
$.ajax({
type: "POST",
url: "php/send.php",
data: {"posName": posName, "posEmail": posEmail, "posTell": posTell, "posText": posText},
cache: false,
success: function(response){
var messageResp = "<p style='font-family:Verdana; font-size:11px; color:green; border:1px solid #00CC00; padding:10px; margin:20px; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; background-color:#fff;'>Спасибо, <strong>";
var resultStat = "!</strong> Ваше сообщение отправлено!</p>";
var oll = (messageResp + posName + resultStat);
if(response == 1){
$("#loadBar").html(oll).fadeIn(3000);
$("#posName").val("");
$("#posEmail").val("");
$("#posTell").val("");
$("#posText").val("");
} else {
$("#loadBar").html(response).fadeIn(3000); }
}
});
return false;
});
});
if(empty($_POST['js'])){господи
return(preg_match("/^[-_.[:alnum:]]+@((([[:alnum:]]|[[:alnum:]][[:alnum:]-]*[[:alnum:]])\.)+(ad|ae|aero|af|ag|ai|al|am|an|ao|aq|ar|arpa|as|at|au|aw|az|ba|bb|bd|be|bf|bg|bh|bi|biz|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|com|coop|cr|cs|cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|edu|ee|eg|eh|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gh|gi|gl|gm|gn|gov|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|in|info|int|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|mg|mh|mil|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|museum|mv|mw|mx|my|mz|na|name|nc|ne|net|nf|ng|ni|nl|no|np|nr|nt|nu|nz|om|org|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|pro|ps|pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw)$|(([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5])\.){3}([0-9][0-9]?|[0-1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]))$/i",$posEmail));
что
за
if(!$posName || strlen($posName)>20 || strlen($posName)<3) {$log.="<li>Неправильно заполнено поле \"Ваше имя\" (3-15 символов)!</li>";
говнокод
Спасибо, кэп. Как его исправить?
Проще воспользоватся конструкторами форм обратной связи
Проще воспользоватся конструкторами форм обратной связи
Все, что я встречал - с обратными ссылками, не хочется.
Код работает, но есть небольшие глюки:
Все остальное работает. Уже голову сломал! Может кто подскажет чего не хватает?
Возможно это поможет:
1. if(!$posName || заменить на if(empty($posName) ||
2. По виду должно работать, можно попробовать
$mes = "Человек по имени $posName
на
$mes = "Человек по имени ".$posName."
3. Не понял в чём проблема.
Если не доходят письма на mail.ru то значит на хостинге что-то не правильно с отправкой писем через mail() или письмо не по стандарту получилось.
Советую mail() заменить на PHPMailer, можно и через SMTP с помощью PHPMailer отправлять если что-то с отправкой писем через хостинг.
Снова выдает ошибку, что поле не заполнено, хотя значение введено. Второй день об это бьюсь.
$mes = "Человек по имени $posName
на
$mes = "Человек по имени ".$posName."
Ничего не изменилось. Не могу понять: почему при равных условиях формируются posEmail и posTell, но не posName?
а код формы где?
а код формы где?
Если вы имеете ввиду HTML, то не думаю, что он нужен. С ним все нормально, я его сто раз проверял.
Вот что не так с этим PHP? По всем признакам posName должен отображаться, но его почему-то нет.