Перейти к содержимому



Помогите сделать почтовую форму

#1 Гость_doctor_*
Гость_doctor_*
  • Гости
0

Обновлено 28 сентября 2010 - 22:00  Отправлено 28 июня 2008 - 18:28

Мне срочно нужно создать почтовую форму...т.к. щас делаю сайт знакомым..информацию я в ней поменяю но .. сама форма должна быть точно такой же.... вот образец.......я такую долго искал....но не могу сделать как там diplom.php....срочно!!помогите плз ....буду очень признателен

 

 

  • 0

#2 Xan
Xan
  • Неактивные
  • 385 сообщений
  • Репутация: 2

Отправлено 28 июня 2008 - 19:11

doctor почитайте в учебниках пхп про формы ввода и отправку POST. Там должно рассказываться как работать с формами.. Точно сказать ничего не могу, так как с пхп не общаюсь :)
  • 0

#3 Vialls
Vialls
  • Неактивные
  • 581 сообщений
  • Репутация: 1

Отправлено 28 июня 2008 - 20:38

Тут писать очень много, функции для проверки коректности данных и т.п.. А вообще скрипт не сложно написать, изучив основные моменты PHP (но минимум денек потребуется, если вы ноль).
Если хотите сделаю за 5-10 баксов, стучите в асю...

Называйте темы своими именами!
  • 0

#4 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 28 июня 2008 - 23:11

Ну примерно так ))) Это без проверок
<?php
if(isset($_POST['submit']))
{
$to = "[email protected]"; //Ваш ящик
$subject = "Отчет с сайта";
$subject = convert_cyr_string($theme, 'w', 'k');
$message = "<html>
<head></head>
<body>
Поле 1 {$_POST['имя переменной']}
...................
Поле N {$_POST['имя переменной']}
</body>
</html>";
$message = convert_cyr_string($message, 'w', 'k');
$headers = "Content-Type: text/html; charset=KOI8-R\r\n";
if(mail($to, $subject, $message, $headers))
{
echo "Письмо успешно отправлено";
}
else
{
echo "Произошла ошибка - письмо не отправлено";
}
exit();
}
?>
<html>
<head>
</head>
<body>
<form method="POST" action="">
Поле 1 : <input type="тип" name="Имя PHP переменной в массиве POST">
..............
Поле N : <input type="тип" name="Имя PHP переменной в массиве POST">

<input type="submit" name="submit" value="Отправить заказ">
</form>
</body>
</html>

  • 0

#5 nifty5
nifty5
  • Неактивные
  • 5 сообщений
  • Репутация: 0

Отправлено 13 августа 2009 - 22:10

[quote name='ZiTosS' date='29.6.2008, 0:11' post='4302']
Ну примерно так ))) Это без проверок

А я вот проверку никак, какраз, сделать не могу


Хочу попросить помочь разобраться тоже (если время есть)

У меня простая почтовая форма на PHP хочу сделать проверку обязательного поля "сообщение" и "e-mail"
Поле с E-mail желательно с проверкой правильности адреса (ну это в идеале хотелось бы, можно и без этого).

На данный момент всё работает так:
там несколько пустых полей, чтобы не спамили, их не видно, но если их заполняет программа, то форма не отправляется и ещё там по умолчанию введены подсказки прямо в поля (при клике текст пропадает) в остальном самая простая форма. При отправке отправляет, также, на другую страницу thanx.htm в любом случае (независимо от того заполнена или нет)

Я хотел бы чтобы было 2 поля для "Сообщения" и "Адреса почты" обязательными с проверкой и чтобы, если они не заполнены, то открывалась одна страница с ошибкой (error.htm), а если они заполнены, то другая (эта thanx.htm как сейчас)

закачал 3 файла - html, php и css, которые используются. Вот они:

sendspace.com/file/az6gpa (прикрепил архив к записи сюда тожеПрикрепленный файл  php_form.zip   2,14К   Количество загрузок: 148)

