Problem mit Code für Datei-Upload
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
aufruf
auge
basteln
code
datei
desaster
endung
fehler
fehlerhaft aussehende zeile
folgenden code
form
geschafft danke
helfen
kleinbuchstaben
problem
punkt
richtig fehlermeldung
tip
weben
ziel
-
Hi Leute,
ich habe mir von jemandem den folgenden Code zusammen basteln lassen:
<?php $str_token = time(); $post_token = $_POST['token']; if(empty($post_token)) { ?> <form action="code.php" method="post" /> <input type="file" name="datei" /> <input type="hidden" name="token" value="<?php echo $str_token; ?>" /> <input type="submit" value="hochladen" /> </form> <?php } else { echo $_FILES['datei']['name']; if(!empty($_FILES['datei']['name'])) { $file_end = substr( strtolower( strrchr($_FILES['datei']['name'], '.') ), 1 ); $endungen = array('txt'); if (!in_array($file_end, $endungen) ) { echo '<span style="color: red; margin-top: -40px; margin-left: 20px;">Fehler. .'.$file_end.' ist hier leider nicht erlaubt.</span>'; exit; } $int_max_filesize = 2000000; //max Dateigroe�e if ($_FILES['datei']['size'] > $int_max_filesize) { echo '<span style="color: red; margin-top: -40px; margin-left: 20px;">Fehler. Datei ist zu groß.</span>'; exit; } $ziel = 'upload/'.$post_token.'_'.$_FILES['datei']['name']; move_uploaded_file($_FILES['datei']['tmp_name'], $ziel); chmod($ziel, 0644); $datei_name = "".$post_token."_".$_FILES['datei']['name'].""; echo $datei_name; } } ?>
Er soll dafür da sein, dass man nur bestimmte Dateitypen hochladen kann. Da ich mich aber noch nicht wirklich mit PHP auskenne weiß ich nicht was falsch daran ist. Zumindest klappt es nicht richtig...
Kann wer helfen?
MfG
P.S.: Dass selbst wenn das Problem behoben ist nur *.txt Dateien zugelassen sind weiß ich. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
web-dienstleistungen schrieb:
Er soll dafür da sein, dass man nur bestimmte Dateitypen hochladen kann. Da ich mich aber noch nicht wirklich mit PHP auskenne weiß ich nicht was falsch daran ist. Zumindest klappt es nicht richtig...
Kann wer helfen?
MfG
P.S.: Dass selbst wenn das Problem behoben ist nur *.txt Dateien zugelassen sind weiß ich.
was klappt denn nicht richtig?
Fehlermeldung (wenn ja welche), es wird nicht gespeichert,es werden auch andere dateien gespeichert...
BBitte etwas genauer -
ohne genauer hinzuschauen (ohne genaue fehlerbeschreibung mach ich das ned) fällt mir diese fehlerhaft aussehende zeile ins auge:
$file_end = substr( strtolower( strrchr($_FILES['datei']['name'], '.') ), 1 );
-
desaster-productions schrieb:
ohne genauer hinzuschauen (ohne genaue fehlerbeschreibung mach ich das ned) fällt mir diese fehlerhaft aussehende zeile ins auge:
$file_end = substr( strtolower( strrchr($_FILES['datei']['name'], '.') ), 1 );
Wenn du den Fehler nicht weiter benennst, hilft das nur keinem weiter, denn ganz ehrlich sehe ich dort absolut nichts Falsches dran. Es wird nach dem letzten Vorkommen eines Punktes in einem String mit nur Kleinbuchstaben gesucht und alles danach der variable $file_end zugewiesen. Sollte so gehen.
Was mir auffällt ist hingegen der fehlende enctype im Formular. Ohne enctype="multipart/form-data" lassen sich keine Dateien hochladen, da kann das Script sonst noch so gut sein -
Upps, danke!
enctype="multipart/form-data" war die Lösung...
Sry dass ich es so ungenau geschildert habe
MfG -
Den Code an sich finde ich ganz interessant. An welche Stelle müsste das mit dem Enctype denn ? Und wie berechne ich den MD5 Hash der hochgeladenen Datei ?
Edit: Ok, mit dem Enctype hab ichs nun. Bleibt nur noch der MD5 Hash.
Achso und noch ein Tipp: Entferne die "action=code.php" aus der Form, das führt nur zu Problemen, falls du die Datei mal umbenennst. Wenn da nichts steht, nimmt PHP sowieso immer die Datei, aus der der Aufruf kam.
Edit2: Gut, das mit dem MD5-Code wäre nun auch geschafft. Danke, trotzdem. ;)
Liebe Grüße
- VampireSilence
Beitrag zuletzt geändert: 4.3.2009 3:30:16 von vampiresilence -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage