Toon posts:

[php] File upload vraag

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey. Ik ben bezig met een script waarmee je plaatjes naar de server kan uploaden. Nu weet ik wel hoe ik dat kan doen, maar ik zit met een ander probleem. Ik wil dat de info die ingevuld is(wat gegevens + plaatje) eerst nog een keer wordt weergegeven(gegevens en de bestandsnaam van het plaatje) met daaronder een knop submit en back. Een extra validatie dus voor de gebruiker of hij de gegevens wel goed heeft ingevuld. Nu is het probleem dat het plaatje na de eerste submit in de temp dir wordt gezet, en na de 2de validatie weg is. Ik heb al verschillende dingen geprobeerd, zoals de filenaam doorgeven met hidden's. Maar goed, dat werkt ook niet. Als ik hem meteen kopieer en en iemand sluit tijdens de validatie zijn browser af zou je in de korts mogelijke tijd bergen plaatjes hebben op je server waar je dus helemaal niks aan hebt. Ook dit is dus geen oplossing.

Ik kom er niet meer uit. Zit al uren te pruten maar het wil gewoon niet lukken. Iemand die me kan vertellen hoe ik dit het beste kan oplossen? Thanx.

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15:13
Waarom wil je dat de gebruiker de gegevens valideert? Dat vind ik persoonlijk altijd enorm irritant - ik weet toch zelf wel wat ik intype? En zo niet, dan is dat nog altijd mijn probleem.

Maar goed, als je inderdaad die validatie wilt, zou je kunnen overwegen om het bestand de tweede keer (dus bij het valideren van de gegevens) te laten uploaden. Dan kan je dus geen gegevens over het bestand weergeven. Om veiligheidsredenen kan je met HTML (of JavaScript of iets anders, for that matter) geen locatie van een bestand opgeven, hidden of visible. (Dat was ooit wel een mooie 'feature' in IE, trouwens :)).

In verband met de veiligheid kun je beter geen lokaal pad in een hidden form field stoppen en er op vertrouwen dat de client dezelfde waarde terugstuurt (en niet stiekum /etc/master.passwd of password.php.inc ofzo). Wel zou je van een session gebruik kunnen maken. Als je dan bovendien je bestand in een tijdelijke directory (/tmp/) stopt, is het niet zo'n probleem dat er zinloze bestanden geupload worden, aangezien het de verantwoordelijkheid van het operating system is dat die directory zo af en toe geleegd wordt. Zorg er trouwens wel voor dat je unieke bestandsnamen genereert, met behulp van tempnam, anders overschrijf je misschien bestaande bestanden.

Als het mogelijk is om een taak te schedulen met 'at' zou je ook nog kunnen regelen dat het tijdelijke bestand automatisch gewist wordt na een aantal minuten.

edit:
PHP zal uploaded files automatisch wissen als een request afgelopen is, dus je zal sowieso het bestand moeten kopieren, als je 'm wil behouden.

Verwijderd

Topicstarter
Bedankt voor je hulp, maar ik snap het niet helemaal. Je hebt het erover dat ik het bestand het beste de 2de keer pas kan uploaden. Maar dat is juist hetgene wat ik niet werkend krijg, want ik moet hem direct naar een ander plekje kopieren. En op dat plekje wordt hij niet verwijderd. :) Wat betreft beveiliging maakt het allemaal niet zo heel veel uit wat ik doe, omdat alleen de mensen die de site onderhouden het gebruiken. De enigste oplossing die ik nu weet voor mijn probleem is het volgende: tijdens eerste submit bestand kopieren naar zelfde tmp map maar onder de naam die het moet zijn. Tijdens 2de validatie dat bestand kopieren naar de eigenlijke map. En als er niet op submit wordt gedrukt blijft hij in tmp staan, maar wordt gewoon na een tijdje gedelete. Het is misschien een oplossing, maar wel een omslachtige omdat de eerste keer het bestand geupload en gekopieerd moet worden en Dat kost allemaal tijd, en misschien wel nutteloze :)

De reden dat ik het wil laten valideren is dat het mijn vader en misschien een paar collega's zijn die het moeten gebruiken. En je weet hoe dat met oudjes gaat.. ;)

Misschien dat ik de validatie er wel gewoon uit haal, maar ik had het mooier gevonden als het erin was geweest.

Verwijderd

Probleem analyse:

1) Wat wil je?
2) Hoe moet dit?
3) Waarom werkt dit niet?
4) Hoe moet het dan wel?
5) Schrijf de pseudo code
6) Bouw je php-code
7) Testen
8) Zie evtueel 3, anders bouw je de layout eromheen.

Gestrutureerd programeren helpt meestal! Het reduceerd de kans op fouten, en het helpt je je probleem te begrijpen en op te lossen.

Verwijderd

Topicstarter
Op maandag 11 maart 2002 11:30 schreef daniel_hoenderdos het volgende:
Probleem analyse:

1) Wat wil je?
2) Hoe moet dit?
3) Waarom werkt dit niet?
4) Hoe moet het dan wel?
5) Schrijf de pseudo code
6) Bouw je php-code
7) Testen
8) Zie evtueel 3, anders bouw je de layout eromheen.

Gestrutureerd programeren helpt meestal! Het reduceerd de kans op fouten, en het helpt je je probleem te begrijpen en op te lossen.
Uhm.. lol.. Ja, en :? Ik heb er al over nagedacht(stap 1,2,3), maar ik kom er niet uit. Vandaar dat ik hier op tweakers.net post. Het is niet zo dat ik niet weet hoe ik het wil, maar de kennis ontbreekt gewoon om het te maken. En aangezien ik nergens anders de mogelijkheid vond om die kennis te vergaren ben ik bij stapje 4 blijven hangen. Ik hoop dus dat iemand me daarmee kan helpen.
Toch bedankt voor het posten. :)

Verwijderd

Topicstarter
Op maandag 11 maart 2002 15:55 schreef daniel_hoenderdos het volgende:
In dat geval RTFM.
http://www.php.net/upload
http://www.php.net/ftp
http://www.php.net/filesystem
Suc6
Die kennis bezit ik al. Alleen de kennis om dit probleem aan te pakken heb ik niet. Het is dus niet dat ik niet weet hoe je een file moet laten uploaden, maar hoe ik het probleem moet aanpakken dat hij pas de 2de keer naar de server moet kopieren. En zoiets staat niet in een php manual(ook al had ik wel al gekeken of het misschien bij comments stond)
Pagina: 1