За последние 24 часа нас посетили 16494 программиста и 1677 роботов. Сейчас ищут 916 программистов ...

Проблема с формой отправки

Тема в разделе "Вопросы от блондинок", создана пользователем SaM1001, 19 июн 2009.

  1. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Второй день не могу настроить форму оправки почты с автоматическим прикреплением файлов. Файлы всегда одни и те же. но почему-то не получается. постоянно выкидывает ошибки с котрыми не могу справить самостоятельно. Может кто глянуть в чём тут загвоздка? Если не трудно конечно. Знаю что километр кода читать тяжело, если сам его не написал, но может быть, у просто нет ещё столько опыта в php...

    Есть вот такой отдельный файл который по идее должен обрабатывать форму
    PHP:
    1.  
    2. <?php
    3. function mail_att($Contact, $Betreff, $Description, $Anhang)
    4.    {
    5.    $absender = "Имя";
    6.    $absender_mail = "my@domain";
    7.    $reply = "reply@adresse";
    8.  
    9.    $mime_boundary = "-----=" . md5(uniqid(mt_rand(), 1));
    10.  
    11.    $header  ="From:".$absender."<".$absender_mail.">\n";
    12.    $header .= "Reply-To: ".$reply."\n";
    13.  
    14.    $header.= "MIME-Version: 1.0\r\n";
    15.    $header.= "Content-Type: multipart/mixed;\r\n";
    16.    $header.= " boundary=\"".$mime_boundary."\"\r\n";
    17.  
    18.    $content = "This is a multi-part message in MIME format.\r\n\r\n";
    19.    $content.= "--".$mime_boundary."\r\n";
    20.    $content.= "Content-Type: text/html charset=\"iso-8859-1\"\r\n";
    21.    $content.= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    22.    $content.= $Description."\r\n";
    23.  
    24.    if(is_array($Anhang) AND is_array(current($Anhang)))
    25.       {
    26.       foreach($Anhang as $dat)
    27.          {
    28.          $data = chunk_split(base64_encode($dat['data']));
    29.          $content.= "--".$mime_boundary."\r\n";
    30.          $content.= "Content-Disposition: attachment;\r\n";
    31.          $content.= "\tfilename=\"".$dat['name']."\";\r\n";
    32.          $content.= "Content-Length: .".$dat['size'].";\r\n";
    33.          $content.= "Content-Type: ".$dat['type']."; name=\"".$dat['name']."\"\r\n";
    34.          $content.= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    35.          $content.= $data."\r\n";
    36.          }
    37.       $content .= "--".$mime_boundary."--";  
    38.       }
    39.    else
    40.       {
    41.       $data = chunk_split(base64_encode($Anhang['data']));
    42.       $content.= "--".$mime_boundary."\r\n";
    43.       $content.= "Content-Disposition: attachment;\r\n";
    44.       $content.= "\tfilename=\"".$Anhang['name']."\";\r\n";
    45.       $content.= "Content-Length: .".$Anhang['size'].";\r\n";
    46.       $content.= "Content-Type: ".$Anhang['type']."; name=\"".$Anhang['name']."\"\r\n";
    47.       $content.= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    48.       $content.= $data."\r\n";
    49.       }  
    50.  
    51.    if(@mail($Contact, $Betreff, $content, $header)) return true;
    52.    else return false;
    53.    }
    54. ?>
    55.  
    его я подцепляю через

    PHP:
    1.  
    2. require_once(DOC_ROOT . "classes/mail_send.class.php"
    3.  
    в другой файл с таким кодом:

    PHP:
    1.  
    2.                 $FilenameMat            = 'Rechnung'.date("d-m-Y_H").'Mat.txt';
    3.     $FilenameAZ             = 'Rechnung'.date("d-m-Y_H").'AZ.txt';
    4.  
    5.      
    6.                 $pfad = array();
    7.                 $pfad[] = fopen(TXT_PATH . $FilenameMat, "r");
    8.                 $pfad[] = fopen(TXT_PATH . $FilenameAZ, "r");
    9.  
    10.                 $Anhang = array();
    11.                 foreach($pfad as $path)
    12.                    {
    13.  
    14.                    $name = basename($path);
    15.                    //debug ($path);
    16.                    $size = filesize($path);
    17.                    $data = implode("",file($path));
    18.                
    19.                    if(function_exists("mime_content_type"))
    20.                       $type = mime_content_type($path);
    21.                    else
    22.                       $type = "application/octet-stream";
    23.                     $Anhang[] = array("name"=>$name, "size"=>$size, "type"=>$type, "data"=>$data);
    24.                     }
    25.                
    26.                 mail_att("empf@domain","Email mit Anhang","Im Anhang sind mehrere Datei",$Anhang);
    27.  
    котрый потом через .tpl должен выполняться

    PHP:
    1.  
    2. <h1>{$Topic}</h1>
    3.  
    4.     <form action="{$FormTarget}" method="post" name="Payroll_detail" id="Payroll_detail" enctype="multipart/form-data">
    5.  
    6.           {include file="file:invoice_order_overview_details.tpl"}
    7.       <br><br>
    8.           <table cellspacing="0" cellpadding="0" class="Article">
    9.           <tr><td colspan="3">
    10.           <b>E-Mail<br></b></td></tr>
    11.         <tr>
    12.             <td{$ContactError}>E-Mail Empf&auml;nger*:</td>
    13.             <td colspan="2">
    14.                 <input type="text" name="Contact" value="{$Contact}" size="50"/></td>
    15.         </tr>
    16.             <tr>
    17.             <td{$BenachrichtigungError}>
    18.                 CC:
    19.             </td>
    20.             <td colspan="2">
    21.                 <input type="text" name="Benachrichtigung" value="{$Benachrichtigung}" size="80"/>
    22.             </td>
    23.          </tr>
    24.         <tr>
    25.             <td{$BetreffError}>
    26.                 Betreff*:
    27.             </td>
    28.             <td colspan="2">
    29.                 <input type="text" name="Betreff" value="{$Betreff}" size="80"/>
    30.             </td>
    31.          </tr>
    32.           <tr>
    33.              <td{$DescriptionError}>
    34.                 Nachricht:
    35.             </td>
    36.             <td colspan="2">
    37.                 <textarea name="Description" cols="55" rows="10">{$Description}</textarea>
    38.             </td>
    39.          </tr>
    40.          <tr>
    41.              <th style="border-right: 0px;"><b>&nbsp;</b></th>
    42.              <th style="border-right: 0px;" style="border-left: 0px;">
    43.              <input type="submit" name="payroll_details" value="{$payroll_details}" class="ButtonLarge"></th>
    44.              <th style="border-left: 0px;"><input type="submit" name="txt" value="{$txt}" class="ButtonLarge"></th>
    45.          </tr>
    46.      </table>
    47. </form>
    48.  
    но не делает этого, а выкидывает предупреждение:

    177я строчка, это начинается вот тут:
    PHP:
    1.                   $name = basename($path);
    Может кто-то может определить/подсказать что я делаю не правильно, уже все-возможные ресурсы исчерпал которые знал...
     
  2. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    PHP:
    1. var_dump($path);
    выдаёт вот это:
    Код (Text):
    1. resource(79) of type (stream)
     
  3. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Если меняю $name на
    PHP:
    1. $name = basename(rtrim($path, '/'));
    то первая ошибка уходит, а дальше у меня стопор начинается...
     
  4. SaM1001

    SaM1001 Активный пользователь

    С нами с:
    19 июн 2009
    Сообщения:
    60
    Симпатии:
    0
    Ребят, никто не может помочь?
    Вот что мне с этой бякой можно сделать:
    PHP:
    1. Warning: filesize() [function.filesize]: stat failed for Resource id #79 in C:\Programme\Xampp\htdocs...
    ???