Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2011, 19:12   #1
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию Форма обратной связи

День добрый.

Помогите довести до ума форму обратной связи.
Есть скрпт отправки (ниже) скрипт был взят от сюда . Работает нормально но хотелось бы чуть улучшить.

1) Как добавить проверку на валидность вводимого em@ilа что бы не писали vasyapupkun а вводили нормальный почтовый адрес (хотя бы vasya@pupkin.ru :D )

2) Как вставить <br> чтобы сообщение с сайта приходило не в одну строку а построчно.


Кто откликнется - за ранее спасибо!


PHP код:
<?php
$xxx 
=$_POST["xxx"];

$name=$_POST["name"];
$email=$_POST["email"];
$mess=$_POST["mess"];  
if (isset (
$name))
{
$name substr($name,0,20); //Не может быть более 20 символов
if (empty($name))
{
echo 
"<center><b>Не указано имя.<p>";
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else 
{
$name "не указано";
}
if (isset (
$email))
{
$email substr($email,0,20); //Не может быть более 20 символов
if (empty($email))
{
echo 
"<center><b>Не указан e-mail.<p>";
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else 
{
$email "не указано";
}
if (isset (
$mess))
{
$mess substr($mess,0,1000); //Не может быть более 1000 символов
if (empty($mess))
{
echo 
"<center><b>Нет текста вопроса.<p>";
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>";
exit;
}
}
else 
{
$mess "не указано";
}
$i "не указано";
if (
$name == $i AND $email == $i AND $mess == $i)
{
echo 
"Ошибка ! Скрипту не были переданы параметры !";
exit;
}
$to "info@sait.ru";  /*МЕНЯЕШЬ НА СВОЙ АДРЕСС!*/
$subject "вопрос от посетителя сайта";
$message "Имя:$name::::::::::Электронный адрес:$email::::::::::Сообщение:$mess:::::::::IP-адрес:$REMOTE_ADDR";
mail ($to,$subject,$message) or print "Не могу отправить письмо.";
echo 
"<center><b>Спасибо за отправку вашего сообщения<br><a href=index.htm>Нажмите</a>, чтобы вернуться на Главную страницу сайта";
exit;
?>

Последний раз редактировалось dr.Chas; 29.11.2011 в 19:57.
Cone вне форума Ответить с цитированием
Старый 29.11.2011, 20:28   #2
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Нашел кусок кода который должен решать проблему валидности,
preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is', $mail);
как его сюда прикрутить?
Cone вне форума Ответить с цитированием
Старый 29.11.2011, 21:58   #3
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

PHP код:
$email preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is'$_POST["email"]); 
dr.Chas вне форума Ответить с цитированием
Старый 30.11.2011, 05:26   #4
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от dr.Chas Посмотреть сообщение
PHP код:
$email preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is'$_POST["email"]); 
Спасибо за ответ!


Вот так нужно ее вставить ?!


PHP код:
<?php 
$xxx 
=$_POST["xxx"]; 

$name=$_POST["name"]; 
$email=$_POST["email"]; 
$mess=$_POST["mess"];   
if (isset (
$name)) 

$name substr($name,0,20); //Не может быть более 20 символов 
if (empty($name)) 

echo 
"<center><b>Не указано имя.<p>"
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>"
exit; 


else  

$name "не указано"

if (isset (
$email)) 

$email substr($email,0,20) || $email preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is'$_POST["email"]); //Не может быть более 20 символов или майл не существует
if (empty($email)) 

echo 
"<center><b>Не указан e-mail.<p>"
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>"
exit; 


else  

$email "не указано"

if (isset (
$mess)) 

$mess substr($mess,0,1000); //Не может быть более 1000 символов 
if (empty($mess)) 

echo 
"<center><b>Нет текста вопроса.<p>"
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>"
exit; 


else  

$mess "не указано"

$i "не указано"
if (
$name == $i AND $email == $i AND $mess == $i

echo 
"Ошибка ! Скрипту не были переданы параметры !"
exit; 

$to "info@sait.ru";  /*МЕНЯЕШЬ НА СВОЙ АДРЕСС!*/ 
$subject "вопрос от посетителя сайта"
$message "Имя:$name::::::::::Электронный адрес:$email::::::::::Сообщение:$mess:::::::::IP-адрес:$REMOTE_ADDR"
mail ($to,$subject,$message) or print "Не могу отправить письмо."
echo 
"<center><b>Спасибо за отправку вашего сообщения<br><a href=index.htm>Нажмите</a>, чтобы вернуться на Главную страницу сайта"
exit; 
?>
Cone вне форума Ответить с цитированием
Старый 30.11.2011, 05:38   #5
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Все допёр! Код будет такой!

PHP код:
<?php  
$xxx 
=$_POST["xxx"];  

$name=$_POST["name"];  
$email=$_POST["email"];  
$mess=$_POST["mess"];    
if (isset (
$name))  
{  
$name substr($name,0,20); //Не может быть более 20 символов  
if (empty($name))  
{  
echo 
"<center><b>Не указано имя.<p>";  
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>";  
exit;  
}  
}  
else   
{  
$name "не указано";  
}  
if (isset (
$email))  
{  
$email preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is'$_POST["email"]); //Не может быть более 20 символов или майл не существует 
if (empty($email))  
{  
echo 
"<center><b>Не указан e-mail.<p>";  
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>";  
exit;  
}  
}  
else   
{  
$email "не указано";  
}  
if (isset (
$mess))  
{  
$mess substr($mess,0,1000); //Не может быть более 1000 символов  
if (empty($mess))  
{  
echo 
"<center><b>Нет текста вопроса.<p>";  
echo 
"<a href=voprosi-i-otveti.php>Вернуться и правильно заполнить форму.</a>";  
exit;  
}  
}  
else   
{  
$mess "не указано";  
}  
$i "не указано";  
if (
$name == $i AND $email == $i AND $mess == $i)  
{  
echo 
"Ошибка ! Скрипту не были переданы параметры !";  
exit;  
}  
$to "info@sait.ru";  /*МЕНЯЕШЬ НА СВОЙ АДРЕСС!*/  
$subject "вопрос от посетителя сайта";  
$message "Имя:$name::::::::::Электронный адрес:$email::::::::::Сообщение:$mess:::::::::IP-адрес:$REMOTE_ADDR";  
mail ($to,$subject,$message) or print "Не могу отправить письмо.";  
echo 
"<center><b>Спасибо за отправку вашего сообщения<br><a href=index.htm>Нажмите</a>, чтобы вернуться на Главную страницу сайта";  
exit;  
?>


Так как сделать чтобы сообщения приходили
1) от кого
2) ящик
3) сообщения
в 3 строки а не в одну?!!
1) от кого 2) ящик 3) сообщения
Cone вне форума Ответить с цитированием
Старый 30.11.2011, 14:16   #6
gephaest
Пользователь
 
Регистрация: 22.10.2011
Сообщений: 14
По умолчанию

http://php.net/manual/ru/function.filter-var.php
gephaest вне форума Ответить с цитированием
Старый 30.11.2011, 20:13   #7
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от gephaest Посмотреть сообщение
Спасибо за ответ! ТОлько вот я в php не взуб ногой, все знания сводятся к чисто ковырания по скриптам. Можете помоьт решить проблему с отправкой содержания собщения по строчно?
Cone вне форума Ответить с цитированием
Старый 01.12.2011, 22:42   #8
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

PHP код:
$br "<br/>\n"// символ \n - linux, символ \n\r windows
$message "Имя:$name $br ::::::::::Электронный адрес:$email $br ::::::::::Сообщение:$mess $br :::::::::IP-адрес:$REMOTE_ADDR"
Если я правильно понял что нужно.
dr.Chas вне форума Ответить с цитированием
Старый 02.12.2011, 15:05   #9
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от dr.Chas Посмотреть сообщение
PHP код:
$br "<br/>\n"// символ \n - linux, символ \n\r windows
$message "Имя:$name $br ::::::::::Электронный адрес:$email $br ::::::::::Сообщение:$mess $br :::::::::IP-адрес:$REMOTE_ADDR"
Если я правильно понял что нужно.

Спасибо, все работает, это именно то что было нужно!
Дело в том что на ящик сообщения с сайта приходили, одной строкой, не очень удобно разбирать где тема где сообщение, а теперь приходят как надо.
Еще раз Спасибищщще !
Cone вне форума Ответить с цитированием
Старый 07.12.2011, 07:47   #10
Cone
Форумчанин
 
Регистрация: 05.08.2010
Сообщений: 127
По умолчанию

Цитата:
Сообщение от dr.Chas Посмотреть сообщение
PHP код:
$email preg_match('|([a-z0-9_\.\-]{1,20})@([a-z0-9\.\-]{1,20})\.([a-z]{2,4})|is'$_POST["email"]); 
Теперь при отправки приходит письмо где почтовый адрес просто цифра 1, а не тот что был введен при отправки!
Cone вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Php форма обратной связи OgStyle Помощь студентам 4 03.01.2011 17:13
форма обратной связи с аттачем menn PHP 3 28.10.2010 14:03
Форма обратной связи margo_31 Помощь студентам 6 20.09.2009 20:38
Форма обратной связи belvision PHP 5 10.11.2008 16:57