Всё равно не выводятся сообщения об ошибках, а при заполненных полях после нажатия на отправить , исчезают ноги сайта.
ДоХтор (02.09.2010/03:07)
Всё равно не выводятся сообщения об ошибках, а при заполненных полях после нажатия на отправить , исчезают ноги сайта.
Капец я просто для примера писал, при том с мобилы, ошибку и допустил
Вот держи
И зачем две страницы делаешь? достаточно одной
<?php
//Если кнопка нажата
if($_POST) {
//Проверяем переменные
$email = isset($_POST['email'])?htmlentities(trim($_POST['email']), ENT_QUOTES, 'UTF-8'):'';
$text = isset($_POST['text'])?htmlentities(trim($_POST['text']), ENT_QUOTES, 'UTF-8'):'';
//Массив с ошибками
$error = array();
//Проверяем соответствие условиям
if (!$email) {
$error[] = 'Не введен e-mail';
}
elseif (mb_strlen($email,'UTF-8')< 4 || mb_strlen($email,'UTF-8') > 100) {
$error[] = 'Недопустимая длинна мыла';
}
if (!$text) {
$error[] ='не введено сообщение';
}
//если ошибок небыло
if (!$error) {
//отправляем, сохраняем данные.
mail($email,$text);
echo'<i><b><b><font color="red">Письмо отправлено</font></b></b></i><br/>';
echo"<b>Кому:</b><br/><i>$email</i><br/>
<b>Текст:</b><br/><i>$text</i><br/>";
}
//если были ошибки показываем их
else {
echo implode('<br/>',$error);
}
}
echo'<form action="?" method="post">
Кому:<br/><input name="email" value="'.$email.'" /><br/>
Сообщение:<br/><textarea name="text" cols="25" rows="4"></textarea><br/>
<input type="submit" value="Отправить"/>
</form>';
?>
p.s.
В функции mail(); 3 значения должно быть
AlezZ (12.09.2010/04:20)
можно и так писать да?
if($_POST)
(я просто этого не знал)
да, можно, дословно читаться это условие будет примерно так: 'если это массив, то...'
Наконец я закончил этот скрипт(благодаря помощи Krite), но остались несколько вопросов: Тема сообщения на русском языке не приходит на почту(за то на английском проблем с доставкой темы сообщения нет) - как это исправить? И ещё вопрос - как сделать возможность прикрепления вложений к письмам? Вот код этого скрипта, заточен под Джон, с учетом авторизации:
define('_IN_JOHNCMS', 1);
$headmod ="mess";
$textl = 'Отправка E-mail';
require_once ("../incfiles/core.php");
require_once ("../incfiles/head.php");
header("Content-type:text/html; charset=utf-8");
if (isset ($_GET['err'])) {
echo display_error('Запрошенная Вами страница отсутствует');
}
if ($user_id) {
echo'Сегодня ';
echo date('d.m.Y');
echo'<br />Время ';
echo date('H:i:s');
echo'<hr />';
//Если кнопка нажата
if($_POST) {
//Проверяем переменные
$to = isset($_POST['to'])?htmlentities(trim($_POST['to']), ENT_QUOTES, 'UTF-8'):'';
$from = isset($_POST['from'])?htmlentities(trim($_POST['from']), ENT_QUOTES, 'UTF-8'):'';
$thm = isset($_POST['thm'])?htmlentities(trim($_POST['thm']), ENT_QUOTES, 'UTF-8'):'';
$txt = isset($_POST['txt'])?htmlentities(trim($_POST['txt']), ENT_QUOTES, 'UTF-8'):'';
//Массив с ошибками
$error = array();
//Проверяем соответствие условиям
if (!$to) {
$error[] = '<font color="red"><i><b>Не введен e-mail!</b></i></font>';
}
elseif (mb_strlen($to,'UTF-8')< 4 || mb_strlen($to,'UTF-8') > 100) {
$error[] = '<font color="red"><i><b>Не корректный ввод адреса e-mail!</b></i></font>';
}
if (!$from) {
$error[] = '<font color="red"><i><b>Не введен e-mail отправителя!</b></i></font>';
}
elseif (mb_strlen($from,'UTF-8')< 4 || mb_strlen($from,'UTF-8') > 100) {
$error[] = '<font color="red"><i><b>Не корректный ввод обратного адреса e-mail!</b></i></font>';
}
if (!$thm) {
$error[] ='<font color="red"><i><b>Не введена тема сообщения!</b></i></font>';
}
if (!$txt) {
$error[] ='<font color="red"><i><b>Не введен текст сообщения!</b></i></font>';
}
//если ошибок небыло
if (!$error) {
//отправляем данные функцией mail()
mail($to,$thm,$txt,"From: <$from>\r\nContent-type:text/plain;charset=utf-8");
echo'<i><b><font color="red">Письмо отправлено !</font></b></i><br/>';
echo'<b>Кому:</b><br /><i>'.$to.'</i><br />';
echo'<b>От кого:</b><br /><i>'.$from.'</i><br />';
echo'<b>Тема:</b><br /><i>'.$thm.'</i><br />';
echo'<b>Текст:</b><br /><i>'.$txt.'</i><br />';
}
//если были ошибки показываем их
else {
echo implode('<br/>',$error);
}
}
echo'<form action="index.php" method="post">
Кому:<br/><input name="to" value="'.$to.'" /><br/>
От кого:<br/><input name="from" value="'.$from.'" /><br/>
Тема:<br/><input name="thm" value="'.$thm.'" /><br/>
Сообщение:<br/><textarea name="txt" cols="25" rows="4"></textarea><br/>
<input type="submit" value="Отправить"/>
</form>';
} else {
echo'<i><b>Вы не авторизованы!</b></i>';
}
require_once ("../incfiles/end.php");
А header() там зачем? Убери, возможно дело даже в этом
Krite (13.09.2010/09:01)
А header() там зачем? Убери, возможно дело даже в этом
нет, дело в том, что header() появилась в коде значительно позже, чем была обнаружена ошибка отправки темы кириллицей. проблема в чем то другом.
никто не хочет помочь? ((
Некропостиг!
Не прошло и ... (со счёта сбиться можно)
В общем, просматривал свои первые посты на этом сайте, и наткнулся на эту тему.
Допилил таки я эту отправку письма с подменой адреса отправителя, +добавил десятисекундный антифлуд и звуковое уведомление(HTML-5) при успешной отправке письма. Скрипт для авторизованых пользователей, работает без использования БД, файлы движка не затрагивает.
Установка проста:
1. Закачать архив на хост
2. Распаковать в корневой каталог
3. Перейти по ссылке
http://ваш.сайт/spoofing/mail.php
Демо-версия
ТуТ
Просьба - кто установит, отпишитесь.
Если не идёт на какую-то версию Джона, то просьба к знающим - подправьте.
P.S.: Если администрация сочтёт нужным, то тему: 1-переименуйте, 2-переместите, 3-почистите(или предоставьте эту возможность мне). По мере возможности в скрипт запилю ещё прикрепление файлов.