Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Walidacja typów MIME
Booyaches
post
Post #1





Grupa: Zarejestrowani
Postów: 18
Pomógł: 0
Dołączył: 17.04.2009
Skąd: Kopenhaga

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


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 :-)

Ten post edytował Booyaches 17.04.2009, 11:17:04
Go to the top of the page
+Quote Post
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


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.
Go to the top of the page
+Quote Post
osl
post
Post #3





Grupa: Zarejestrowani
Postów: 260
Pomógł: 41
Dołączył: 6.04.2009
Skąd: Gdańsk/okolice

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


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...
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 Aktualny czas: 19.08.2025 - 13:44