kostenloser Webspace werbefrei: lima-city


Problem mit Code für Datei-Upload

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    web-dienstleistungen

    web-dienstleistungen hat kostenlosen Webspace.

    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&szlig;.</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.
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. desaster-productions

    desaster-productions hat kostenlosen Webspace.

    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 );
  5. 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 :wink:
  6. Autor dieses Themas

    web-dienstleistungen

    web-dienstleistungen hat kostenlosen Webspace.

    Upps, danke!
    enctype="multipart/form-data" war die Lösung...

    Sry dass ich es so ungenau geschildert habe

    MfG
  7. vampiresilence

    Kostenloser Webspace von vampiresilence

    vampiresilence hat kostenlosen Webspace.

    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
  8. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!