Loading...   Upload Image

Einfacher DateiuploadTutorials » PHP/MySQL Tutorials » Einfacher Dateiupload

Verfasst von Alice am 04.06.2008 - wurde schon 12623 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
10x bewertet
Schwierigkeit: mittel
Kommentare: [ 8 ]

Tag - Schlagwort Dateiupload Tag - Schlagwort Datei Tag - Schlagwort PHP Tag - Schlagwort Tutorial

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:&nbsp; </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 ...


       ALL-INKL.COM - Webhosting Server Hosting Domain Provider