Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][HTML] Formularz - problem z załącznikami
amstaff
post 9.02.2009, 18:25:14
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 9.02.2009

Ostrzeżenie: (0%)
-----


Witam!

Dopiero zaczynam przygodę z PHP, więc proszę o wyrozumiałość smile.gif
Postanowiłem zrobić formularz z załącznikami. Poprzeglądałem różne fora, tutoriale itd., i stworzyłem dosć prosty formularz, którym ma być wysyłany wraz z załącznikami. I tu pojawia się problem, gdyż z jednym załącznikiem nie ma problemu. Niestety, gdy dokładam kolejne nie wysyłają się (poza tym jednym) :/ Proszę o pomoc.

Fragment kodu html (formularz):

  • if (is_uploaded_file($plik_nazwa_tmp))
  •  {
  •    $tresc .="--___$znacznik==n";
  •    $tresc .="Content-Type: image/gifn";
  •    $tresc .="Content-Disposition: attachment;n";
  •    $tresc .=" filename="$plik_nazwa_oryginalna"n";
  •    $tresc .="Content-Transfer-Encoding: base64nn";
  •    $f = fopen($plik_nazwa_tmp,"rb");
  •    $dane = fread($f,filesize($plik_nazwa_tmp));
  •    fclose($f);
  •    $tresc .= chunk_split(base64_encode($dane));
  •    $tresc .="--___$znacznik==--n";
  •  }
  •  
  •  // nagłówki i obsługa załącznika
  •  $plik_nazwa_tmp = $_FILES["plik2"]["tmp_name"];
  •  $plik_nazwa_oryginalna = $_FILES["plik2"]["name"];
  •  $plik_wielkosc = $_FILES["plik2"]["size"];
  •  
  •  
  • if (is_uploaded_file($plik_nazwa_tmp))
  •  {
  •    $tresc .="--___$znacznik==n";
  •    $tresc .="Content-Type: image/gifn";
  •    $tresc .="Content-Disposition: attachment;n";
  •    $tresc .=" filename="$plik_nazwa_oryginalna"n";
  •    $tresc .="Content-Transfer-Encoding: base64nn";
  •    $f = fopen($plik_nazwa_tmp,"rb");
  •    $dane = fread($f,filesize($plik_nazwa_tmp));
  •    fclose($f);
  •    $tresc .= chunk_split(base64_encode($dane));
  •    $tresc .="--___$znacznik==--n";
  •  }
  •  
  •   // nagłówki i obsługa załącznika
  •  $plik_nazwa_tmp = $_FILES["plik3"]["tmp_name"];
  •  $plik_nazwa_oryginalna = $_FILES["plik3"]["name"];
  •  $plik_wielkosc = $_FILES["plik3"]["size"];
  •  
  •  
  • if (is_uploaded_file($plik_nazwa_tmp))
  •  {
  •    $tresc .="--___$znacznik==n";
  •    $tresc .="Content-Type: image/gifn";
  •    $tresc .="Content-Disposition: attachment;n";
  •    $tresc .=" filename="$plik_nazwa_oryginalna"n";
  •    $tresc .="Content-Transfer-Encoding: base64nn";
  •    $f = fopen($plik_nazwa_tmp,"rb");
  •    $dane = fread($f,filesize($plik_nazwa_tmp));
  •    fclose($f);
  •    $tresc .= chunk_split(base64_encode($dane));
  •    $tresc .="--___$znacznik==--n";
  •  }
  •  
  •  
  • // wysłanie listu
  •     if (mail($odbiorca,$tytul,$tresc,$naglowki))
  •   {
  •   print "E-mail z załącznikiem został wysłany poprawnie.";
  •   }
  •   else
  •   {
  •   print "E-mail NIE został wysłany poprawnie.
  •   <br>Prosimy o <a href="java script:history.back();">powrót</a> i wysłanie e-maila ponownie.";
  •   }
  • }
  • ?>

    [/list]
    [PHP] Kod


    Niestety nie wiem czy dobrze kombinowałem. Nie bardzo wiem jak odnieść się później do takiej tablicy w php. Wszelkie próby kończyły się na tym, że załączniki nie były wysyłane w ogóle.

    Z góry dziękuję za pomoc.

    Ten post edytował erix 9.02.2009, 20:02:07
  • Go to the top of the page
    +Quote Post
    erix
    post 9.02.2009, 20:05:11
    Post #2





    Grupa: Moderatorzy
    Postów: 15 467
    Pomógł: 1451
    Dołączył: 25.04.2005
    Skąd: Szczebrzeszyn/Rzeszów




    Cytat
    $_FILES jest typu tablicowego, więc próbowałem zrobić coś takiego w html (dla każdego pola dodawania załacznika):

    Gdzieś dzwoni, tylko nie wiesz, w którym kościele. winksmiley.jpg

    Jeśli stworzysz tablicę z elementów formularza, to wtedy zwyczajnie iterujesz po nich, jak po tablicy:
    1. <?php
    2. foreach($_FILES as $k=>$v){
    3.    //
    4. }
    5. ?>


    $v będzie reprezentowało wówczas pojedynczy plik. Teraz wystarczy przenoszenie, itp. wrzucić w pętlę i voilá.


    --------------------

    ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
    Go to the top of the page
    +Quote Post
    amstaff
    post 10.02.2009, 15:47:41
    Post #3





    Grupa: Zarejestrowani
    Postów: 3
    Pomógł: 0
    Dołączył: 9.02.2009

    Ostrzeżenie: (0%)
    -----


    Qrcze...brakuje mi trochę podstaw. Zagmatwałem się i teraz w ogóle załączników nie wysyła sad.gif

    Czyli kod w html ma wyglądać następująco:

    Kod
    <INPUT type="file" name="plik1[]" style="font-size: 10px; height: 18px;vcolor: #FFFFFF; background-color: #666666">


    questionmark.gif

    A plik wyslij.php wygląda teraz tak:


    Kod
    foreach($_FILES as $k=>$v){
       // nagłówki i obsługa załącznika
      $plik_nazwa_tmp = $_FILES["plik1".$v]["tmp_name"];
      $plik_nazwa_oryginalna = $_FILES["plik1".$v]["name"];
      $plik_wielkosc = $_FILES["plik1".$v]["size"];
      
      
    if (is_uploaded_file($plik_nazwa_tmp))
      {
        $tresc .="--___$znacznik==\n";
        $tresc .="Content-Type: image/gif\n";
        $tresc .="Content-Disposition: attachment;\n";
        $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
        $tresc .="Content-Transfer-Encoding: base64\n\n";
        $f = fopen($plik_nazwa_tmp,"rb");
        $dane = fread($f,filesize($plik_nazwa_tmp));
        fclose($f);
        $tresc .= chunk_split(base64_encode($dane));
        $tresc .="--___$znacznik==--\n";
      }
    }


    Oczywiście nie działa :/ Coś qrcze robię nie tak. Jakiś bubel mi wyszedł.
    Przepraszam za moją niewiedzę. Chyba porwałem się na zbyt trudną rzecz jak na początek. Może jednak ktos mi to rozpisze.
    Z góry dziękuję za pomoc smile.gif

    Ten post edytował amstaff 10.02.2009, 15:48:30
    Go to the top of the page
    +Quote Post
    erix
    post 10.02.2009, 16:05:46
    Post #4





    Grupa: Moderatorzy
    Postów: 15 467
    Pomógł: 1451
    Dołączył: 25.04.2005
    Skąd: Szczebrzeszyn/Rzeszów





  • [/list]

  • [/list]

  • [/list]
  • +Quote Post
    amstaff
    post 10.02.2009, 17:08:41
    Post #5





    Grupa: Zarejestrowani
    Postów: 3
    Pomógł: 0
    Dołączył: 9.02.2009

    Ostrzeżenie: (0%)
    -----


    Mam tak:

    Kod
    foreach($_FILES as $k=>$v){
       // nagłówki i obsługa załącznika
      $plik_nazwa_tmp = $v["tmp_name"];
      $plik_nazwa_oryginalna = $v["name"];
      $plik_wielkosc = $v["size"];
      
      
    if (is_uploaded_file($plik_nazwa_tmp))
      {
        $tresc .="--___$znacznik==\n";
        $tresc .="Content-Type: image/gif\n";
        $tresc .="Content-Disposition: attachment;\n";
        $tresc .=" filename=\"$plik_nazwa_oryginalna\"\n";
        $tresc .="Content-Transfer-Encoding: base64\n\n";
        $f = fopen($plik_nazwa_tmp,"rb");
        $dane = fread($f,filesize($plik_nazwa_tmp));
        fclose($f);
        $tresc .= chunk_split(base64_encode($dane));
        $tresc .="--___$znacznik==--\n";
      }
    }


    i nadal nie wysyła... sad.gif
    Go to the top of the page
    +Quote Post
    erix
    post 10.02.2009, 17:55:10
    Post #6





    Grupa: Moderatorzy
    Postów: 15 467
    Pomógł: 1451
    Dołączył: 25.04.2005
    Skąd: Szczebrzeszyn/Rzeszów




    To popróbuj var_dump" title="Zobacz w manualu PHP" target="_manual na poszczególne zmienne, radź sobie trochę...


    --------------------

    ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
    Go to the top of the page
    +Quote Post

    Reply to this topicStart new topic
    1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
    0 Zarejestrowanych:

     



    RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 06:45