Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie załącznika w formularzu
Forum PHP.pl > Forum > Przedszkole
motor
Witam skorzystałem z gotowego skryptu który znalazłem na forum tzn:

http://php.webhelp.pl/index.php?id=106&roz=php&ac=read


Wyskakuje mi taki błąd
Fatal error: Call to undefined function: fileopenanddecode() in

Nie wiem co jest grane jak mogę to obejść ?

Pozdrawiam
Sabistik
Wyglada na to ze nie umiesciles w swoim skrypcie funkcji ktora jest tam opisana:
  1. <?php
  2.  
  3. //funkcja odczytująca plik i kodująca go d o formatu base64 zgodnie z RFC 2045 
  4. function fileopenanddecode($file) { 
  5. if (is_readable($file)) { 
  6.  $fd = fopen($file, "r"); 
  7.  $plik = fread($fd, filesize($file)); 
  8.  $encoded = chunk_split(base64_encode($plik)); 
  9.  fclose($fd);  
  10. } 
  11. return $encoded; 
  12. }
  13.  
  14. ?>
motor
nie nie przpisałem słowo w słowo
  1. <?    
  2.  if($tak == "1"){
  3.  
  4.         
  5. ///
  6. $boundary = "-->===_54654747_===<---->>4255==_"; 
  7. $sendto ="zundap@vp.pl";
  8. // Zmiennych $subject i $sendto nie  musimy w zaden sposób przerabiac. 
  9.  
  10. // Teraz trzeba sformatowac naglówek. 
  11. $from = "biuro@nokto.pl.net"  ;
  12.         $head = "From: $from\n"; 
  13.         $head = $head . "Reply-To: $a_row[title]\n"; 
  14.         $head = $head . "X-Mailer: php\n"; 
  15.         $head = $head . "X-Sender: $from\n"; 
  16.         $head = $head . "MIME-version: 1.0\n"; 
  17.         $head = $head . "Content-type: multipart/mixed; "; 
  18.         $head = $head . "boundary=\"$boundary\"\n"; 
  19.         $head = $head . "Content-transfer-encoding: 7BIT\n"; 
  20.         $head = $head . "X-attachments: $filename_name;\n\n"; 
  21.  
  22. // Jeszcze tylko tresc wiadomosci i  mozemy slac poczte  
  23.  
  24.        $mesg = "--" . $boundary . "\n";    //pamietamy dwa minusy na poczatku 
  25.         $mesg = $mesg . "Content-Type: text/plain; charset=\"us-ascii\"\n\n"; 
  26.         $mesg = $mesg . $message . "\n"; 
  27.         $mesg = $mesg . "--" . $boundary . "\n";    //pamietamy dwa minusy na poczatku 
  28.          $mesg = $mesg . "Content-type: " . $filename_type  . "; name=\"$filename_name\";\n";         
  29.         $mesg = $mesg . "Content-Transfer-Encoding: base64\n"; 
  30.         $mesg = $mesg . "Content-disposition: attachment; filename= \"$filename_name\"\n\n"; 
  31.         $mesg = $mesg . fileopenanddecode($filename) . "\n";   //czytamy plik i go kodujemy 
  32.         $mesg = $mesg . "--" . $boundary . "-- \n"; //pamietamy dwa minusy na poczatku  i na koncu 
  33.  
  34.  
  35.  
  36. //funkcja odczytujaca plik i kodujaca go d o formatu base64 zgodnie z RFC 2045 
  37.     function fileopenanddecode($file) { 
  38.         if (is_readable($file)) { 
  39.              $fd = fopen($file, "r"); 
  40.              $plik = fread($fd, filesize($file)); 
  41.              $encoded = chunk_split(base64_encode($plik)); 
  42.              fclose($fd);     
  43.         } 
  44.         return $encoded; 
  45.     } 
  46.  
  47. // i to wszystko teraz tylko  
  48. mail($sendto, $subject, $mesg, $head);  
  49. //i poszlo 
  50.  
  51. ///
  52.  
  53.             
  54.                 
  55.             
  56.             }else{
  57.             ?>
  58. <form name="form1" method="post" action="wyslij.php?&tak=1" enctype="multipart/form-data"> 
  59. <table width="300" border="0" cellspacing="0" cellpadding="0"> 
  60. <tr><td>subject</td><td><input type="text" name="subject"></td></tr> 
  61. <tr><td>replayto</td><td><input type="text" name="replayto"></td></tr> 
  62. <tr><td>from</td><td><input type="text" name="from"></td></tr> 
  63. <tr><td>message</td><td><textarea name="message" wrap="VIRTUAL"></textarea></td></tr> 
  64. <tr><td>filename</td><td><input type="file" name="filename"></td></tr> 
  65. <tr><td colspan="2"><input type="submit" name="Submit" value="Submit"></td></tr> 
  66. </table> 
  67. </form> 
  68. <?
  69. }
  70.             ?>    
