peterha
Goto Top

ERROR bei PHP File-Upload-Skript

Hallo Freunde,

ich habe momentan diese Skript zum PHP Upload. Wenn ich eine z.B. 4090-1.pdf nehme dann kommt folgende Fehlermeldung:

Array ( [datei] => Array ( [name] => 4090-1.pdf [type] => application/pdf [tmp_name] => /tmp/phpTq5HUB [error] => 0 [size] => 546063 ) )

Was ist da falsch??? Wohl noch ganze wichtig der hinweis: die php datei liegt auf einem 1and1 server. der upload soll aber auf meinen heimserver erfolgen. der ist mom so eingestellt dass eine website drauf gehostet ist mit größeren dateien. (das download php funktioniert schon dank der admins hier face-smile

Hier nun der upload code: (den ich von dieser Seite habe: http://www.rrze.uni-erlangen.de/dienste/web/php/artikel/datei-uploads.s ..)


<?php
// Session starten
session_start();
// Token generieren
$str_token = md5(uniqid(time()));
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">  
<head>
    <title>Upload</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />  
</head>
<body>
<?php
// Formular-HTML-Ausgabe oder Weiterverarbeitung
if( !isset($_POST['upload']) OR empty($_POST['upload']) ) {  
    echo <<<HTML
<form enctype="multipart/form-data" action="upload.php" method="post">  
    <fieldset>
        <legend>Dateien transferieren</legend>
    <p>
        <label for="datei_id">Datei auswählen:</label>  
        <input name="datei" id="datei_id" type="file" />  
        <input type="hidden" name="token" value="${str_token}" />  
    </p>
    <!-- Upload meherer Dateien
    <p>
        <label for="datei_id1">Datei auswählen:</label>  
        <input name="idxarr_datei" id="datei_id1" type="file" />  
    </p>
    <p>
        <label for="datei_id2">Datei auswählen:</label>  
        <input name="idxarr_datei" id="datei_id2" type="file" />  
    </p>
    <p>
        <label for="datei_id3">Datei auswählen:</label>  
        <input name="idxarr_datei" id="datei_id3" type="file" />  
    </p>
    -->
    <p>
        <input type="submit" name="upload" value="Datei(en) hochladen!" />  
    </p>
    </fieldset>
HTML;
} else {
    // Token extrahieren
    $str_post_token = $_POST['token'];  
    // Wenn Token als Session Variable existiert
    // wurde das Formular bereits versandt
    if ( isset($_SESSION['token'][$str_post_token]) ) {  
        echo "Sie haben das Formular bereits versandt!";  
        exit;
    } else {
    // setzen des Tokens als Session-Variable
        $_SESSION['token'][$str_post_token] = true;  
    }

    // Ueberpruefung der Dateiendung
    // Dateiendung ermitteln
    $str_file_ext = substr( strtolower( strrchr($_FILES['datei']['name'], '.') ), 1 );  
    // Array der zulaessigen Endungen
    $idxarr_allowed_ext = array('txt', 'exe', 'pdf', 'odt', 'gz');  
    // Ueberpruefung der Dateiendung
    if ( empty($str_file_ext) OR !in_array($str_file_ext, $idxarr_allowed_ext) ) {
        echo "Unzulaessige Dateiendung!";  
        exit;
    }

    // Ueberpruefung der Dateigroesse
    // maximal erlaube Dateigroesse in Bytes
    $int_max_filesize = 2000000;
    // eigentliche Ueberpruefung
    if ($_FILES['datei']['size'] > $int_max_filesize) {  
        echo "Datei ist zu gross - Abbruch!";  
        exit;
    }


    // Zusammensetzen des vollen Pfades zum Ziel
    $str_ziel = 'http://ftpuser.mine.nu/download/' .  
                $_FILES['datei']['name'];  
    // eingentlicher Transfer
    move_uploaded_file($_FILES['datei']['tmp_name'], $str_ziel);  
    // Zugriffsrechte anpassen: Vollzugriff fuer den Webmaster,
    // lesender Zugriff fuer die Gruppe und alle anderen, inkl. dem Webserver
    chmod($str_ziel, 0644);

    // Ausgabe aller Infos
    print_r($_FILES);
}
?>
</form>
</body>
</html>

Content-Key: 103588

Url: https://administrator.de/contentid/103588

Printed on: April 25, 2024 at 07:04 o'clock

Member: dog
dog Dec 08, 2008 at 21:01:36 (UTC)
Goto Top
Mal so eine Frage:
Wie stellst du dir vor, dass PHP eine Datei per HTTP ohne jegliche Benutzerkontrolle auf einen anderen Server kopieren kann?

Das solltest du anders angehen:

Die Datei um den Upload zu verarbeiten sollte direkt auf deinem Heimserver liegen und das Upload-Formular sollte nur auf die URL verweisen.

Grüße

Max
Member: Arano
Arano Dec 09, 2008 at 15:27:07 (UTC)
Goto Top
*dog zustmm*

Außerdem ist das keine Fehlermeldung, sondern Bestandteil des Scriptes !
Nach verschieben der Datei (auf dem Server vom temporärem Speicherplatz zum gewünschtem) (Zeile:87) und die Dateirechte gesetzt wurden (Zeile:90) werden die Infos (die mit denen das Script arbeitet) ausgegeben (Zeile:93).
Es sollte doch zumindest aufgefallen seien, das die Datei hochgeladen wurde und existiert !? (sollte sie jedenfalls)

Achje... man sollte die Seite schon mal gelesen haben !