Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sprawdzanie zawartości formularza
Forum PHP.pl > Forum > Przedszkole
oomaster
Witam,

Mam formularz w nim różne pola i pole do uploadu zdjęcia. Chciałbym zeby skrypt sprawdzał czy zdjęcie zostało dodane lub nie i odpowiedni nic nie robił lub nadpisywał zdjęcie.

Oto moje rozwiązanie:

  1. if(!empty($_FILES['foto']['name'])) {
  2. unlink("img/".$fotos);
  3. if($_FILES['foto']['error'] != 0){
  4. echo '<div class="alert_error">Zdjęcie nie zostało załadowane.</div><br/>';
  5. } else {
  6. move_uploaded_file($_FILES['foto']['tmp_name'],"../img/".$los.$_FILES['foto']['name']);
  7. $name = $los.$_FILES['foto']['name'];
  8. }
  9. }

  1. <input type="file" name="foto" />


Ale coś te !empty nie działa bo czy jest zdjęcie czy go nie ma to i tak skrypt się wykonuje?
Robert007
zamast empty to uzyj isset

empty wykonuje się ponieważ zmienna istnieje. A isset jedynie jak jest zawartość
oomaster
  1. if(isset($_FILES['foto']['name'])) {


Znowu to samo :-/
nospor
zrob sobie
print_r($_FILES)
a swiat stanie się piekniejszy...
gorden
Dodaj do formularza submit (jeśli go masz, nadaj name):
  1. <input type=submit name="upload_submit">


Warunek:
  1. if(isset($_POST['upload_submit']) && $_POST['foto']['name'] !== null) {
oomaster
Problem dalej jest. Najpier wyświetlam czy $_FILES['foto']['name'] coś ma w sobie i ma jakąś treść a mimo to warunek if nie działa, dlaczego?

  1. echo $_FILES['foto']['name'];
  2. if($_FILES['foto']['name']==1) { echo"ok"; }


Dla przykładu tworzę kod:

  1. $ok="caos";
  2. if($ok == 1){ echo"ok"; } else { echo"bad";}


I o dziwo ciągle wyświetla bad !? A powinno ok przecież. Dlaczego?
nospor
blinksmiley.gif
A od kiedy caos == 1?

Jak juz cos to tak:
if($ok){ echo"ok"; } else { echo"bad";}
cojack
Jeżeli posiadasz w formularzu input typu file, to zawsze po wysłaniu bez znaczenia czy wybrałeś plik czy nie będziesz posiadał tablice $_FILES, musisz sprawdzić czy zostało wysłane:

  1. if(!is_uploaded_file($_FILES['nazwa_pola_z_formularza']['tmp_name']) || ($_FILES['nazwa_pola_z_formularza']['error'] !== UPLOAD_ERR_OK))
  2. {
  3. die('Nie można było wysłać pliku na serwer');
  4. }


To jest w przypadku jeżeli plik jest wymagany w formularzu, dostosuj to sobie jak chcesz.
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.