Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Снова mail()
 
 автор: magic   (16.09.2009 в 13:33)   письмо автору
 
 

Прочитал много тем на форуме, но что-то все ровно не отобью дупля что делать? Проблема заключается в том, что отправка происходит на маил.ру. Письма с пустым сообщением, но заполнена тема, доходят. Если пишешь тело письма, то письмо не приходит. Еще если вставляешь от кого, т.е. е-маил адресс, то письмо доходит и с заполненным телом письма (это все для кириллицы). На английском все нормально в любом варианте. Что может быть есть идеи

  Ответить  
 
 автор: Sergeich   (16.09.2009 в 13:45)   письмо автору
 
   для: magic   (16.09.2009 в 13:33)
 

А код можно увидеть?

  Ответить  
 
 автор: magic   (16.09.2009 в 14:06)   письмо автору
 
   для: magic   (16.09.2009 в 13:33)
 

обработка полученых данных


if (!empty($_POST['send']))
    {
        // обьявляем переменные
        //////////////////////////////////
        $back="Вернитесь <a href='javascript:history.back(1)' class='text1'><B style='color: Red;'>назад</B></a>";
        $email = $_POST['email'];
        $tema = $_POST['tema'];
        $text = $_POST['text'];
        $num = $_POST['num'];
        $rand = $_POST['rand'];

        // 1. Блок проверки правильности ввода данных
        /////////////////////////////////////////////////
        // удаляем лишние пробелы
        $tema = trim($tema);

        // удаляем HTML-теги
        $email = htmlspecialchars ($email);
        $tema = htmlspecialchars($tema);
        $text = htmlspecialchars($text);
        //проверяем тему
        if (empty($tema)) {echo "<body bottommargin='0' topmargin='0' rightmargin='0' leftmargin='0'><table border='0' height='100%' width='100%' class='text2'><tr><td valign='middle' align='center'>Некоторые поля формы пустые. $back пожалуйста и заполните оставшиеся поля.</td></tr></table></body>"; exit("<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='5; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>");}
        //проверяем защитный код
        if(!empty($num) && !empty ($rand))
        {
            if ($num!=$rand) {echo "<body bottommargin='0' topmargin='0' rightmargin='0' leftmargin='0'><table border='0' height='100%' width='100%' class='text2'><tr><td valign='middle' align='center'>Код на картинке должен совпадать с кодом введеным Вами. $back и исправьте ошибку.</td></tr></table></body>"; exit("<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='5; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>");}
        }
        else {echo "<body bottommargin='0' topmargin='0' rightmargin='0' leftmargin='0'><table border='0' height='100%' width='100%' class='text2'><tr><td valign='middle' align='center'>$back пожалуйста и заполните форму до конца.</td></tr></table></body>"; exit("<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='5; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>");}

        // Если введён e-mail проверяем его на соответсвие
        if (!empty($email))
        {
            if(!eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$",$email)) {echo "<body bottommargin='0' topmargin='0' rightmargin='0' leftmargin='0'><table border='0' height='100%' width='100%' class='text2'><tr><td valign='middle' align='center'>$back, и введите пожалуйста корректный Email. </td></tr></table></body>"; exit("<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='5; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>");}
        }

        // Если на сервер не включены "магические кавычки" обрабатываем введённые пользователями данные функцией mysql_escape_string()
        if (!get_magic_quotes_gpc())
        {
        $tema = mysql_escape_string($tema);
        $email = mysql_escape_string($email);
        $text = mysql_escape_string($text);
        }
        $headers = "From: ".$_REQUEST["email"]." <".$_REQUEST["email"].">\r\n"."MIME-Version: 1.0\r\n"."Content-Type: text/plain; charset=windows-1251\r\n"."Content-Transfer-Encoding: 8bit";
    }


непосредственно отправка


if(!empty($_POST['send']))
            {
                if(mail("qaz@mail.ru", "$tema", "$text", "$headers"))
                {
                    echo "<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>";
                    echo "Письмо успешно отправлено";
                }
                else  { echo "<font color='#FF0000'>Произошла ошибка - письмо не отправлено</font>"; }
            }
            else echo "&nbsp;";

  Ответить  
 
 автор: neadekvat   (16.09.2009 в 14:31)   письмо автору
 
   для: magic   (16.09.2009 в 14:06)
 

Хотя бы
<?php поставье после [ code ]
невозможно читать

  Ответить  
 
 автор: magic   (16.09.2009 в 14:40)   письмо автору
 
   для: magic   (16.09.2009 в 14:06)
 

обработка полученных данных:

<?php
if (!empty($_POST['send'])) 
    { 
        
// обьявляем переменные 
        ////////////////////////////////// 
        
$back="Вернитесь <a href='javascript:history.back(1)' class='text1'><B style='color: Red;'>назад</B></a>"
        
$email $_POST['email']; 
        
$tema $_POST['tema']; 
        
$text $_POST['text']; 
        
$num $_POST['num']; 
        
$rand $_POST['rand']; 

        
// 1. Блок проверки правильности ввода данных 
        ///////////////////////////////////////////////// 
        // удаляем лишние пробелы 
        
$tema trim($tema); 

        
// удаляем HTML-теги 
        
$email htmlspecialchars ($email); 
        
$tema htmlspecialchars($tema); 
        
$text htmlspecialchars($text); 
        
//проверяем тему 
        
if (empty($tema)) {echo "<body bottommargin='0' topmargin='0' rightmargin='0' leftmargin='0'><table border='0' height='100%' width='100%' class='text2'><tr><td valign='middle' align='center'>Некоторые поля формы пустые. $back пожалуйста и заполните оставшиеся поля.</td></tr></table></body>"; exit("<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='5; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>");} 
        
//проверяем защитный код 
        
if(!empty($num) && !empty ($rand)) 
        { 
            if (
$num!=$rand) {echo "<body bottommargin='0' topmargin='0' rightmargin='0' leftmargin='0'><table border='0' height='100%' width='100%' class='text2'><tr><td valign='middle' align='center'>Код на картинке должен совпадать с кодом введеным Вами. $back и исправьте ошибку.</td></tr></table></body>"; exit("<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='5; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>");} 
        } 
        else {echo 
"<body bottommargin='0' topmargin='0' rightmargin='0' leftmargin='0'><table border='0' height='100%' width='100%' class='text2'><tr><td valign='middle' align='center'>$back пожалуйста и заполните форму до конца.</td></tr></table></body>"; exit("<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='5; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>");} 

        
// Если введён e-mail проверяем его на соответсвие 
        
if (!empty($email)) 
        { 
            if(!
eregi("^([0-9a-z]([-_.]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-wyz][a-z](fo|g|l|m|mes|o|op|pa|ro|seum|t|u|v|z)?)$",$email)) {echo "<body bottommargin='0' topmargin='0' rightmargin='0' leftmargin='0'><table border='0' height='100%' width='100%' class='text2'><tr><td valign='middle' align='center'>$back, и введите пожалуйста корректный Email. </td></tr></table></body>"; exit("<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='5; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>");} 
        } 

        
// Если на сервер не включены "магические кавычки" обрабатываем введённые пользователями данные функцией mysql_escape_string() 
        
if (!get_magic_quotes_gpc()) 
        { 
        
$tema mysql_escape_string($tema); 
        
$email mysql_escape_string($email); 
        
$text mysql_escape_string($text); 
        } 
        
$headers "From: ".$_REQUEST["email"]." <".$_REQUEST["email"].">\r\n"."MIME-Version: 1.0\r\n"."Content-Type: text/plain; charset=windows-1251\r\n"."Content-Transfer-Encoding: 8bit"
    }
?>

Непосредственно отправка:

<?php
if(!empty($_POST['send'])) 
            { 
                if(
mail("qaz@mail.ru""$tema""$text""$headers")) 
                { 
                    echo 
"<HTML><HEAD><META HTTP-EQUIV='Refresh' CONTENT='0; URL=$_SERVER[PHP_SELF]'></HEAD></HTML>"
                    echo 
"Письмо успешно отправлено"
                } 
                else  { echo 
"<font color='#FF0000'>Произошла ошибка - письмо не отправлено</font>"; } 
            } 
            else echo 
"&nbsp;";
?>

  Ответить  
 
 автор: magic   (16.09.2009 в 15:42)   письмо автору
 
   для: magic   (16.09.2009 в 14:40)
 

кто-нибудь естьььььь

  Ответить  
 
 автор: cheops   (16.09.2009 в 15:44)   письмо автору
 
   для: magic   (16.09.2009 в 15:42)
 

У меня точного ответа нет, но глаз зацепился за то, что отправляете вы тепло письма в виде текста
Content-Type: text/plain

А сам текст у вас оформлен в виде HTML... вряд ли дело в этом, но возможно спам-фильтр mail.ru за это зацепляется?

  Ответить  
 
 автор: magic   (16.09.2009 в 16:28)   письмо автору
 
   для: cheops   (16.09.2009 в 15:44)
 

Почему в виде HTML? Приходит в текстовом виде. Если автор указывает е-маил, то тело письма приходит, а если просто тема и текст сообщения, то письмо теряется.

  Ответить  
 
 автор: Николай2357   (16.09.2009 в 16:27)   письмо автору
 
   для: magic   (16.09.2009 в 15:42)
 

Вот я недавно разбирался и конспектировал свои поползновения. Там есть ответ на Ваш вопрос.

  Ответить  
 
 автор: neadekvat   (16.09.2009 в 17:35)   письмо автору
 
   для: Николай2357   (16.09.2009 в 16:27)
 

Офтоп:
Что бы => Чтобы
По этому => Поэтому
гарантированно и корректно => всегда и при этом корректно (всегда корректно)

  Ответить  
 
 автор: Николай2357   (16.09.2009 в 17:37)   письмо автору
 
   для: neadekvat   (16.09.2009 в 17:35)
 

Сеньк. Нужно корректора)))

  Ответить  
 
 автор: neadekvat   (16.09.2009 в 16:11)   письмо автору
 
   для: magic   (16.09.2009 в 14:40)
 