Можете в них исправить что нужно?

Я сам пробывал много раз - кучу скриптов перерыл уже и так и эдак - не получается у меня. Я вообще не понимаю в этом PHP...

Был бы благодарен за помощь.
  • 0

#6 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 14 августа 2009 - 00:23

nifty5,
Скажите что в вашем понимании "проверка правильности адреса"? Это его существование(этого проверить я не смогу) или же просто соответствие шаблону, то что это точно email-адрес?

Вообще вот вам скрипт тогда:
Файл form.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Отправка почты</title>
<link rel="stylesheet" href="contact.css">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>

<body>
<form action="form.php" method="POST">

<input type=hidden name="recipient" value="[email protected]">
<input type=hidden name="subject" value="сообщение с сайта">

<table width="300" height="280" border="0" cellpadding="2" cellspacing="1">
<tr valign="top">
<td>
Тема сообщения
</td>
<td>
<input type="text" name="subject" value="" size="58" />
</td>
</tr>
<tr valign="top">
<td>
Email-адрес получателя
</td>
<td>
<input type="text" name="mail" value="" size="58" />
</td>
</tr>
</tr>
<tr valign="top">
<td>
Сообщение
</td>
<td>
<textarea name="text"></textarea>
</td>
</tr>
<tr>
<td>
<input type="reset" name="reset" class="clear" value="ОЧИСТИТЬ">
</td>
<td>
<input type="submit" name="submit" class="send" value="ОТПРАВИТЬ">
</td>
</tr>
</table>
</form>
</body>
</html>


Файл form.php
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">

<?php

if($_POST['text'] == "" || $_POST['mail'] == "")
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";

if(!ereg("^[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[@]{1}[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[.]{1}[A-Za-z]{2,5}$", $_POST['mail']))
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";


$body = "
С сайта http://www.site.ru/, поступило следующее сообщение:

__________________________________________________________________________
Текст сообщения:
".$_POST['text']."
";


$mailto = addslashes($_POST['mail']);
$subject = addslashes($_POST['subject']);

$body = convert_cyr_string(stripslashes($body),w,k);
$subject = convert_cyr_string(stripslashes($subject),w,k);

if(!mail($mailto, $subject, $body, "From: ".$_POST['mylo']))
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";
else
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=thanks.html'>";
?>


Файл error.html
<html>
<head>
</head>
<body>
<h1>Сообщение не было отправлено.</h1><br>
Попробуйте отправить сообщение <a href="form.html">ещё раз</a>
</body>
</html>


Файл thanks.html
<html>
<head>
</head>
<body>
<h1>Сообщение ОТПРАВЛЕНО</h1>
</body>
</html>

  • 0

#7 nifty5
nifty5
  • Неактивные
  • 5 сообщений
  • Репутация: 0

Отправлено 14 августа 2009 - 01:46

[quote name='ZiTosS' date='14.8.2009, 1:23' post='30472']

Спасибо. Я имею ввиду, конечно, проверку написания просто e-mail

К сожалению, не работает форма...

Вы пишите в HTML файле 3 поля: Тема сообщения (subject), e-mail адрес получателя (mail), сообщение (text)

1) У меня форма отправки сообщения с сайта на мой адрес, то есть e-mail не получателя нужно вводить, а отправителя
2) У меня 6 полей в форме для заполнения настоящих, которых видно и можно заполнять + ещё 3 поля фальшивых - наживка для антиспама (роботы спамеров их видят, а люди нет, в итоге роботы их заполняют тоже, а люди нет, соответственно, если робот заполнил ложные поля, то почта не отправыляется, а люди о них даже и не знают). С этим антиспамом всё уже работает и сейчас как надо. Осталось только проверку сделать

настоящие поля:

agency (тема обращения)
person (Имя)
mylo (адрес почты отправителя)
sayt (сайт отправителя)
opros (вопрос как попали на сайт)
bazar (текст сообщения)

