Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача данных из форм анкеты по э-почте, скрипт 
:(
    Опции темы
Enya
  Дата 27.4.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Вот какую задачу дали мне:
Нужно несколько полей формы, юзер вводит там типа данные
Код

- Имя <input type="text" ..>
- Указывает сайт<input type="text" ..>
- указывает кол-во желаемых клеток <select ...>
- Вводит пояснения <textarea ... >
И отправляет на указанный в скрипте адрес э-почты.


У меня есть вот такой скрипт отправки почты, можно его дорабоать?
Код

<?
$mymail="[email protected]"; // адрес email, на который будет высылаться почта (например, [email protected])
$updir="upload/"; // директория сайта, в которую будет производиться закачка файлов (например, upload/). Слэш в конце обязателен
$after_sent="/sent.shtml"; // страница, на которую будет перенаправлен пользователь после отправки письма
$max="2097152"; // максимальный размер файла, который сможет закачивать пользователь (в байтах)

## не меняйте ничего ниже

if(empty($go)) {
if (file_exists("header.html")) {
include ("header.html");
} 
?>
<p style="margin-left: 30" align="justify"><form ENCTYPE="multipart/form-data" action="<?echo $PHP_SELF;?>" method=post>
  <table border="0" width=83%>
    <tr> 
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Ваше имя: </td>
      <td width=70%> 
        <input type=text name=name>
      </td>
    </tr>
    <tr> 
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Ваш E-mail: </td>
      <td width=70%><input type=text name=mail></td>
    </tr>
<tr> 
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Тема: </td>
      <td width=70%> 
        <input type="text" name="subject">
      </td>
    </tr>
    <tr> 
      <td width=30%>Текст сообщения:</td>
      <td width=70%> 
        <textarea name="message" rows="10" cols="40"></textarea>
      </td>
    </tr>
    <tr> 
      <td width=30%>Прикрепить файл (max. 2 MB): </td>
      <td width=70%><INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="<?echo $max;?>"><INPUT NAME="userfile" TYPE="file" SIZE="40"></td>
    </tr>
    <tr> 
      <td colspan="2"> 
        <center>
          <input type="submit" name=go value="Отправить">
       </center>
      </td></tr></table></form></p>
<?
if (file_exists("footer.html")) {
include ("footer.html");
}
}
else {

if(empty($name)) { 
$bad = "Вы не подписались<br>";
}

if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mail)) // проверка правильности введенного e-mail адреса
{
$bad .= "Неправильный e-mail<br>";
}

if(empty($subject)) { 
$bad .= "Отсутствует тема сообщения<br>";
}

if ($bad) 
{
echo $bad;
?>
<a href="javascript:history.back(1)">Заполните, пожалуйста, пустые поля</a>
<?
exit;
}
if (is_uploaded_file($userfile)) { 
if (filesize($userfile)<=$max){ 
$fi = "K письму был прикреплен файл $userfile_name размером $userfile_size байт, который был закачан в директорию $updir";
}
}
$ip = getenv("REMOTE_ADDR");
$usa = getenv("HTTP_USER_AGENT");
$temp = "$fi\n\nВам было отправлено сообщение:\n\n$message\n\nIP-адрес отправителя: $ip\nuser-agent: $usa";
$subj = "$subject"; 
$body = $temp;
$adds = "From: $mail\n"; 
$adds .= "X-Sender: < $mail >\n";
$adds .= "Content-Type: text/plain; charset=windows-1251\n"; 
mail($mymail,$subj,$body,$adds); 
Header("Location: $after_sent");
}
if (is_uploaded_file($userfile)) {
if (filesize($userfile)<=$max){
$dest=$updir.$userfile_name;
    move_uploaded_file($userfile, $dest);
}
} 
?>
 


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
R.M.
Дата 27.4.2006, 12:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: -2
Всего: 30



Что тут дорабатывать?
Код

$mailbody = "Вам прислали заявку со следущими данными: \n
Имя: ".$_POST['name']."\n
Сайт: ".$_POST['site']."\n
Кол-во клеток: ".$_POST['kolvo']."\n
Комментарии: ".$_POST['comments']."\n
";
$recepients = 'mail@your_domain.ru';
$subject = 'Заявка';
$header = "From:Ваша фирма\r\nContent-Type: text/plain; charset=windows-1251\r\n";
mail($recepients, $subject, $mailbody, $header);
 


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Enya
Дата 27.4.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Куксикус, а как скрестить ваше предложение с предложенным скриптом?
Ведь нужно наверное делать проверку на заполненыли поля
Код

if(!isset) ...
 


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
R.M.
Дата 27.4.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: -2
Всего: 30



Ну да, я написал как эти все поля отправить по email. Т.е. вам надо сделать проверку ввели поля или нет. Наверно лучше даже не через isset а через empty и если все поля заполнены (или может у вас не все обязательные) и дальше запускать то что дал я. 


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Enya
Дата 27.4.2006, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Куксикус, спасибо за идейку. Я в ближайщее время по пробую. Должно получиться. 


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Enya
Дата 1.5.2006, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Куксикус, cпасибо тебе. Получилось. Появился ещё один вопрос по этому скрпту, вы не мог ли бы взглянуть?!
Код

<?
$mymail="[email protected]"; // адрес email, на который будет высылаться почта (например, [email protected])
$updir="upload/"; // директория сайта, в которую будет производиться закачка файлов (например, upload/). Слэш в конце обязателен
$after_sent="/sent.shtml"; // страница, на которую будет перенаправлен пользователь после отправки письма
$max="2097152"; // максимальный размер файла, который сможет закачивать пользователь (в байтах)