Neojawor
kożystasz z funkcji fileopenanddecode() w linii 32, a deklarujesz ją dopiero w 39. php czyta od góry. W linii 32 jeszcze nie wie co to za funkcja

EDIT:
Linie od 37 do 47 (włącznie) przenieś sobie na początek skryptu, powinno wszystko działać (chyba, że są inne błędy)
motor
Dzięki smile.gif masz rację zrobiłem jak mówisz i wszystko działa.

Temat uważam za zamknięty.

Pozdrawiam
Sabistik
No nie wpadl bym na to ze ktos uzywa jeszcze php3.. radze zrobic upgrade. mamy juz PHP5!

Od PHP4 fukcja moze byc zdeklarowana powyzej lub ponizej jej wywolania.
lukash82
Witam. Mam problem z wysylaniem zalacznikow za pomoca tego samego skryptu dlatego nie zaczynam nowego tematu tylko odgrzebuje ten temat. A wiec tak jak pisalem probuje uzyc tego samego skryptu. Maile dochodza jak nalezy ale niestety zalacznik nie dochodzi:/ Przychodza za to takie smieci na maila:

Odpowiedz do: test3
X-Mailer: PHP
X-Sender: test3
MIME-version: 1.0
Content-type: multipart/mixed; boundary="-->===_54654747_===<---->>4255==_"
Content-transfer-encoding: 7BIT
X-attachments: ;



---->===_54654747_===<---->>4255==_
Content-Type: text/plain; charset="us-ascii"

test3
---->===_54654747_===<---->>4255==_
Content-type: ; name="";
Content-Transfer-Encoding: base64
Content-disposition: attachment; = ""


---->===_54654747_===<---->>4255==_--

Ale to rozumiem, bo tak jest skonstrowany plik wysylajacy maila. Nie wiem jednak dlaczego nie przychodzi na maila zalacznik...? Probowalem wysylac plik tekstowy, txt i obrazek gif i nic. Nie wiem czemu to nie dziala i nie mam zbytnio pomyslu jak to rozwiazac... Jesli mozecie mi jakos pomoc albo podpowiedziec co robie zle to prosze o pomoc. Ponizej zamieszczam jeszcze raz ten skrytp do wysylania bo moze cos tam jest zle zrobione a czego nie widze:
  1. <?php
  2. $dane = $_POST['dane'];
  3. $email = $_POST['email'];
  4. $telefon = $_POST['telefon'];
  5. $miasto = $_POST['miasto'];
  6. $tresc = $_POST['tresc'];
  7.  
  8. $boundary = "-->===_54654747_===<---->>4255==_";
  9.  
  10. $head = "Od: $dane\n";
  11. $head = $head . "Odpowiedz do: $email\n";
  12. $head = $head . "X-Mailer: PHP\n";
  13. $head = $head . "X-Sender: $dane\n";
  14. $head = $head . "MIME-version: 1.0\n";
  15. $head = $head . "Content-type: multipart/mixed; ";
  16. $head = $head . "boundary=\"$boundary\"\n";
  17. $head = $head . "Content-transfer-encoding: 7BIT\n";
  18. $head = $head . "X-attachments: $filename_name;\n\n";
  19.  
  20. function fileopenanddecode($file) 
  21. {
  22.  if (is_readable($file)) 
  23. {
  24. $fd = fopen($file, "r");
  25. $plik = fread($fd, filesize($file));
  26.  $encoded = chunk_split(base64_encode($plik));
  27.  fclose($fd);
  28. }
  29. return $encoded;
  30. }
  31.  
  32. $mesg = "--" . $boundary . "\n";
  33. $mesg = $mesg . "Content-Type: text/plain; charset=\"us-ascii\"\n\n";
  34. $mesg = $mesg . $tresc . "\n";
  35. $mesg = $mesg . "--" . $boundary . "\n";
  36. $mesg = $mesg . "Content-type: " . $filename_type . "; name=\"$filename_name\";\n";
  37. $mesg = $mesg . "Content-Transfer-Encoding: base64\n";
  38. $mesg = $mesg . "Content-disposition: attachment; $filename= \"$filename_name\"\n\n";
  39. $mesg = $mesg . fileopenanddecode($filename) . "\n";
  40. $mesg = $mesg . "--" . $boundary . "-- \n";
  41.  
  42. @mail("mail@mail.pl","Wiadomosc ze strony WWW", $mesg, $head);
  43. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.