фальшивые:

username (для роботов)
password (для роботов)
account (для роботов)

Мне нужно
1)чтобы поле "bazar" (текст сообщения) и "mylo" (адрес почты отправителя) были обязательными для заполнения, иначе перенаправление на страницу ошибки.
2)Чтобы проверялось написание e-mail (как вы сделали)
3) чтобы если заполнены фальшивые поля "username" , "password" , "account" то также было перенаправление на ошибку (это уже у меня работает нормально сейчас) Как я говорил, это для программ спамерских (люди этих полей не видят в форме)
4) чтобы если всё ок, то перенаправление на страницу Спасибо (как сейчас)


Я попробывал поменять просто свои поля (потому что Вы их изменили и сделали 3 вместо 5) - думал что просто поменяю и всё ок будет, но не работает. ФОрма отправляется в любом случае, даже если поля не заполнены


Пожалуйста подправьте файлы именно с моими полями (мне всё равно нужна защита от спама и эти 5 полей)
  • 0

#8 Евгений
Евгений
  • Неактивные
  • 481 сообщений
  • Репутация: 0

Отправлено 14 августа 2009 - 02:54

Пожалуйста подправьте файлы именно с моими полями (мне всё равно нужна защита от спама и эти 5 полей)

вам сюда http://www.masterweb...lja-vebmastera/
  • 0

#9 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 14 августа 2009 - 12:40

Евгений, да ладно, делов на 5 минут. Попробуем-с помочь ;)

nifty5, тогда покажу как исправить файл form.php
<meta http-equiv=Content-Type content="text/html; charset=windows-1251">

<?php

if($_POST['username'] || $_POST['password'] || $_POST['account'])
{
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";
exit();
}

if($_POST['bazar'] == "" || $_POST['mylo'] == "")
{
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";
exit();
}

if(!ereg("^[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[@]{1}[-A-Za-z0-9_]+[-A-Za-z0-9_.]*[.]{1}[A-Za-z]{2,5}$", $_POST['mylo']))
{
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";
exit();
}



$body = "
С сайта http://www.site.ru/, поступило следующее сообщение:

Цель Обращения: ".$_POST['agency']."
Контактное лицо: ".$_POST['person']."
E-mail: ".$_POST['mylo']."
URL: ".$_POST['sayt']."
Как вообще дела: ".$_POST['opros']."
__________________________________________________________________________
Текст сообщения:
".$_POST['bazar']."
";


$mailto = $_POST['recipient'];
$subject = $_POST['subject'];
$body = convert_cyr_string (stripslashes($body),w,k);
$subject = convert_cyr_string (stripslashes($subject),w,k);

if(!mail($mailto, $subject, $body, "From: ".$_POST['mylo']))
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";
else
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=thanks.html'>";
?>

  • 0

#10 nifty5
nifty5
  • Неактивные
  • 5 сообщений
  • Репутация: 0

Отправлено 14 августа 2009 - 14:06

nifty5, тогда покажу как исправить файл form.php



Спасибо.
С e-mail всё работает вроде, а вот с текстом сообщения - в любом случае всё отправляется сейчас. Наверное, это потому, что у меня сейчас в этих полях написан текст (описание полей), который исчезает при клике по полю (см. файл css) То есть, я так понимаю, что если ничего не писать в поле, то оно всё равно не считается пустым, так как его описание воспринимается как заполненный текст. так?

а можно как-то это поправить. например ввести этот текст подсказки и написать, что если текст в поле именно такой (то есть ничего нового не вводилось в форму), то воспринимать как пустое?
  • 0

#11 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 14 августа 2009 - 15:16

nifty5, естественно, я забыл что у вас есть значения по умолчанию. Вам тогда надо сделать 2 проверки...
То есть уже к существующей
if($_POST['bazar'] == "" || $_POST['mylo'] == "")
{
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";
exit();
}

