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

Форум PHP

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

 

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

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

тема: форма обратной связи - не работает
 
 автор: Dizels   (27.03.2009 в 16:10)   письмо автору
 
 

Слепил форму из нескольких примеров, поэтому что-то не работает, а что понять не могу. Из изменений которые я вносил - это отправка именно на конкретно указанный в скрипте адрес. Подскажите что не так

форма:
<center> 
        <table width=1 border=0> 
            <form action=mail.php enctype='multipart/form-data' method=post> 
            <tr>
                <td width=50%>Ваш эл. адрес:</td><td align=right><input type=text name=mail_from maxlength=32></td>
            </tr> 
            <tr>
                <td width=50%>Тема письма:</td><td align=right><input type=text name=mail_subject maxlength=64></td>
            </tr> 
            <tr>
                <td colspan=2>Сообщение:<br><textarea cols=50 rows=8 name=mail_msg></textarea></td> 
            </tr>
            <tr>
                <td colspan=2><input type=submit value='Отправить'></td>
            </tr> 
            </form> 
        </table> 
    </center> 


обработчик:

<?php 
if(empty($_POST['mail_from'])) exit("Введите адрес получателя"); 

// проверяем правильности заполнения с помощью регулярного выражения 
if (!preg_match("/^[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}$/i"$_POST['mail_from'])) exit("Введите адрес в виде somebody@server.com"); 

$thm $_POST['mail_subject'];
$msg $_POST['mail_msg'];
$mail_from $_POST['mail_from'];

// мыло админа
$mail_admin "admin@admin.com";

// Отправляем почтовое сообщение 
send_mail($mail_from$thm$msg); 

// Вспомогательная функция для отправки почтового сообщения с вложением (Trianon)

  
function send_mail($mail_from$thema$html)   

  {   

    
$EOL "\r\n"// ограничитель строк, некоторые почтовые сервера требуют \n - подобрать опытным путём

    
$boundary     "--".md5(uniqid(time()));  // любая строка, которой не будет ниже в потоке данных.  

    
$headers    "MIME-Version: 1.0;$EOL";   

    
$headers   .= "Content-Type: multipart/mixed; boundary=\"$boundary\"$EOL";  
    
$headers   .= "To: $mail_admin"
    
$headers   .= "From: $mail_from";  

      

    
$multipart  "--$boundary$EOL";   

    
$multipart .= "Content-Type: text/html; charset=windows-1251$EOL";   

    
$multipart .= "Content-Transfer-Encoding: base64$EOL";   

    
$multipart .= $EOL// раздел между заголовками и телом html-части 

    
$multipart .= chunk_split(base64_encode($html));   



 
      

        if(!
mail($mail_from$thema$multipart$headers))   

         {return 
False;           //если не письмо не отправлено

      
}  

    else { 
//// если письмо отправлено

    
return True;  
    
    }  

  exit;  

  }

?>


И сразу еще один вопрос - как сделать так чтобы при успешном\ неуспешном отпралении письма на страницы выводилась соответствующая надпись: письмо отправлено\ не отправлено

  Ответить  
 
 автор: Dizels   (27.03.2009 в 17:03)   письмо автору
 
   для: Dizels   (27.03.2009 в 16:10)
 

очень нужна ваша помощь

  Ответить  
 
 автор: ddhvvn   (27.03.2009 в 18:40)   письмо автору
 
   для: Dizels   (27.03.2009 в 17:03)
 

>что-то не работает, а что понять не могу
Хотя бы поэтому мы не сможем Вам помочь...

  Ответить  
 
 автор: Dizels   (27.03.2009 в 22:25)   письмо автору
 
   для: ddhvvn   (27.03.2009 в 18:40)
 

Письмо не приходит, а почему - мне не понятно, вроде все правильно. Просто я еще не разу форму не делал, поэтому мог что-то в коде напутать вот и прошу посмотреть. как иначе объяснить - не знаю

  Ответить  
 
 автор: nikita2206   (27.03.2009 в 23:16)   письмо автору
 
   для: Dizels   (27.03.2009 в 22:25)
 

возможно ошибка не ваша, а хостер не дает пользоваться функцией mail()

  Ответить  
 
 автор: Dizels   (28.03.2009 в 18:46)   письмо автору
 
   для: nikita2206   (27.03.2009 в 23:16)
 

Нет, до этого письмо отправлялось, а потом я переделал так как мне надо и письмо не приходит, т.е. ошибка в коде, но где - я не могу понять

  Ответить  
 
 автор: Dizels   (03.04.2009 в 21:10)   письмо автору
 
   для: Dizels   (28.03.2009 в 18:46)
 

вопрос все еще актуален.

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

  Ответить  
 
 автор: indexer   (03.04.2009 в 21:50)   письмо автору
 
   для: Dizels   (03.04.2009 в 21:10)
 

Потому что код безолаберный, если перевести его на русский то будет лвапыжвламтиыжвлао
:)
начните с простой функции mail(); и постепенно наращивайте функционал, добавляя нужные проверки и все остальные перелести, постарайтесь Вдумчиво читать и понимать то что читаете, Ни кто не будет делать за вас вашу работу, вы ее должны сделать сами. если отправлялись письма, а теперь нет то возможно где то спрятана ошибка повысьте уровень предупреждений php до варнингов, перед отправкой на мыло выводите все переменные на печать в браузере., непонятные строки кода читайте пока не наступит прояснение, 100 раз подумайте прежде чем оставлять неинициализированную переменную и 1000 раз подумайте заставив php проглатить ошибку.

вот что получаю если прогнать вашу функцию через обработчик ошибок.
На входе в функцию инициализировано только 3 переменные это
$html;
$mail_from;
$thema

Извещение (Notice): строка 34 - Undefined variable: mail_admin \могу ошибатся может и все нормально просто не все переменные передал Но зато....ЭТО
Предупреждение отладчика:
строка 54 - mail() [<a href='function.mail'>function.mail</a>]: &quot;sendmail_from&quot; not set in php.ini or custom &quot;From:&quot; header missing
а вот это в 54 строке
if(!mail($mail_from, $thema, $multipart, $headers))

вызывает срабатывание 56 строки а в ней
return False;


:)

Удачи в разборках...

  Ответить  
 
 автор: Trianon   (03.04.2009 в 22:21)   письмо автору
 
   для: Dizels   (03.04.2009 в 21:10)
 

Если подытожить в целом справедливое замечание предыдущего оратора, то окажется, что

не определена переменная $mail_admin в теле функции send_mail()

(мой ник из кода неплохо было бы убрать)

  Ответить  
 
 автор: Dizels   (03.04.2009 в 22:31)   письмо автору
 
   для: Trianon   (03.04.2009 в 22:21)
 

Большое спасибо за ответы - ник уберу, просто при копировании примеров вставился)

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

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