## не меняйте ничего ниже

if(empty($go)) {
if (file_exists("header.html")) {
include ("header.html");
} 
?>
<p style="margin-left: 30" align="justify"><form ENCTYPE="multipart/form-data" action="<?echo $PHP_SELF;?>" method=post>
  <table border="0" width=83%>
    <tr> 
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Ваше имя: </td>
      <td width=70%> 
        <input type=text name=name>
      </td>
    </tr>
    <tr> 
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Ваш сайт: </td>
      <td width=70%> 
        <input type=text name=site>
      </td>
    </tr>
    <tr> 
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Номера клеток: </td>
      <td width=70%> 
        <input type=text name=quadtrs maxlength="25">
      </td>
    </tr>
    <tr> 
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Ваш E-mail: </td>
      <td width=70%><input type=text name=mail></td>
    </tr>
<tr> 
      <td width=30%><font size=+1 color=red>&clubs;</font>&nbsp;Тема: </td>
      <td width=70%> 
        <input type="text" name="subject">
      </td>
    </tr>
    <tr> 
      <td width=30%>Текст сообщения:</td>
      <td width=70%> 
        <textarea name="message" rows="10" cols="40"></textarea>
      </td>
    </tr>
    <tr> 
      <td width=30%>Прикрепить файл (max. 2 MB): </td>
      <td width=70%><INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="<?echo $max;?>"><INPUT NAME="userfile" TYPE="file" SIZE="40"></td>
    </tr>
    <tr> 
      <td colspan="2"> 
        <center>
          <input type="submit" name=go value="Отправить">
       </center>
      </td></tr></table></form></p>
<?
if (file_exists("footer.html")) {
include ("footer.html");
}
}
else {

if(empty($name)) { 
$bad = "Вы не подписались<br>";
}
if(empty($site)) { 
$bad = "Вы не указали ваш сайт<br>";
}
if(empty($quadtrs)) { 
$bad = "Вы не указали номера клеток<br>";
}
if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mail)) // проверка правильности введенного e-mail адреса
{
$bad .= "Неправильный e-mail<br>";
}

if(empty($subject)) { 
$bad .= "Отсутствует тема сообщения<br>";
}

if ($bad) 
{
echo $bad;
?>
<a href="javascript:history.back(1)">Заполните, пожалуйста, пустые поля</a>
<?
exit;
}
if (is_uploaded_file($userfile)) { 
if (filesize($userfile)<=$max){ 
$fi = "K письму был прикреплен файл $userfile_name размером $userfile_size байт, который был закачан в директорию $updir";
}
}
$ip = getenv("REMOTE_ADDR");
$usa = getenv("HTTP_USER_AGENT");
$temp = "$fi\n\nВам было отправлено сообщение:\n\n Name: $name\n\n Site: $site\n\n Номера клеток: $quadtrs\n\n $message\n\nIP-адрес отправителя: $ip\nuser-agent: $usa";
$subj = "$subject"; 
$body = $temp;
$adds = "From: $mail\n"; 
$adds .= "X-Sender: < $mail >\n";
$adds .= "Content-Type: text/plain; charset=windows-1251\n"; 
mail($mymail,$subj,$body,$adds); 
Header("Location: $after_sent");
}
if (is_uploaded_file($userfile)) {
if (filesize($userfile)<=$max){
$dest=$updir.$userfile_name;
    move_uploaded_file($userfile, $dest);
}
} 
?>
Там есть проверка э-mail не могу ввести адрес электронной почты содержащий точки (.) и нижнее подчёркивание (_)
Как убрать проверку на эти символы? Ведь у кого-то есть такие символы в адресах почтовиков, например [email protected] - при вводе пишет, мол неверный э-маил. smile  


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
R.M.
Дата 2.5.2006, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Анархист
****


Профиль
Группа: Участник
Сообщений: 2164
Регистрация: 8.6.2005
Где: Питер

Репутация: -2
Всего: 30



Вот проверка на e-mail
Код
if(!preg_match("/^([a-z,0-9])+@([a-z,0-9])+(.([a-z,0-9])+)+$/", $mail)) // проверка правильности введенного e-mail адреса
{
$bad .= "Неправильный e-mail<br>";
}

Впринципе убрать можно но ИМХО проверка e-mail'а это лишнее я бы сделал простое if(!empty($mail)) и всё т.к. адрес может быть каким угодно, а если человек заинтересован в том чтобы получить письмо он введёт правильный e-mail а заставлять юзера вводить правильный e-mail если он нехочет смысла нет, он может и [email protected] ввести и письма будут в никуда уходить. 


--------------------
Помнишь как бодрили дискотеки прошлого века? Теперь стул, компьютер и нету человека.

Nokia LifeStyle - Всё для смартфонов Nokia 
PM MAIL WWW ICQ   Вверх
Enya
Дата 6.5.2006, 08:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Вот ещё с чем столкнулась, уже в этом скрипте разного добавила, а теперь меня просят ещё добавть одну фишку:
     - В форму вводят количестко квадратов (от 1 до 12) - а рядом в форме выводиться стоимость заказа (кол-во квадратов х на 10 руб = стоимость заказа). Данные о стоимости заказа нужно включить в $mailbody

И я вот не знаю, как сделать так, что бы толькоот ввода данных в форму, без перезагрузки страницы выводилась цена заказа. Нужно использовать JavaScript? smile  smile  


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
AztEK
Дата 6.5.2006, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: 6
Всего: 18



Да, нужно JavaScript. Обратись в соответствующий форум. 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1535 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.