![]() |
![]() ![]() |
![]() |
![]()
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 ![]() Pozdrawiam :-) Ten post edytował Booyaches 17.04.2009, 11:17:04 |
|
|
![]()
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. |
|
|
![]()
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... |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 13:44 |