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

Форум PHP

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

 

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

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

тема: Fatal error: Cannot redeclare send_mail() (previously declared in /hom
 
 автор: celovec   (07.03.2012 в 00:53)   письмо автору
 
 

использую код


 function send_mail($to, $thm, $html, $path)
  {
    $fp = fopen($path,"r");
    if (!$fp)
    {
      print "fail $path ne procitati";
      exit();
    }
    $file = fread($fp, filesize($path));
    fclose($fp);

    $boundary = "--".md5(uniqid(time())); 
    $headers .= "MIME-Version: 1.0\n";
    $headers .="Content-Type: multipart/mixed; boundary=\"$boundary\"\n";

include "conf_sql2.php";
 if(($stop)=="1"){
    $headers .= "From: D - System testing...\r\n\r\n";} 
if(($stop)=="0")
{    $headers .= "From: D <my.mail@gmail.com>\r\n\r\n";}
    $multipart .= "--$boundary\n";
    $kod = 'windows-1251';                    
    $multipart .= "Content-Type: text/html; charset=$kod\n";
    $multipart .= "Content-Transfer-Encoding: Quot-Printed\n\n";
    $multipart .= "$html\n\n";

    $message_part = "--$boundary\n";
    $message_part .= "Content-Type: application/octet-stream\n";
    $message_part .= "Content-Transfer-Encoding: base64\n";
    $message_part .= "Content-Disposition: attachment; filename = \"".$path."\"\n\n";
    $message_part .= chunk_split(base64_encode($file))."\n";
    $multipart .= $message_part."--$boundary--\n";

    if(!mail($to, $thm, $multipart, $headers))
    {
      exit("error3");
    } 
  }





он отсылает сообшение в хтмл + нтмл в приложении.
мне нужно отправлять подписчикам в цикле, но тогда получаю ошибку

Fatal error: Cannot redeclare send_mail() (previously declared in /hom

  Ответить  
 
 автор: cheops   (07.03.2012 в 13:25)   письмо автору
 
   для: celovec   (07.03.2012 в 00:53)
 

У вас производится попытка второй раз переопределить функцию send_mail(), определение функции нужно вынести из цикла.

  Ответить  
 
 автор: celovec   (07.03.2012 в 20:17)   письмо автору
 
   для: cheops   (07.03.2012 в 13:25)
 

а подскажите пожалуйста как вынести за цикл ОПРЕДЕЛЕНИЕ функции а не саму функцию целиком?

  Ответить  
 
 автор: .....   (07.03.2012 в 20:41)
 
   для: celovec   (07.03.2012 в 20:17)
 

возможно где-то дважды срабатывает include() ?если функция определена один раз
, тогда можно использовать require_once() вместо include()

  Ответить  
 
 автор: celovec   (07.03.2012 в 20:43)   письмо автору
 
   для: .....   (07.03.2012 в 20:41)
 

нет я его убрал. я пробовал как выговорите только для этого скрипта. тогда ошибку не выдаёт но письмо приходит один раз

  Ответить  
 
 автор: .....   (07.03.2012 в 20:49)
 
   для: celovec   (07.03.2012 в 20:43)
 

сама функция это и есть определение , оно должно быть выполнено только один раз, а в цикле должны быть только вызовы функции, т.е.

send_mail($кому, $зачем, $чего, $счем);

  Ответить  
 
 автор: celovec   (07.03.2012 в 21:04)   письмо автору
 
   для: .....   (07.03.2012 в 20:49)
 

не получается поделить. выдаёт exit("error3");

можно вообще убрать функцию, просто майл()?

  Ответить  
 
 автор: .....   (07.03.2012 в 21:41)
 
   для: celovec   (07.03.2012 в 21:04)
 

> просто майл()?
Возможно, почти такое-же колличество кода
, Но не оптимально и разбираться удобнее когда нужно в функции а когда нужно в цикле , чем в одной большой каше.

код который вы привели это только определение функции, часть которого вынесена в другой файл
По идее дальше по коду должно быть что-то вроде
//<?
foreach($spisok AS $klient){
  
send_mail($klient['addr'], $thm.$klient['name'], $html$path);
}

  Ответить  
 
 автор: .....   (07.03.2012 в 21:57)
 
   для: .....   (07.03.2012 в 21:41)
 

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

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

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