Цитата:
Цитата:
|
Цитата:
|
Нужен параметр Action для формы, который передаст ваши переменные скрипту для отправки сообщения.
Разберитесь с работой form action submit и передачей параметров скрипту для отправки. |
Вроде бы то, что нужно файл show.action.php. :-?
<?php
// Запрет на обращение к файлу.
if (realpath($_SERVER['SCRIPT_FILENAME']) == realpath(__FILE__)) {
header('Location: /');
exit();
}
// Отправка формы
$e = array(
'all' => false,
'email' => false,
'name' => false,
'phone' => false,
);
$name = '';
$email = '';
$phone = '';
$comment = '';
$form_name = '';
if (text::get_post('do') == 'send_order'){
$name = htmlspecialchars(stripcslashes(text::get_post('name')));
$email = htmlspecialchars(stripcslashes(text::get_post('phone')));
$phone = htmlspecialchars(stripcslashes(text::get_post('email')));
$comment = htmlspecialchars(stripcslashes(text::get_post('comment')));
$form_name = htmlspecialchars(stripcslashes(text::get_post('form_name')));
if (text::check_mail($email) === false)
$e['all'] = $e['email'] = true;
if ($name == '')
$e['all'] = $e['name'] = true;
if ($phone == '')
$e['all'] = $e['phone'] = true;
if ($e['all'] === false) {
$mail = 'victor@gmail.com';
$subj = 'Заявка с сайта '.$_SERVER['SERVER_NAME'].' ('.$form_name.')';
$mail_body = '
<p>Заявка: '.$form_name.'</p>
<p>Контактное лицо: '.$name.'</p>
<p>Телефон: '.$phone.'</p>
<p>E-mail: '.$email.'</p>
<p>Комментарий: '.$comment.'</p>
';
sendMail($mail, $subj, $mail_body);
header("Location: ".$_SERVER['REQUEST_URI'].(preg_match('/\?/', $_SERVER['REQUEST_URI'])?'&':'?').'success=1');
exit();
}
}
$date = self::getConf('date');
$current_lang = self::getConf('curlang');
$__template = self::getConf('tpl');
$db_table_prefix = self::getConf('db_table_prefix');
$tree = self::getConf('tree');
$dbh = self::getConf('dbh');
// Для показа статических страниц нужно разобрать URL
$url = eregi_replace("\?(.*)$", '', $_SERVER['REQUEST_URI']);
$url = eregi_replace("index\.html$", '', $url);
if (!preg_match("/\/(".preg_replace('/'.self::getConf('deflang').'\|/', '', implode('|', self::getConf('langs'))).")/i", $url))
$url = '/ru'.$url;
$aStrings = explode("/", preg_replace("/^\/(.*)\/?$/U", "\\1", $url));
/* Создание запроса для поиска страницы. */
$f = '';
$w = '';
foreach ($aStrings as $key => $value) {
// Строка в FROM
$f .= '`'.$db_table_prefix.'pages` `p'.$key.'`,';
// Строка в WHERE. Для всех уровней.
$w .= ($w != ''?' AND ':'').' `p'.$key.'`.`alias` = "'.$value.'" AND `p'.$key.'`.`level` = '.($key+1);
if (isset($aStrings[$key+1]))
// Строка в WHERE. Для чилдренов.
$w .= ' AND `p'.$key.'`.`left` < `p'.($key+1).'`.`left` AND `p'.$key.'`.`right` > `p'.($key+1).'`.`right`';
}
$f = ereg_replace(",$", '', $f);
$query = "SELECT `p".(count($aStrings)-1)."`.* FROM ".$f." WHERE ".$w;
// Получение информации о странице.
if (!$result_row = $DB->selectRow($query)) {
// Страница не найдена. Попытка ввода url вручную или поломались ключи у дерева (врятли).
require_once DOC.'/error404.php';
}
/* Шаблон страницы. */
$tpl = is_null($result_row['template'])?'index':is_file(System_Settings::getSmarty_template_dir().$result_row['template'].'.tpl')?$result_row['template']:'index';
$c = components($result_row['text'], $db_table_prefix);
$result_row['text'] = $c[0];
foreach ($result_row as $key => $value) {
if ($key != 'text')
$result_row[$key] = text::stsl($value);
}
foreach ($result_row as $key => $value)
$result_row[$key] = stripcslashes($value);
/**
* Получение хлебных крошек.
*/
$resource = $tree->enumPath($result_row['id'], false);
$parents = array();
while ($data = $dbh->fetch_array($resource))
{
$parents[] = $data;
}
// Определение заголовков.
$page_title = $result_row['title']!=''?$result_row['title']:$result_row['name'];
self::setTemplatesVar($tpl, 'page_title', isset($c[1]) && $c[1] !== false?$c[1]:$page_title);
self::setTemplatesVar($tpl, 'page', $result_row);
self::setTemplatesVar($tpl, 'parents', $parents);
self::setTemplatesVar($tpl, 'url', isset($aStrings[3])?$aStrings[3]:null);
// Шаблон для вывода статических страниц
self::SetTemplates($tpl);
|
Отправка почты с сайта
Приведу 2 простых файла которые отправляют почту с сайта:
1й сама форма для отправки form.html
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script language="JavaScript">
<html>
<head> </head>
<body>
function check(form)
{
if((form.name.value=="")||(form.theme.value=="")||(form.message.value=="")||(form.e_mail.value==""))
{
alert("Вы заполнили не все поля!");
return false;
}
else
return true;
}
</script>
<script language="javascript">
function checkEmail(inputvalue){
var pattern=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
if(pattern.test(inputvalue))
{
return true;
}
else
{
alert("Вы неверно заполнили поле E-mail!");
return false;
}
}
</script>
<form name="contacts" method="POST" action="send.php" onsubmit="return check(contacts)">
<center>
<table class="name_fields">
<tr>
<td><div align="left">Ваше имя</div></td>
<td><div align="left">
<input type="text" name="name" size="40" onfocus="this.style.background='#e0f7bd'" onblur="this.style.background='#ffffff'">
</div></td>
</tr>
<tr>
<td><div align="left">Тема</div></td>
<td><div align="left">
<input type="text" name="theme" size="40" onfocus="this.style.background='#e0f7bd'" onblur="this.style.background='#ffffff'">
</div></td>
</tr>
<tr>
<td><div align="left">Сообщение</div></td>
<td><div align="left">
<textarea rows="10" name="message" cols="40" onfocus="this.style.background='#e0f7bd'" onblur="this.style.background='#ffffff'"></textarea>
</div></td>
</tr>
<tr>
<td><div align="left">Ваш E-mail</div></td>
<td><div align="left">
<input type="text" name="e_mail" size="40" onfocus="this.style.background='#e0f7bd'" onblur="this.style.background='#ffffff'">
</div></td>
</tr>
<td valign="top" colspan="2" align="center"><table border="0" width="80%">
<tr>
<td align="center">
<p><font color="#008000"></font></td>
<td align="center">
</td>
<td align="center">
</tr>
</table></td>
<tr>
<td colspan="2">
<p align="center"><input type=submit value="Отправить" onClick="return checkEmail(document.contacts.e_mail.value)">
</td>
</tr>
</table>
</center>
</form>
</body>
</html>
Второй send.php скрипт получающий данные формы и отправляющий эти данные на e-mail
<?
$name=$_POST['name'];
$subject=$_POST['theme'];
$e_mail=$_POST['e_mail'];
$headers=$_POST['headers'];
$message=$_POST['message'];
/* Адрес получателя*/
$toMail = 'receiver@mail.ru';
$headers = "From: $name <$e_mail> \n";
mail ("$toMail", "$subject",
"\nИмя : $name
E-mail : $e_mail
Тема сообщения : $subject
Подробнее : $message\n\n", "$headers");
?>
Пример далёк от совершенства, но даёт представление о том как это работает :) |
Цитата:
|
Цитата:
|
Цитата:
|
Цитата:
|
Есть вариант отправки и получения почты на Delphi если интересует :)
Но сам вопрос "отправка сообщений с сайта" подразумевает то, что для этого будет использоваться серверный язык. |
Цитата:
|
hardwolf, по умолчанию, если не указан в форме action, то принимать данные будет эта же страничка. Но если вы просматриваете код страницы в браузере, то серверных скриптов на обработку полученных данных не увидите. Однако, уверяю, что они там должны быть.
|
Как по мне удобнее всеже выносить скрипт обработчик в отдельный файл. Так легче его править. Иногда, например возникает задача параллельно с почтой отправить смс. удобно подправить и настроить скрипт отправки сообщения с сайта для менеджера.
|
Цитата:
Пока я просто создал два файла send.php и form.html . Положил оба файла в папку public_html и дал ссылку на файл с формой. Позже форму полностью перпепишу по своему, пока нужно узнать, будет ли это работать. Так вот .... пока не работает. Письмо себе отправил , но оно пока не дошло. Сколько нужно времени? Правильно ли я понимаю, что в php нужно всего-лишь поменять адрес получателя receiver@mail.ru' на свой? Сайт для себя создал на бесплатном хостинге hostinger . Это как то может влиять? P.S. К стати, хочу поблагодарить этот форум. Летом задал тут давольно-таки наивный вопрос, и получил на него подробный ответ. сейчас лень уже искать тему... но благодаря ВАМ не только простенькую игру сделал, но и сайт для себя написал (lada-chip.esy.es) С играми пока завязал, хочу сайт до ума довести постепенно. Прошу помощи. |
Цитата:
|
ага! вырезал из php кода всё что не понимаю. оставил только
<? mail ("почта@mail.ru", "zagol",$_POST['name']); ?> и письмо с именем пришло. Видимо, что-то не так со скриптом php из примера. Мне ещё не нравится, что после отправки письма я остаюсь на чистой странице . Но это не так страшно. |
Цитата:
|
| Часовой пояс GMT +3, время: 23:56. |