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


Партнерская программа Kredov

  • Закрытая тема Тема закрыта

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

#1 Гость_doctor_*

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

Отправлено 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 = "someone@mail.ru"; //Ваш ящик
$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К   Количество загрузок: 119)

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

Я сам пробывал много раз - кучу скриптов перерыл уже и так и эдак - не получается у меня. Я вообще не понимаю в этом 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="admin@site.ru">
<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

robot

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


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