добавить ниже
if($_POST['bazar'] == "[по_умолчанию]" || $_POST['mylo'] == "[по_умолчанию]")
{
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";
exit();
}

  • 0

#12 nifty5
nifty5
  • Неактивные
  • 5 сообщений
  • Репутация: 0

Отправлено 14 августа 2009 - 15:28

Что-то не работает...
Нужно вместо текста по_умолчанию ввести весь текст, как он есть в поле, так ведь? У меня там довольно много текста на русском. Ввёл его точно также, как в поле написано и вставил в это место, но не работает - также отправляет всё в любом случае (менялся текст или нет не видит)


  • 0

#13 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 14 августа 2009 - 15:44

nifty5, ппц, подумать сложно...
if($_POST['bazar'] == "Введите сюда текст сообщения" || $_POST['mylo'] == "E-Mail")
{
echo "<META HTTP-EQUIV='Refresh' CONTENT='0; URL=error.html'>";
exit();
}

  • 0

#14 nifty5
nifty5
  • Неактивные
  • 5 сообщений
  • Репутация: 0

Отправлено 14 августа 2009 - 15:51

ну я и говорю, я так и понял - всё сделал так - не работает. Отправляет письмо независимо от того менялся текст сообщения или нет.
С e-mail то работает, просто из за того, что если не менять там текст, то проверку на "@" и "." не проходит, а текст сообщения отправляет в любом виде или введенный или по умолчанию (если ничего не вводили)
 

конечно, хотелось бы чтобы работало с текстом по умолчанию, но в любом случае, спасибо за помощь


  • 0

#15 VMS100
VMS100
  • Неактивные
  • 11 сообщений
  • Репутация: 0

Отправлено 27 сентября 2010 - 15:23

ZiTosS
У меня проблема. Если сможете, помогите.
Пробовал сделать форму обратной связи с использованием файла РНР, не получается. Кажется понял, моя Мозила не воспринимает PHP. Что мне сделать? Что встроить в Мозилу? Помогите пожалуйста! Заранее спасибо!
vms100
  • 0

#16 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 27 сентября 2010 - 19:13

VMS100, тут не мозилла не понимает PHP, а скорее всего ваш хостинг не предоставляет возможностей использования PHP. У вас что за хостинг и что за тариф?
Или вы на локальном компьютере пытаетесь? Если да, то стоит ли у вас web-сервер? Если нет, то ставьте Denwer (на сайте есть полная документация)
  • 0

#17 VMS100
VMS100
  • Неактивные
  • 11 сообщений
  • Репутация: 0

Отправлено 27 сентября 2010 - 19:41

Спасибо ZiTosS!
Я на домашнем компьютере делаю сайт с внутренней оптимизацией. У меня самый дешевый тариф на http://www.ht-systems.ru. Но мне надо сделать 15 стр из 30. Тогда закачаю на свой домен. В принципе из главных не выполненных задач - форма обратной связи, которую подсказали на форуме и которая не работает по выше изложенной проблеме. Мне действительно надо установить Denwer или оставить на потом, когда закачаю домен?
  • 0

#18 ZiTosS
ZiTosS
  • Неактивные
  • 5 148 сообщений
  • Репутация: 8

Отправлено 28 сентября 2010 - 00:53

VMS100,

1) На хостинге поддерживается PHP - это уже хорошо.
2) Если вы делаете сайт на локальном компьютере и пытаетесь что-то сделать на PHP в вашем сайте, вам ОБЯЗАТЕЛЬНО нужно ставить виртуальный сервер, например Denwer. Поймите, без виртуального сервера браузер запрашивает страницу с локального хоста, а компьютер просто выдаёт её содержимое обратно браузеру. Чтобы скрипт PHP обрабатывался, для этого нужен сервак, к примеру Apache, который будет принимать запросы к примеру по домену http://localhost/ (что означает ваша домашняя машина) и если нужно отправлять запрошенный файл на обработку тому или иному приложению, например PHP.
Если вы установите Denwer, то всё выше перечисленное он имеет. Denwer это удобный пакет для установки web-сервера на локальный компьютер. Вам не придётся практически ничего настраивать. Нажатием парочки кнопочек вы получите у себя на локальной машине полноценный виртуальный сервак. В отличии от Denwer'a, если собирать всё вручную и самому, уйдет намного больше времени.

