Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Walidacja typów MIME
Forum PHP.pl > Forum > PHP
Booyaches
Witam !
Jestem początkującym uzytkownikiem PHP. Jestem w trakcie tworzenia malego systemu,w ktorym uzytkownik (m. in) bedzie mial mozliwosc uploadowania swojego avatara w formacie jpg. Problem polegana tym ,ze chcialem aby mial rowniez mozliwosc opuszczenia tego kroku (czyli pozostawienia pustego formularza) i przejscia dalej. Nie wiem jak mam sformulowac poprawny warunek. Jak narazie walidacja pliku wyglada tak:

CODE
if ($filesize1 > 200) {

$error = "Your avatar can`t be bigger than 200 KB<br/><a href='java script:java script:history.go(-1)'>Back</a>";

} elseif ($_FILES['avatar']['type']!= "image/pjpeg") {

$error = "Your avatar has to be saved as JPEG file !<br/><a href='java script:java script:history.go(-1)'>Back</a>";

} elseif (file_exists("avatars/".$_FILES['avatar']['name'])) {

$error = "This file already exists in our database !<br/><a href='java script:java script:history.go(-1)'>Back</a>";

} else {

move_uploaded_file ($_FILES['avatar']['tmp_name'], "avatars/".$_FILES['avatar']['name']);
list($imgwidth, $imgheight) = getimagesize("avatars/".$_FILES['avatar']['name']);

if ($imgwidth > 150 || $imgheight >150) {

$error = "Your avatar can`t be bigger than 150x150 px.<br/><a href='java script:java script:history.go(-1)'>Back</a>";
unlink("avatars/".$_FILES['avatar']['name']);

} else {

$result = mysql_query($filequery, $dblink);
$result2 = mysql_query($descriptionquery, $dblink);
$positive = "You have been succesfully registered. "
."You will be redirected to our homepage in 5 seconds !";
};
};


Naturalnie problem lezy tutaj:

Kod
....} elseif ($_FILES['avatar']['type']!= "image/pjpeg") {....


Jak mogę przekonstrulowac ten warunek aby brzmiał: "Jeżeli typ pliku nie jest równy image/jpg z wykluczeniem ""(puste pole) to kontynuluj ..." Lub co wogole moge zrobic aby wykluczyc z powyzszego warunku branie pod uwage "" czyli pustego atrybutu.

Przepraszam jezeli nie wyrazam sie jasno. Pierwszy raz pisze na forum w takiej sprawie wstydnis.gif
Pozdrawiam :-)
Pilsener
Musisz myśleć inaczej - po co masz sprawdać MIME, skoro plik nie został przesłany? Robisz walidację etapami:

1. Jeśli plik został przesłany - to do 2
2. Jeśli plik ma poprawne rozszerzenie i rozmiar - to do 3
3. Jeśli plik ma poprawny typ MIME - to do 4
4. Jeśli plik udało się zapisać w folderze tymczasowym - to do 5
5 . I tak dalej

Często początkujący mnożą ify-elsify i się gubią - ja np. w ogóle nie używam else-if, gdyż kłóci się to z moją koncepcją przejrzystości kodu. Na pewno będziesz chciał generować jakieś errory typu "plik za duży" itp. - po prostu wrzucaj je do tablicy a przed wykonaniem następnych punktów sprawdzaj, czy tablica błędów jest pusta.
osl
moje 3 grosze do powyższego,
pamiętaj, żeby nie ograniczać się tylko do image/pjpeg - kiedyś straciłem sporo czasu, żeby zauważyć że ten sam obrazek wysyłany przez IE i FF miał dwa różne typy mime - image/pjpeg w IE i image/jpeg w FF...
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.