По самому вопросу тоже ничего сказать не могу
Но зачем вы "mysql_escape_string" исопльзуете?

  Ответить  
 
 автор: psychomc   (16.09.2009 в 16:18)   письмо автору
 
   для: neadekvat   (16.09.2009 в 16:11)
 

и правда :)

  Ответить  
 
 автор: magic   (16.09.2009 в 16:25)   письмо автору
 
   для: neadekvat   (16.09.2009 в 16:11)
 

Для экранирования спецсимволов, а что что-то не так.

  Ответить  
 
 автор: neadekvat   (16.09.2009 в 17:31)   письмо автору
 
   для: magic   (16.09.2009 в 16:25)
 

С какой целью вы пытаетесь что-то экранировать?
И ничего в названии функиции вас тоже не смущает?
И даже то, что если все это сработает, человеку придет письмо такого содержания:
"люблю Д\'артаньяна" и "Привет админам сайта \"кавычки\"! Рад вас видеть онлайн"

  Ответить  
 
 автор: Trianon   (16.09.2009 в 17:38)   письмо автору
 
   для: magic   (16.09.2009 в 16:25)
 

спецсимвол - символ со специальным назначением / специальными свойствами.
Символы, облададающие специальными свойствами, в рамках какого языка Вы пытаетесь заэкранировать?
И где этот язык в скрипте у Вас применяется?

