Formular mit PHP
Andreas
- php
Hallo,
folgender gekürzter Formular-Code:
print "<FORM ENCTYPE="multipart/form-data" ACTION="post.php" METHOD="POST" NAME="posting">\n";
print "Datei anhängen: <input type="file" name="datei" size="40"\n>";
print "<INPUT TYPE="SUBMIT" CLASS="ibut" name="action" VALUE="Absenden">\n";
print "</FORM>\n";
...
if ( $HTTP_POST_VARS['action'] == "Absenden" ){
$post = $SQL->putquery("INSERT INTO $TBLthread (name,date,lastpost,subject,message,logip,type
) VALUES ('$username','$tstamp','$tstamp','$subject','$message','$logip','$form_thtype')");
$filename = $_FILES['datei']['name'];
$filesize = $_FILES['datei']['size'];
$mimetype = $_FILES['datei']['type'];
if ( isset($filename) ){
if ( $filesize<300000 ){
copy("$datei", "uploads/$datei_name");
$update = $SQL->putquery("UPDATE $TBLthread SET uploadname = "$datei_name", uploadsize = '$filesize', mimetype = '$mimetype' WHERE date = '$tstamp'");
}
else{
$filesizeErr = "Dateigröße von 300000 Byte wurde überschritten<br>Datei wurde nicht geladen";
}
}
}
Der gleiche Code, nur für eine andere MySQL-Tabelle funktioniert, doch dieser nicht. Es liegt wohl an dem ENCTYPE="multipart/form-data", wenn ich das rausnehme, gehts, nur der Fileupload geht dann nicht mehr.
Was bewirkt eigenlich ENCTYPE="multipart/form-data, und warum funktioniert es bei mir nicht?
Gruß Andreas
Hi!
print "<FORM ENCTYPE="multipart/form-data" ACTION="post.php" METHOD="POST" NAME="posting">\n";
print "Datei anhängen: <input type="file" name="datei" size="40"\n>";
print "<INPUT TYPE="SUBMIT" CLASS="ibut" name="action" VALUE="Absenden">\n";
print "</FORM>\n";
Sowas sollte man nicht machen, lieber:
<?php
// php-code
?>
<FORM ENCTYPE="multipart/form-data" ACTION="post.php" METHOD="POST" NAME="posting">
...
<?php
// mehr PHP-Code
?>
afaik ist das so auch erheblich schneller, wobei das hier irrelevant sein dürfte.
if ( $HTTP_POST_VARS['action'] == "Absenden" ){
$post = $SQL->putquery("INSERT INTO $TBLthread (name,date,lastpost,subject,message,logip,type
) VALUES ('$username','$tstamp','$tstamp','$subject','$message','$logip','$form_thtype')");$filename = $_FILES['datei']['name'];
$filesize = $_FILES['datei']['size'];
$mimetype = $_FILES['datei']['type'];
if ( isset($filename) ){
das bringt nichts weil Du $filename immer setzt, auch wenn es leer ist.
if ( $filesize<300000 ){
copy("$datei", "uploads/$datei_name");
das solltest Du lassen, hierfür gibt es die Funktion move_uploaded_file(), Du solltest Dir mal:
http://www.dclp-faq.de/q/q-formular-upload-php4.html und http://www.php.net/manual/de/features.file-upload.php ansehen.
Der gleiche Code, nur für eine andere MySQL-Tabelle funktioniert, doch dieser nicht.
Wie unterscheiden sich die Tabellen? Ist das auf demselben Server? Funktioniert der connect zur DB? funktioniert die DB - Abfrage?
Und was genau heißt "funktioniert nicht"? Wird die Datei hochgeladen? Wird irgendwas in der DB verändett? Weißt Du genau an welcher Code ausgeführt wird, also hast Du geprüft welche If-Abfragen gewählt werden? Weißt Du ob die Datei hochgeladen wurde und nur nicht kopiert wurde...
Es liegt wohl an dem ENCTYPE="multipart/form-data", wenn ich das rausnehme, gehts,
was geht was sonst nicht geht?
nur der Fileupload geht dann nicht mehr.
Genau, weil der eben dies erfordert.
Was bewirkt eigenlich ENCTYPE="multipart/form-data, und warum funktioniert es bei mir nicht?
Siehe Links oben.
Grüße
Andreas
Hallo,
danke für die antwort.
Werde erstmal die Links studieren.
Gruß Andreas