Вообщем если вы не поставите виртуальный сервер, хоть пытайтесь вы отправить форму, хоть нет, вам в браузер будет выдаваться код, который должен исполняться, как обычный текст.
  • 0

#19 VMS100
VMS100
  • Неактивные
  • 11 сообщений
  • Репутация: 0

Отправлено 28 сентября 2010 - 09:17

Спасибо ZiTosS!
На сколько я понял у многих, которые обращались на форум с созданием форм обратной связи, такие же проблемы.
Я решил записать сайт на свой домен у хостера сейчас. В принципе другим, а возможно и мне надо поставить "заглушку" на сайт, правда как она ставится я не знаю.
Возможно мне придется еще обратиться по поводу присоединения файла. В начале я взял форму из книги на HTML и она работала на английском, на русском выдавала непонятку, я менял кодировку, но бесполезно, т.е. нужен сценарий на ПХП, который локально для этой формы поменяет кодировку на KOI8-R. Останется проблема с присоединением файла.
Еще раз спасибо за участие.
  • 0

#20 VMS100
VMS100
  • Неактивные
  • 11 сообщений
  • Репутация: 0

Отправлено 28 сентября 2010 - 18:20

ZiTosS!
Загрузил сайт, получил сообщение:
Ошибка! Форме не были переданы параметры!Вернуться и правильно заполнить форму
Посмотрите, пожалуйста Файл: form.php:
<?php

$firstname=$_POST["firstname"];
$surname=$_POST["surname"];
$email=$_POST["email"];
$datafile=$_POST["datafile"];
$sometext=$_POST["sometext"];

if (isset ($firstname))
{
$firstname = substr($firstname,0,20); //Не может быть более 20 символов
if (empty($firstname))
{
echo "<center><b>Не указано имя<p>";
echo "<a href=form.html>Вернуться и правильно заполнить форму</a>";
exit();
}
} else {
$firstname = "не указано";
}

if (isset ($surname))
{
$surname = substr($surname,0,20); //Не может быть более 20 символов
if (empty($surname))
{
echo "<center><b>Не указана фамилия<p>";
echo "<a href=form.html>Вернуться и правильно заполнить форму</a>";
exit();
}
} else {
$surname = "не указано";
}

if (isset ($email))
{
$email = substr($email,0,20); //Не может быть более 20 символов
if (empty($email))
{
echo "<center><b>Не указан e-mail<p>";
echo "<a href=form.html>Вернуться и правильно заполнить форму.</a>";
exit();
}
} else {
$email = "не указано";
}

if (isset ($datafile))
{
$datafile = substr($datafile,0,100); //Не может быть более 100 символов
if (empty($datafile))
{
echo "<center><b>Не указан путь<p>";
echo "<a href=form.html>Вернуться и правильно заполнить форму</a>";
exit();
}
} else {
$datafile = "не указано";
}

if (isset ($sometext))
{
$sometext = substr($sometext,0,1000); //Не может быть более 1000 символов
if (empty($sometext))
{
echo "<center><b>Нет текста дополнительной информации<p>";
echo "<a href=form.html>Вернуться и правильно заполнить форму</a>";
exit();
}
} else {
$sometext = "не указано";
}

$i = "не указано";

if ($firstname == $i AND $surname == $i AND $email == $i AND $datafile == $i AND $sometext == $i)
{
echo "Ошибка! Форме не были переданы параметры!";
echo "<a href=form.html>Вернуться и правильно заполнить форму</a>";
exit();
}

