Fejl i upload af billede

Tags:    php

Halløj derude :)

Jeg sidder med et næsten fungerende event system med kalender og hele molevitten. Men jeg har alligevel nogle problemer med det - nogle større end andre.

Et af problemerne ligger i min add_event1.php fil, hvor jeg tilføjer events. Her er der lavet et billede upload til selve eventen, hvor man tilføjer et billede fra sin lokale maskine og uploader det til en mappe på serveren.

Jeg har selvfølgelig været herinde for at se om der var lign problemer og fandt også relaterende problemer, men kunne ikke gennemskue mit desværre.

Selve upload koden i add_event1.php:
Fold kodeboks ind/udKode 


Hele add_event1.php filen:
Fold kodeboks ind/udKode 


Alt andet end billede bliver postet i min event og hvis jeg kigger i den folder på min ftp server, hvor billedet burde være uploaded til, så er den tom.

Håber ikke jeg har skrevet det for indviklet, men måtte forklare det som det er.



10 svar postet i denne tråd vises herunder
3 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Du har selvfølgelig tjekket at der er skrive rettigheder til den pågældende folder?

Du laver nogle mærkelige tests, så du burde nok lige finde ud af hvad det er du vil have koden til. F.eks har du et kodestykke der udføre flg. handling.

Hvis der ikke er fejl (fil tilladt), da flyt fil fra start til slut, ellers kopier fil fra start til slut. Det gi'r jo ingen mening.



Indlæg senest redigeret d. 06.05.2008 09:05 af Bruger #10216
Prøv med følgende upload-kode...

Fold kodeboks ind/udKode 


Jeg har ikke testet det, men sådan lige fra hoften burde det virke i PHP 5.1+ (måske)...

Der var en række ting i din kode som jeg vil påpege:

- $_FILES['billede'] er ikke det samme som $_FILES[billede], men det giver samme resultat. Nøglen 'billede' er en streng, og bør defineres som sådan i din kode. På din måde skal PHP selv lave følgende: E_NOTICE error, 2 Hash-lookups, 1 strtolower og lave en streng on the fly. Det tager ca 6-7 gange så lang tid for PHP som et normalt hash lookup med strengen 'billede'.

- Du har for mange underlige flag :) Du har fejl og du har accept. Desuden lægger du elementer i fejl som et array uden at definere det først - det er dårlig karma :)

- Du laver noget spass med din test af størrelse. Størrelse i byte / 512 giver ikke så meget mening, og derefter skal det være under 511?? :) 500 Kb = 512000 byte. 512000 / 512 = 1000, altså vil du kun acceptere filer på 255 Kb


Update...


Hvis der ikke er fejl (fil tilladt), da flyt fil fra start til slut, ellers kopier fil fra start til slut. Det gi'r jo ingen mening.


Jeg kunne ikke finde Gnu' fejl, og tror måske at det skyles en misforståelse. Gnu har måske overset din test for om move_uploaded_file() findes... Ellers har jeg bare overset noget :)




Indlæg senest redigeret d. 06.05.2008 10:06 af Bruger #4683


Hej JT,

Gnu mener, at hvis der ikke er fejl flyttes filen. Hvis der er fejl forsøges filen kopieret.



Hej Kasper,

HVIS der er rettigheder til at blive skrevet i den mappe som du mener filen bliver lagt i, dobbeltcheck lige stien hvor du ønsker filen lagt er korrekt.

Med venlig hilsen
Ieet






Hej JT,

Gnu mener, at hvis der ikke er fejl flyttes filen. Hvis der er fejl forsøges filen kopieret.


Ja, det var også sådan jeg forstod det - kan bare ikke se det :)

Fold kodeboks ind/udKode 


... hvis ikke move_uploaded_file() findes skal copy() bruges i stedet...

Kan godt være at jeg tæller forkert, med der er 8 x { og kun 6 x } i den oprindelige kode



Indlæg senest redigeret d. 06.05.2008 10:50 af Bruger #4683
Ah... det er fordi man ikke kan læse hvad der sker...
Ja, så'n går det jo med roddet kode.


Med andre ord: Ryd op



Indlæg senest redigeret d. 06.05.2008 11:06 af Bruger #10216
Der er selvfølgelig skrive rettigheder til folderen. Jeg er nød til at sige at alle de fejl I snakker om, ikke er inden for min forstand.

Den add_event1.php jeg har vist jeg er en smule redigeret, så her får i den oprindelige add_event.php:
Fold kodeboks ind/udKode 






Hej Kasper,

Prøv at lave en echo på $fra og $til.
Kunne forestille mig at du så kan se fejlen.

Med venlig hilsen
Ieet





Der er selvfølgelig skrive rettigheder til folderen. Jeg er nød til at sige at alle de fejl I snakker om, ikke er inden for min forstand.

Den add_event1.php jeg har vist jeg er en smule redigeret, så her får i den oprindelige add_event.php:



Jeg tror at der er mange ting galt med din kode. Det er lidt noget rod.

Din if-sætning : if(session_is_registered("user") AND ("pass"))
...er pænt sort. Hvis user findes is session og strengen "pass" (altid true). Det er det samme som if(session_is_registered("user") AND true) hvilket ikke giver den store mening. prøv med session_is_registered("pass") (hvis du absolut vil bruge en funktion til det)

Det er ikke der fejlen ligger, men det er een fejl mindre.

Derudover vil testen if (!$_POST['key']) {} aldrig rigtig kunne bruges til noget. De bliver lavet af formen og du er interesseret i om de er tomme eller ej: if (!empty($_POST['key'])) {}



Det kode jeg postede tidligere burde virke til at lægge billedet op. Du kan selv flette det ind i din kode.





Indlæg senest redigeret d. 06.05.2008 13:25 af Bruger #4683
Så fandt jeg fejlen.. Ved godt der er flere, men nu har jeg fået rettet fejlen der gjorde at den ikke uploaded.

Jeg må sige mange tak til jer alle sammen som har kommet med mange gode inputs, lækkert at se nogen der har forstand på sagen:)

Jeg lyttede til hvad Gnu sagde og rettede

if(!$fejl) til if(!$fejl =="") og nu virker skidtet..
Jeg vil mene det er Gnu der skal ha' de point, hvis det er i orden med dig JT, som jo også har stået for en stor del af det? :)

Igen endnu engang mange tak for hjælpen også til dig JT, det er nok ikke sidste gang jeg kommer herind efter hjælp!:)



Så fandt jeg fejlen.. Ved godt der er flere, men nu har jeg fået rettet fejlen der gjorde at den ikke uploaded.

Jeg må sige mange tak til jer alle sammen som har kommet med mange gode inputs, lækkert at se nogen der har forstand på sagen:)

Jeg lyttede til hvad Gnu sagde og rettede

if(!$fejl) til if(!$fejl =="") og nu virker skidtet..
Jeg vil mene det er Gnu der skal ha' de point, hvis det er i orden med dig JT, som jo også har stået for en stor del af det? :)

Igen endnu engang mange tak for hjælpen også til dig JT, det er nok ikke sidste gang jeg kommer herind efter hjælp!:)


Det synes jeg er helt i orden :) godt at du fandt fejlen...



t