Не так.

  Ответить  
 
 автор: magic   (16.09.2009 в 20:33)   письмо автору
 
   для: Trianon   (16.09.2009 в 17:38)
 

Ну, ладно зафукали вообще :(. Я пытаюсь обезопасить свой сайт, лучьше больше, чем потом быть жертвой. Эта функция не чего не далает плохого, но конечно если она не нужна я ее уберу. Это функция относится к MySQL? Честно говоря я и не придал этому значение, применял все функции по обработке и защите и эту сунул (ну лохонулся согласен).

  Ответить  
 
 автор: Trianon   (16.09.2009 в 21:34)   письмо автору
 
   для: magic   (16.09.2009 в 20:33)
 

Нету функций по обработке и защите. Все функции обрабатывают данные - и ни одна из них не защищает.

А обезопасить сайт Вам удастся, лишь понимая, что когда и зачем нужно делать с данными.
А не тупо слизывая набившие оскомину строки.

Сейчас (я имею в виду - в этом скрипте, который письма шлет) ВЫ не делаете и десятой части обработки данных, требуемой логикой процесса.

  Ответить  
 
 автор: magic   (16.09.2009 в 21:54)   письмо автору
 
   для: Trianon   (16.09.2009 в 21:34)
 

Я готов учится, для этого я тут и пишу. Что надо делать что бы обезопасить свой сайт. Что в этом примере требует логика процесса

  Ответить  
 
 автор: Trianon   (16.09.2009 в 22:09)   письмо автору
 
   для: magic   (16.09.2009 в 21:54)
 

Николай2357 в (16.09.2009 в 16:27) дал ссылку.
Возможно, там не всё идеально терминологически, но в целом, как отправную точку можно использовать.
И если готовы учиться - самое время заинтересоваться и решить задачу 21. От многих иллюзий избавитесь.

  Ответить  
 
 автор: magic   (16.09.2009 в 22:57)   письмо автору
 
   для: Trianon   (16.09.2009 в 22:09)
 

Эту ссылку я уже обработал, заработало, большое спасибо, есть одно но. Теперь письма приходят, но полностью в вопросительных знаках. И тема и тело письма. Что-то с кодировкой наверно теперь не так.

  Ответить  
 
 автор: magic   (16.09.2009 в 23:12)   письмо автору
 
   для: magic   (16.09.2009 в 21:54)
 

Спасибо всем, разобрался, все работает

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования