Problem mit File- Upload
Daniel
- php
Hi,
ich habe ein Big- Problem mit meinem File Upload. Um einen File- Upload mit einem Formular durchzuführen muss man das Form folgendermassen definieren:
<form name=theform action=start.php?page=makeLANuser method="post" enctype="multipart/form-data">
Picture<br>
<input type="file" name="pic" size="20" accept="image/jpeg">
<INPUT TYPE="submit" NAME="submit" VALUE="Eintragen">
</form>
Auf der nächsten seite mache ich dann folgende Abfrage, ob das Forumlar gesendet wurde:
if ($submit){
machwas
}
Grundsätzlich funktioniert das auf 2 Webservern auf welchen ich die Page Getestet hatte. Auf dem dritten funktionieren jedoch alle Formulare welche enctype="multipart/form-data" haben nicht mehr. Die Variable $submit ist auf der nächsten Seite leer. Nehme ich enctype="multipart/form-data" weg, funktioniert das Formular wieder, ich kann jedoch keine File- Uploads machen.
Ich bin sehr dankbar für euere Hilfe
D.Dilitz
PS: Der betroffene Webserver (Linux) wurde erst vor 2 Tagen mit den neuesten Versionen von Apache und PHP aufgesetzt.
Hallo.
PS: Der betroffene Webserver (Linux) wurde erst vor 2 Tagen mit den neuesten Versionen von Apache und PHP aufgesetzt.
Genau das dürfte das Problem sein: die neuere PHP-Version. Auf Formular Daten sollte nur über $_GET['feldname'] bzw. $_POST['feldname'] zugegriffen werden. In Deinem Fall also ein $_POST['submit'].
Etwas verwundert bin ich über die Tatsachen des Unterschiedlichen verhaltens durch enctype. Ebenso, dass in action eine Adresse samt Parametern funktioniert (tut sie das denn wirklich?). Normalerweise werden die Parameter dann über hidden Fields mitgeschickt.
Grüße aus Würzburg
Julian
Vielen Dank für eure Hilfe.
Nach überprüfung der PHP- Version hat ergeben, dass mein Kollege doch nicht die neuste Version installiert hat. Offensichtlich war ich also ein Opfer dieses Bugs, denn nach Installation der neusten Version funktionierte alles. Auf jeden Fall werde ich in Zukunft mit $_POST['feldname'] auf die Felder zugreiffen, da dies offensichtlich der richtige Weg ist.
PS: die Adresse mit Parameter funktioniert. Ich glaube dass ist auch serverabhängig. Auf anderen Servern hat es auch schon nicht funkioniert. Ich werde das wohl in Zukunft unterlassen, da ich mir so nur unnötige Probleme schaffe.
Also. Nochmals Danke euch Beiden
Greez aus der Schweiz
Daniel. D
Hi!
Auf der nächsten seite mache ich dann folgende Abfrage, ob das Forumlar gesendet wurde:
if ($submit){
machwas
}
Wie Julian schon sagte, guckin phpinfo() ob register_globals off ist, wenn dem so ist dann funkitoniert nur $_POST["submit"], ich würde mir mal auf der Seite
print_r($_POST);
print_r($_FILES);
ausgeben lassen. Dann weißt Du was ankommt.
Grundsätzlich funktioniert das auf 2 Webservern auf welchen ich die Page Getestet hatte. Auf dem dritten funktionieren jedoch alle Formulare welche enctype="multipart/form-data" haben nicht mehr. Die Variable $submit ist auf der nächsten Seite leer. Nehme ich enctype="multipart/form-data" weg, funktioniert das Formular wieder, ich kann jedoch keine File- Uploads machen.
Hört sich ganz wie ein bug in der Vergangenheit an:
http://bugs.php.net/bug.php?id=18641
Welche PHP-Version verwendet ihr?
Auf alle Fälle mit 4.2.2 trat das Problem so noch auf, soll aber behoben sein, entweder schon in 4.2.3, oder sonst erst im CVS.
PS: Der betroffene Webserver (Linux) wurde erst vor 2 Tagen mit den neuesten Versionen von Apache und PHP aufgesetzt.
guck mal im PHP Verzeichnis ob der Fehler in news.txt schon als behoben genannt wird!
Grüße
Andreas