Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wgrywanie pliku
Forum PHP.pl > Forum > PHP
krzysiek8104
Witam

Mam problem. Otóż mam formularz taki jak na rysunku.


Chciałbym aby po wgraniu wyświetlił mi się komunikat że wgrano plik ewentualnie wyświetliło się nowe okno z podsumowaniem procesu wgrywania, a następnie żebym mógł wysłać wiadomość przyciskiem Wyślij.
Tutaj mak kod:
Kod
<div class="info">
  <h2 align="center"><strong>ZAPYTANIE</strong></h2>
  <br />
  <?php

if(empty($_POST['submit'])) { $charset = 'utf-8';
?>
  <form action="" method="post">
    Imię i nazwisko <br />
    <input type="text" name="formName" value="Imię i nazwisko" onblur="if(value=='') value = 'Imię i nazwisko'" onfocus="if(value=='Imię i nazwisko') value = ''" size="80"/>
    <br />
    <br />
    Adres e-mail <br />
    <input type="text" name="formEmail" value="E-mail" onblur="if(value=='') value = 'E-mail'" onfocus="if(value=='E-mail') value = ''" size="80"/>
    <br />
    <br />
    Treść zapytania <br />
    <textarea name="formText" onblur="if(value=='') value = 'Treść zapytania'" cols="80" rows="18" onfocus="if(value=='Treść zapytania...') value = ''">Treść zapytania</textarea>
    <br />
    <br />
    
    
    
<tr>
<form action="multiple_upload_ac.php" method="post" enctype="multipart/form-data" name="form1" id="form1" target="_blank">
<td>
<table width="100%" border="0" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF">
<tr>
<td></td>
</tr>
<tr>
<td>Załącz plik
<input name="ufile[]" type="file" id="ufile[]" size="50" /></td>
</tr>

<tr>
<td align="center"><input type="submit" name="Submit" value="Wgraj" onClick="" /></td>
</tr>
</table>
</td>
</form>
</tr>




    <input type="submit" name="submit" value="Wyślij formularz"/>
  </form>
  <?php
} else {
    //twoje dane
    $email = 'projekt@techar.pl';
    
    //dane z formularza
    $formName = $_POST['formName'];
    $formEmail = $_POST['formEmail'];
    $formText = $_POST['formText'];
    
    if(!empty($formName) && !empty($formEmail) && !empty($formText)) {
        //--- początek funkcji weryfikującej adres e-mail ---
        function checkMail($checkmail) {
          if(filter_var($checkmail, FILTER_VALIDATE_EMAIL)) {
            if(checkdnsrr(array_pop(explode("@",$checkmail)),"MX")){
                return true;
              }else{
                return false;
              }
          } else {
            return false;
          }
        }
        //--- koniec funkcji ---
        
        if(checkMail($formEmail)) {
          //dodatkowe informacje: ip i host użytkownika
          $ip = $_SERVER['REMOTE_ADDR'];
          $host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
          $protocol = strpos(strtolower($_SERVER['SERVER_PROTOCOL']),'https')
                        === FALSE ? 'http' : 'https';
            $host     = $_SERVER['HTTP_HOST'];
            $script   = $_SERVER['SCRIPT_NAME'];
            $params   = $_SERVER['QUERY_STRING'];
            
            $currentUrl = $protocol . '://' . $host . $script . '?' . $params;
        
          //tworzymy szkielet wiadomości
          //treść wiadomości
          $mailText = "Treść wiadomości: $formText    Od: $formName, $formEmail ($ip, $host)   Link: $currentUrl";
        
          //adres zwrotny
          $mailHeader = "From: $formName <$formEmail>";
        
          //funkcja odpowiedzialna za wysłanie e-maila
          @mail($email, '[Zapytanie]', $mailText, $mailHeader) or die('Błąd: wiadomość nie została wysłana');
        
          //komunikat o poprawnym wysłaniu wiadomości
          echo 'Wiadomość została wysłana';
        } else {
            echo 'Adres e-mail jest niepoprawny';
        }
    }
    else {
      //komunikat w przypadku nie powodzenia
      echo 'Wypełnij wszystkie pola formularza';
    }
}
?>
</div>


oraz kod pliku multiple_upload_ac.php

Kod
<?php



$path1= "upload/".$HTTP_POST_FILES['ufile']['name'][0];


//copy file to where you want to store file
copy($HTTP_POST_FILES['ufile']['tmp_name'][0], $path1);


//$HTTP_POST_FILES['ufile']['name'] = file name
//$HTTP_POST_FILES['ufile']['size'] = file size
//$HTTP_POST_FILES['ufile']['type'] = type of file
echo "File Name :".$HTTP_POST_FILES['ufile']['name'][0]."<BR/>";
echo "File Size :".$HTTP_POST_FILES['ufile']['size'][0]."<BR/>";
echo "File Type :".$HTTP_POST_FILES['ufile']['type'][0]."<BR/>";
echo "<img src=\"$path1\" width=\"150\" height=\"150\">";
echo "<P>";


///////////////////////////////////////////////////////

// Use this code to display the error or success.

$filesize1=$HTTP_POST_FILES['ufile']['size'][0];
;

if($filesize1 != 0)
{
echo "We have recieved your files";
}

else {
echo "ERROR.....";
}

//////////////////////////////////////////////

// What files that have a problem? (if found)

if($filesize1==0) {
echo "There're something error in your first file";
echo "<BR />";
}


?>


Nie wiem gdzie tkwi błąd. Czy ktoś jest w stanie mi pomóc.

Pozdrawiam
Krzysiek

Tomplus
Z tego co widzę to wgrywasz na serwer plik, ale po prostu nie dajesz odpowiedzi zwrotnej do pliku formularz.php. Czyli z tego co widzę, pojawia się komunikat ze plik został wgrany lub nie, ale na stronie z formularzem, nie będzie tego komunikatu.
Musialbyś użyć jakieś prostej metody AJAX albo ew. zapisać do sesji tego formularza lub że jakiś plik został wgrany, aby formularz.php mógł sprawdzić czy plik istnieje np. file_exists()
krzysiek8104
Tak. Plik się wgrywa, ale nie daje odpowiedzi.
Wystarczyłby komunikat, że plik został wgrany (nawet w tym samym oknie). Ale nie bardzo wiem jakiego kodu użyć.
Tomplus
Może zacznij od zmiany tych starożytnych zmiennych $HTTP_POST_FILES na współczesne $_FILES. Te pierwsze mają być, czasami już są wycofane z obsługi.

i powiedz czy jak już robisz wgraj to czy pojawia się to:

  1. if($filesize1 != 0)
  2. {
  3. echo "We have recieved your files";
  4. }
  5.  
  6. else {
  7. echo "ERROR.....";
  8. }


W ogóle nie ten plik w formularzu ci działa. Na 100% wysyłasz nie do tego pliku co trzeba.

Nie tworzy się FORM w FORM, bo zawsze będzie działać ten pierwszy.
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.