Dateiupload Datei PHP Tutorial
Einfacher DateiuploadTutorials » PHP/MySQL Tutorials » Einfacher Dateiupload
Einfacher Dateiupload - Tutorial
Es hatte sich jemand die Erlaeuterung eines Dateiuploads gewuenscht, hier also nun ein kleines Tutorial dazu ...Wobei Tutorial nicht die richtige Bezeichnung ist, da ich diesmal wirklich nur den Code reinstelle.
Allerdings denke ich, sollte das Skript nicht allzu schwer nachzuvollziehen sein, da es recht gut auskommentiert ist und Kommentare sind ja bekanntlich die halbe Miete ;)
Beispiel ansehen
<?php // Grafixx Dateiupload session_start(); // startet die Session //---------------------- Logindaten --------------------------------- // $grafixx_name = "USERNAME"; // Loginname angeben $grafixx_pass = "PASSWORT"; // Loginpasswort angeben //------------------------------------------------------------------ // //--------------------- Upload-Einstellungen --------------------------------- // $maxsize = "1048576"; // Maximale Uploadgroesse (1 MB) $uploaddir = "images/"; // Upload Ordner $allowed_files = array(".jpg", ".gif"); // Erlaubte Dateien // --------------------------------------------------------------------------- // ob_start(); // startet den Ausgabepuffer ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> <head> <title>Grafixx - Dateiupload || The easy way to upload files </title> <meta http-equiv="Content-Language" content="de" /> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <meta http-equiv="imagetoolbar" content="no" /> </head> <body> <div id="ram"> <h1 id="header">Grafixx - Dateiupload <small>The easy way to upload files ...</small> </h1> <br /> <?php $pfad = $_SERVER['PHP_SELF']; // generiert aktueller Pfad zur Datei // -------------------------------- Logout -------------------------------------- if (isset($_GET['action']) AND ($_GET['action'] == 'logout')){ session_unset(); session_destroy(); //Session zerstoeren header("Location: $pfad"); // Weiterleitung } // ------------------------------------ Login --------------------------------------- if (!isset($_SESSION['login'])){ if(isset($_POST['admin_login'])) { //sofern Login gedrueckt if(empty($_POST['admin_name']) OR empty($_POST['admin_pass'])) { // Pruefen ob alle Felder ausgefuellt $message .= 'Bitte geben Sie ihren Usernamen ein ... <br />'; $error = "1"; // Fehler } // Pruefen ob Zugangsdaten korrekt if(($_POST['admin_name'] != $grafixx_name) OR ($_POST['admin_pass'] != $grafixx_pass)){ $message .= 'Zugriff verweigert ... <br />'; $error = "1"; // Fehler } if($error != "1"){ // Wenn kein Fehler // session handle----------------------------- $_SESSION['login'] = $_SERVER['REMOTE_ADDR']; header("Location: $pfad"); // Weiterleitung => Eingeloggt } if($error == "1"){ // Fehlermeldung ausgeben echo "<div class=\"error\"><h1>Error ...</h1>\n <p>$message</p></div>"; } } // LoginFormular ausgeben ?> <form action="" method="post"> <fieldset style="width: 300px"> <legend>Login</legend> <label for="user">Username: </label> <input type="text" name="admin_name" style="width: 250px" /> <label for="passwort">Passwort: </label> <input type="password" name="admin_pass" style="width: 250px" /> <br /><br /> <input type="submit" value=" Login " name="admin_login" /> </fieldset> </form> <?php } //------------------------------------- Login ENDE ----------------- //------------------- Wenn eingeloggt ------------------------------------------------ if(isset($_SESSION['login'])){ // Funktion um die Maximale Dateigroesse uebersichtlich in KB/MB/GM darzustellen function grafixx_size($datei_size, $nachkommastellen = 0) { $d_size = $datei_size; if($d_size >= 1073741824){ // wenn groeser als 1073741824 Byte - GB ausgeben return round($d_size/(1073741824), $nachkommastellen)." GB"; } if($d_size >= 1048576){ // wenn groesser als 1048576 Byte - MG ausgeben return round($d_size/(1048576), $nachkommastellen)." MB"; } if($d_size >= 1024){ // wenn groesser als 1024 Byte - KB ausgeben return round($d_size/(1024), $nachkommastellen)." KB"; } return $d_size." Byte"; } if(isset($_POST['submit'])){ // Wenn Submit gedrueckt wurde // Pruefen ob input'image' nicht leer ist if(empty($_FILES['file']['tmp_name'])) { $message.= 'Bitte Danke eine Datei angeben ... <br />'; $error = "1"; // Fehler }else{ if(isset($_FILES['file']['tmp_name'])){ $tmp_name = $_FILES['file']['tmp_name']; } // Originaler Dateiname if(isset($_FILES['file']['name'])){ $name = $_FILES['file']['name']; } // Originalname if(isset($_FILES['file']['size'])){ $size = $_FILES['file']['size']; } // Groee der Datei if(isset($_FILES['file']['type'])){ $type = $_FILES['file']['type']; } // MIME Type der Datei echo $_FILES['file']['name']; $datei_typ = strrchr($_FILES['file']['name'], "."); // Dateieindung herausfiltern // Pruefen ob die Datei erlaubt ist if(in_array($datei_typ, $allowed_files)){ // Pruefen ob die Dateigroesse passt / keine leere Datei ist if($size <= $maxsize && $size!=0){ $newname = md5(uniqid(rand())); // Der Datei einen neuen einmaligen Namen verpassen // Datei in Verzeichnis kopieren if(move_uploaded_file($tmp_name, $uploaddir.$newname.$datei_typ)){ echo "<h2>Die Datei wurde erfolgreich hochgeladen...</h2>"; echo "<p><strong>Dateigroesse:</strong> ".grafixx_size($size)."<br />\n"; echo "<strong>MIME-Type:</strong> ".$type." <br /><br />\n"; echo "<strong>Datei ansehen =></strong>\n"; echo "<a href='".$uploaddir.$newname.$datei_typ."' target=\"_blank\">".$uploaddir.$newname.$datei_typ."</a></p>\n"; $okay = "yes"; }else{ // Wenn Datei nicht ins angegebene Verzeichnis kopiert werden konnte $message .= 'Datei konnte nicht verschoben werden ... <br />'; $error = "1"; // Fehler } }else{ // Wenn Datei zu gross ist $message .= "Die Datei <strong>".$name."</strong> ist schwerer als die erlaubten ".grafixx_size($maxsize)." ... <br />"; $error = "1"; // Fehler } }else{ // Wenn Dateityp nicht erlaubt ist $message .= "Der Dateityp der Datei <strong>".$name."</strong> ist nicht gestattet ...<br />"; $error = "1"; } } // close (empty($_POST['images'])) if(isset($error) && ($error == "1")){ // Fehlermeldungen ausgeben echo "<div class=\"error\"><h1>Error ...</h1>\n <p>$message</p></div>"; } } // close submit gedrueckt Wenn nicht submit gedrueckt if(!isset($okay)){ // wenn nicht okay -> Formular ausgeben ?> <form action="" method="post" enctype="multipart/form-data"> <fieldset> <legend>Dateiupload</legend> <label>Datei: <input type="file" name="file" id="file" /></label> <p> <strong>Erlaubte Dateitypen:</strong> <?php foreach($allowed_files AS $name){ echo "$name "; } /* erlaubt Dateitypen auflisten */ ?> <br /> <strong>Maximale Dateigroesse:</strong> <?php echo grafixx_size("$maxsize", 2); /* Maximale Dateigroesse ausgeben */?> </p> <input type="submit" value="Datei Hochladen" name="submit" /> </fieldset> </form> <?php } // close !okay }// close eingeloggt ?> <h3>Grafixx - Dateiupload <a href="http://alice-grafixx.de">Alice-Grafixx.de</a> <?php echo date('Y'); ?> <?php // Admin Logout -------------------------------------- if(isset($_SESSION['login'])){ // Wenn eingeloggt echo "| <a href=\"$pfad?action=logout\">logout</a>"; } ?> </h3> </div> </body> </html>
Wichtig!
Angepasst werden muessen natuerlich die Login-Daten, damit niemand einfach so Dateien hochladen kann.Der Pfad zum Ordner $uploaddir = "images/"; dieser Ordner MUSS die CHMOD rechte 777 besitzen, ansonsten ist kein Dateiupload moeglich!
Und optional die erlaubten Dateitypen $allowed_files = array( ".jpg", ".gif" )
Sowie die Dateigroesse $maxsize = "1048576"; die in Bytes angegeben werden muss!
Hinweis: Dieses Tutorial wurde am 21.02.2012 vom Autor ueberarbeitet
Kommentar schreibenHinterlasse einen Kommentar
Du musst angemeldet sein, um einen Kommentar zu hinterlassen...
Du bist noch kein Mitglied von Alice-Grafixx.de?
Dann kannst du dich hier kostenlos registrieren ...