$to = "[email protected]"; /*МЕНЯЕШЬ НА СВОЙ АДРЕСС!*/
$subject = "Ответ от посетителя сайта";
$subject = convert_cyr_string($theme, 'w', 'k');
$message = "<html>
<head></head>
<body>
Ваше Имя: {$_POST['firstname']}
Фамилия: {$_POST['surname']}
Адрес электронной почты: {$_POST['email']}
Фото Вашего здания: {$_POST['datafile']}
Cообщите дополнительную информацию: {$_POST['sometext']}
</body>
</html>";
$message = convert_cyr_string($message, 'w', 'k');
$headers = "Content-Type: text/html; charset=KOI8-R\r\n";

if(mail($to, $subject, $message, $headers)) {
echo "Письмо успешно отправлено";
} else {
echo "Произошла ошибка - письмо не отправлено";
}
exit();
?>
Файл: form.html
<body>

<form action="form.php" method="POST" enctype="text/plain">

<input type=hidden name="recipient" value="[email protected]">
<input type=hidden name="subject" value="сообщение с сайта [url="http://www.str-reklam.ru/&quot;>"]http://www.str-reklam.ru/">[/url]


<p>
Ваше Имя:<br />
<input type="text" name="firstname" size="20" maxlength="20" tabindex="32" /><br />
Фамилия:<br />
<input type="text" name="surname" size="30" maxlength="30" tabindex="33" /><br />
Адрес электронной почты:<br />
<input type="text" name="email" size="30" maxlength="30" tabindex="34" /><br />
Фото Вашего здания:<br />
<input type="file" name="datafile" size="40" maxlength="500" accept="text" tabindex="35" /><br />
Cообщите дополнительную информацию:<br />
<textarea name="sometext" cols="30" rows="5" tabindex="36">Дополнительная информация: ...</textarea><br />

<input type="submit" value="Отправить" tabindex="37" />
<input type="reset" value="Отмена" tabindex="38" />
</p><hr/>

</form>
</body>

  • 0

robot
robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Похожие темы
  Название темы Автор Статистика Последнее сообщение

Пользователь месяца
DeHuC_64 DeHuC_64 1-й за Июнь
Очков активности: 33 0 тем, 22 сообщения, 1 балл репутации
Сайт: russiangreat.ru
ТОП самых активных за этот месяц
  • Фотография BLIK
    #1

    BLIK
    Очков активности: 54 0 тем, 18 сообщений, 2 балла репутации

  • Фотография DeHuC_64
    #2

    DeHuC_64 (russiangreat.ru)
    Очков активности: 51 Вне конкурса за определение пользователя месяца

  • Фотография BuxarNET
    #3

    BuxarNET
    Очков активности: 21 1 тема, 11 сообщений, 1 балл репутации

  • Фотография HITMAN84
    #4

    HITMAN84
    Очков активности: 16.5 2 темы, 5 сообщений, 1 балл репутации

  • Фотография vetalbon
    #5

    vetalbon
    Очков активности: 13.5 0 тем, 9 сообщений, 1 балл репутации

  • Фотография imvaisov
    #6

    imvaisov
    Очков активности: 9 2 темы, 0 сообщений, 1 балл репутации

  • Фотография doktorcrabus
    #7

    doktorcrabus
    Очков активности: 9 1 тема, 3 сообщения, 1 балл репутации

  • Фотография miketomlin
    #8

    miketomlin
    Очков активности: 7.5 0 тем, 5 сообщений, 1 балл репутации

  • Фотография павелЯ
    #9

    павелЯ
    Очков активности: 7.5 1 тема, 2 сообщения, 1 балл репутации

  • Фотография Constantine
    #10

    Constantine (constantinablog.ru)
    Очков активности: 7.5 1 тема, 2 сообщения, 1 балл репутации

  • Показать весь ТОП 10

Поддержите форум! =)
Топ 5 участников по репутации

Оформление форума – IPBSkins.ru