Verfasst von Alice am 31.01.2012 - wurde schon 13172 mal gelesen
Tutorial
PHP
Upload
Script
Loading...
![]()
Ich wrde mich total freuen wenn du ein einfaches Download-Script machen wrdest! Also eins wo man eine ganz beliebige Datei und ein VorschauBild dazu hochladen kann, egal ob es jetzt eien zip-Datei oder einfach ein .jpg ist. Vielleicht noch mit einer Anzeige wann die Datei hochgeladen wurde und einer kurzen Beschreibung...?
<?php // config.inc.php
//-------------------------------------------------------------------------------------------- //
// Konfiguration - BITTE ANPASSEN!!!! //
//-------------------------------------------------------------------------------------------- //
$grafixx_name = "USERNAME"; // Loginname angeben
$grafixx_pass = "PASSWORT"; // Loginpasswort angeben
$datei_max_size = 2048576; // Max. erlaubte Dateigre - 1048576 = 1 MByte, 10485760 = 10 MByte
$datei_type = array(".jpg",".png",".gif"); // Die Erlaubten Datei-Endungen
$datei_type_img = array(".jpg",".png",".gif"); // Die Erlaubten Datei-Endungen vorschau
$upload_dir = "files/"; // Speicherort der Dateien
$upload_dir_img = "files/thumbs/"; // Speicherort der Vorschaubilder
//-------------------------------------------------------------------------------------------- //
// DB-VERBINDUNGSDATEN - BITTE ANPASSEN!!!! //
//-------------------------------------------------------------------------------------------- //
$host = "localhost"; // Adresse des Datenbankservers, fast immer localhost
$user = "root"; // Dein MySQL Benutzername
$pass = ""; // Dein MySQL Passwort
$dbase = "grafixx_tutorials"; // Name der Datenbank
//-------------------------------------------------------------------------------------------- //
$connection = mysql_connect("$host","$user","$pass") OR DIE ("Keine Verbindung zu der Datenbank moeglich.");
$db = mysql_select_db($dbase , $connection) OR DIE ("Auswahl der Datenbank nicht moeglich.");
//-------------------------------------------------------------------------------------------- //
function clean_it($dirty){ // DB eintrag filtern
// Auswirkungen von magic_quotes_gpc zuruecksetzen, wenn ON
if (get_magic_quotes_gpc()) {
$clean = mysql_real_escape_string(stripslashes(htmlspecialchars($dirty)));
}else{
$clean = mysql_real_escape_string(htmlspecialchars($dirty));
}
return $clean;
}
// Funktion zum Fehler ausgeben
function get_error($var){
$fehler = "<div class=\"error\"><h2>Error ...</h2>\n<p>".$var."</p>\n</div>\n";
return $fehler;
}
// Funktion um no error ausgeben
function get_okay($var){
$fehler = "<div class=\"no_error\"><h2>Prima ...</h2>\n<p>".$var."</p>\n</div>\n";
return $fehler;
}
//-------------------------------------------------------------------------------------------- //
// Blaetterfunktion => Seitennavigation
//-------------------------------------------------------------------------------------------- //
// Blaetterfunktion => Seitennavigation
function get_navi($go, $total, $pfad, $ausgabe = false, $ende = 10, $p = 3){
//-----------------------------------------------------------------------------------------------
// $pfad => Dateipfad
// $total => Anzahl der in DB
// $ende => Anzahl der Datensaetze die Pro Seite angezeigt werden sollen
// $p => Anzahl der Links die in der Seitenavigation ausgegeben werden
// $ausgabe = false => Seitennavigation NICHT ausgeben oberhalb der DB Abfrage
//-----------------------------------------------------------------------------------------------
$seiten = ceil($total / $ende); // Berechnet die Seitenanzahl insgesamt
if(!isset($go)){ // korrigieren der aktuellen Seite
$go = 1; // Sofern $go nicht uebergeben wurde
}elseif($go <= 0 || $go > $seiten){
$go = 1; // Variable definieren
}else{ // Wenn Obiges nicht zutraf
$go = clean_it($go); // Variable definieren
}
$links = array(); // Linkkette bilden
// Seite die vor der aktuellen Seite kommt definieren
if(($go - $p) < 1){ $davor = $go - 1; }else { $davor = $p; }
// Seite die nach der aktuellen Seite kommt definieren
if(($go + $p) > $seiten){ $danach = $seiten - $go; }else{ $danach = $p; }
$off = ($go - $davor); // Variable definieren
if ($go- $davor > 1){ // Link definieren => Zur Erste Seite springen
$first = 1;
$links[] = "<a href=\"".$pfad."".$first."\" title=\"Zur ersten Seite springen\">« Erste ...</a>\n";
}
if($go != 1){ // Link definieren => eine Seite zurueck blaettern
$prev = $go-1;
$links[] = "<a href=\"".$pfad."".$prev."\" title=\"Eine Seite zurueck blaettern\">«</a>\n";
}
for($i = $off; $i <= ($go + $danach); $i++){ // einzelne Seitenlinks erzeugen
if ($i != $go){ // Link definieren
$links[] = "<a href=\"".$pfad."".$i."\">$i</a>\n";
}elseif($i == $seiten) { // aktuelle Seite, ein Link ist nicht erforderlich
$links[] = "<span class=\"current\">$i</span>\n";
}elseif($i == $go){ // aktuelle Seite, ein Link ist nicht erforderlich
$links[] = "<span class=\"current\">$i</span>\n";
} // close if $i
}// close for
if($go != $seiten){ // Link definieren => eine Seite weiter blaettern
$next = $go+1;
$links[] = "<a href=\"".$pfad."".$next."\" title=\"Eine Seite weiter blaettern\">»</a>\n";
}
if($seiten - $go - $p > 0 ){ // Link definieren => Zur letzen Seite springen
$last = $seiten;
$links[] = "<a href=\"".$pfad."".$last."\" title=\"Zur letzten Seite springen\">... Letzte »</a>\n";
}
$start = ($go-1) * $ende; // Berechne den Startwert fuer die DB
$link_string = implode(" ", $links); // Zusammenfuegen der einzelnen Links zu einem String
// -------------------------------------- Seitennavigation ausgeben ----------------------------
if($ausgabe == true){
echo "<div id=\"navigation\">\n";
echo "<span class=\"pages\">Seite $go von $seiten</span>\n";
echo $link_string; // Ausgabe der Seitennavigation
echo "</div> \n";
} //close ausgabe
// -------------------------------------- Seitennavigation ende --------------------------------
return array($start, $ende);
} // close function
?><?php // Grafixx Download-Script.php
session_start(); // startet die Session
// error_reporting(E_ALL ^ E_NOTICE);
$pfad = $_SERVER['SCRIPT_NAME']; // aktueller Pfad zur Datei
//------------------------------------------------------------------ //
include('config.inc.php'); // DB-Verbindung - Funktionieren einbinden
$tabelle = "grafixx_downloads"; // Name der Tabelle
// LOGOUT
//------------------------------------------------------------------ //
if(isset($_GET['do']) && ($_GET['do'] == 'logout')){
session_unset(); // Sessionvariable loeschen
session_destroy(); // Session zerstoeren
header("Location: $pfad"); // Weiterleitung => Login
}
ob_start(); // startet den Ausgabepuffer => no header allready send error ;)
?>
<!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">
<head>
<title>Grafixx DownloadScript</title>
<meta content="IE=EmulateIE7" http-equiv="X-UA-Compatible" />
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<meta content="no" http-equiv="imagetoolbar" />
<meta content="de" http-equiv="Content-Language" />
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="ram">
<div id="header">
<ul id="navi">
<li><a href="admin.php">Home</a></li>
<li><a href="?do=upload">Datei hochladen</a></li>
<li><a href="?do=logout">Logout</a></li>
</ul>
<h1>Grafixx DownloadScript</h1>
</div>
<div id="content">
<?php
if(isset($_SESSION['grafixx_login'])) { // Sofern eingeloggt
//------------------------------------------------------------------ //
// Dateien auflisten
//------------------------------------------------------------------ //
if(!isset($_GET['do'])){
// DB Abfrage
$abfrage = mysql_query("SELECT id, titel, cat, icon, datei, downloads, DATE_FORMAT(date, '%d.%m.%Y') AS datum FROM ".$tabelle." ");
if(mysql_num_rows($abfrage) < 1){ // wenn noch keine Dateien vorhanden sind
echo "<p>Bisher wurden noch keien Datein hochgeladen...</p>\n<br /><br />";
echo "<p><a href=\"?do=upload\" class=\"the_button\">Datei hochladen</a></p>\n";
}else{
echo "<ul class=\"list\">"; // Dateien auflisten
while($row = mysql_fetch_object($abfrage)){
echo "<li><small style=\"float: right\"><a href=\"".$pfad."?do=delete&id=".$row->id."\" title=\"Datei loeschen\">[ x ]</a></small>\n";
echo $row->id.". <strong><a href=\"".$row->id.$row->datei."\" class=\"tool\">".$row->titel."\n";
echo "<span><img src=\"".$upload_dir_img.$row->id.$row->icon."\" alt=\"".$row->titel."\" /></span></a></strong>\n";
echo "<small> ".$row->datum." - Downloads: ".$row->downloads."</small></li>\n";
}
echo "</ul>";
}
}
//------------------------------------------------------------------ //
// Upload Loeschen
//------------------------------------------------------------------ //
if(isset($_GET['do']) && isset($_GET['id']) && ($_GET['do'] == 'delete')){
if(isset($_GET['id'])) $id = clean_it($_GET['id']);
if(isset($_GET['mod'])) $mod = clean_it($_GET['mod']);
if(isset($_GET['mod'])){
// DB Abfrage => Datei/Bild - Daten
$query = mysql_query("SELECT icon, datei FROM ".$tabelle." WHERE id = '".$id."'");
$row = mysql_fetch_object($query);
if (unlink($upload_dir.$id.$row->datei) && unlink($upload_dir_img.$id.$row->icon)){ // Bild u. Datei loeschen
// DB Eintrag loeschen
$loeschen = mysql_query("DELETE FROM ".$tabelle." WHERE id='$id'");
if($loeschen){
header("Location: $pfad");
}else{
echo get_error('Es ist ein Fehler aufgetreten');
}
}else{
echo get_error('Das Bild konnte nicht geloescht werden');
}
}else{
echo "<div class=\"error\"><h2>Ganz sicher Eintrag loeschen?</h2>";
echo "<p><a href=\"".$pfad."?do=delete&mod=okay&id=".$id."\" class=\"button\"> Ja, Loesch den Mist! </a>";
echo "<a href=\"".$pfad."\" class=\" button\"> Nein, doch lieber nicht ... </a></p><br /><br/></div>\n";
}
}
//------------------------------------------------------------------ //
// Upload eintraegen
//------------------------------------------------------------------ //
if(isset($_GET['do']) && ($_GET['do'] == 'upload')){
if (isset($_POST['submit'])){ // Sofern auf hochladen geklickt wurde
$titel = clean_it($_POST['titel']); // Variable definieren
$msg = clean_it($_POST['beschreibung']); // Variable definieren
$cat = clean_it($_POST['cat']); // Variable definieren
$new_cat = clean_it($_POST['new_cat']); // Variable definieren
if(empty($titel)){ // pruefen ob alles ausgefuellt wurde
echo get_error('Bitte Danke alle benoetigten Felder ausfuellen!');
}else if(empty($cat) && empty($new_cat)){
echo get_error('Bitte danke Kategorie auswaehlen oder eine neue Kategorie angeben...');
}else if(!isset($_FILES['datei']['tmp_name']) OR (!isset($_FILES['image']['tmp_name']))){ // wenn kein Bild o. Datei angegeben
echo get_error('Bitte danke Vorschaubild und Datei angeben...');
}else{ // sofern alles benoetigte angegeben
// Die Dateiendung herausfiltern
$datei = strrchr($_FILES['datei']['name'], "."); // Nun ist in $datei folgendes ethalten: .dateiendung
$img_datei = strrchr($_FILES['image']['name'], "."); // Nun ist in $img_datei folgendes ethalten: .dateiendung
// Prfen, ob bei Datei die Dateigre und die Dateiendung erlaubt ist!
if ($_FILES['datei']['size'] >= $datei_max_size && !in_array($datei, $datei_type) OR
$_FILES['image']['size'] >= $datei_max_size && !in_array($img_datei, $datei_type_img)){
echo get_error('Die Dateiendung ist nicht erlaubt, oder die Datei war zu gross ...'); // Fehler ausgeben
}else{ // alles korrekt => hochladen
if(empty($cat)){ $cat = $new_cat; }else{ $cat = $cat; } // for kategorie
// DB Eintrag
$eintragen = mysql_query("INSERT INTO ".$tabelle." (titel, cat, icon, datei, date, beschreibung)
VALUES ('$titel','$cat', '$img_datei', '$datei', now(), '$msg')");
if (mysql_errno() == 0) { // Wenn MySQL keine Fehler hat dann..
$id = mysql_insert_id(); // letztw id auslesen
$img_datei_file = $upload_dir_img.$id.$img_datei; // <= NEUER DATEI NAME - IMGs
$datei_file = $upload_dir.$id.$datei; // <= NEUER DATEI NAME
// Datei hochladen u. umbenennen
move_uploaded_file($_FILES['image']['tmp_name'], $img_datei_file);
move_uploaded_file($_FILES['datei']['tmp_name'], $datei_file);
if (file_exists($datei_file) AND file_exists($img_datei_file)){ // Bild,Datei hochladen
header("Location: $pfad"); // Weiterleiten
}else{
echo get_error('Der Upload war nicht erfolgreich :(');
}
} else { // Wenn MySQL Fehler..
echo get_error("Der Eintrag war leider nicht erfolgreich! ".mysql_error()."\n");
}
}// Bild hochgeladen
}// close empty
}// close isset
// Formular ausgeben
?>
<form method="post" action="" enctype="multipart/form-data">
<fieldset>
<legend>Datei Eintrag</legend>
<label>Titel</label>
<input name="titel" type="text" /><br />
<legend>Vorschaubild</legend>
<input name="image" type="file" /><small>Erlaubte Dateitypen: <?php echo implode(",", $datei_type_img);?></small>
<br /><br />
<label>Beschreibung</label>
<textarea name="msg" rows="8" cols="90" ></textarea><br />
<label>Kategorie</label>
<select name="cat" size="1">
<option value="">Kategorie waehlen</option>
<option value="">---------------------</option>
<?php // wenn vorhandene - Kategorien auslesen
$query = mysql_query("SELECT DISTINCT cat FROM ".$tabelle." ");
if(mysql_num_rows($query) != '0'){
while($row = mysql_fetch_object($query)){
echo "<option valu=\"".$row->cat."\">".$row->cat."</option>";
}
}
?>
</select>
<input name="new_cat" type="text" /><small>Neue Kategorie erstellen</small><br />
<br />
<legend>Datei</legend>
<input name="datei" type="file" /><small>Erlaubte Dateitypen: <?php echo implode(",", $datei_type);?></small>
<br /><br />
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
<input type="submit" name="submit" value="Hochladen" class="button "/>
</fieldset>
</form>
<?php
} // close do = upload
//------------------------------------------------- LOGIN BEREICH ------------------------------------------------
}else{ // wenn keine Session vorhanden => nicht eingeloggt
if(isset($_POST['submit_login'])) { // wenn supbit gedrueckt
$login_name = strip_tags($_POST['log_user']); // Variable definieren
$login_pass = strip_tags($_POST['log_pass']); // Variable definieren
if(empty($login_name) OR empty($login_pass)) { // Pruefen ob Username angegeben wurde
$message .= 'Bitte geben Sie ihren Usernamen und das Passwort ein ... <br />'; $error = "1";
}
if($login_name != $grafixx_name OR $login_pass != $grafixx_pass){ // Angaben auf Korrektheit pruefen
$message .= 'Zugriff verweigert ... <br />'; $error = "1";
}
if($error != "1"){ // Wenn kein Fehler war
// session handle-----------------------------
$_SESSION['grafixx_login'] = $_SERVER['REMOTE_ADDR']; // Session setzen
header("Location: $pfad"); // Weiterleiten
}
if($error == "1"){ // Fehlermeldung ausgeben wenn vorhanden
echo "<div class=\"error\"><h2>Error ...</h2>\n <p>$message</p></div>\n";
}
}
// Login Formular ausgeben
?>
<form action="" method="post">
<fieldset>
<legend><span class="color">Grafixx</span> Login</legend>
<label>Name</label> <input name="log_user" type="text" /><br />
<label>Passwort</label> <input name="log_pass" type="password" />
<br />
<br />
<input class="button" name="submit_login" type="submit" value="Login" />
</fieldset>
</form>
<?php
} // close login
ob_end_flush(); // leert/beendet den Ausgabepuffer
?>
</div>
<div id="footer">
<p><a href="http://unnecessary.de">Grafixx DownloadScript</a> <a href="http://alice-grafixx.de" title="Photoshop Community">Alice-Grafixx.de</a></p>
</div>
</div>
</body>
</html><?php //downloads.php
include('config.inc.php'); // Db-Verbindungsdaten einbinden
$tabelle = "grafixx_downloads"; // Name der Tabelle
$dpfad = $_SERVER['SCRIPT_NAME']; // Pfad ermitteln
// Downloads zaehlen
//-------------------------------------------------------------------------------------
if(isset($_GET['id'])){ // Parameteruebergabe pruefen
$id = clean_it($_GET['id']); // Variable definieren
$abfrage = mysql_query("SELECT datei FROM ".$tabelle." WHERE id='$id'");
$rows = mysql_fetch_object($abfrage);
// eins hochzaehlen und leitet den Besucher weiter
$update = mysql_query("UPDATE ".$tabelle." SET downloads = downloads+'1' WHERE id='$id'");
if($update){
$filename = $upload_dir.$id.$rows->datei; // download-datei
// Dateidownload erzwingen
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/force-download");
header("Content-Disposition: attachment; filename=\"".$id.$rows->datei."\";" );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($filename));
readfile($filename);
header("Location: $url");
exit();
}else{
echo get_error('Es ist ein Fehler aufgetreten!');
}
} // close ID uebergeben
//--------------------------------------------------------------------------------------
?>
<!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 DownloadScript</title>
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="imagetoolbar" content="no" />
<meta http-equiv="Content-Language" content="de" />
<link rel="stylesheet" href="style.css" type="text/css" />
</head>
<body>
<div id="ram">
<div id="header">
<h1>Grafixx DownloadScript</h1>
</div>
<div id="content">
<?php
//--------------------------------------------------------------------------------------
// Ausgabe der Layouts
//--------------------------------------------------------------------------------------
echo "<h2>Downloads</h2>\n";
if(isset($_GET['cat'])){ // nur bestimmte Kategorie ausgeben
$cat = clean_it($_GET['cat']); // Variable definieren
$where = "WHERE cat = '".rawurldecode($cat)."'";
$pfad = $dpfad."?cat=".urlencode($cat)."&go="; // Pfad ermitteln
}else{ // alle ausgeben
$where = "";
$pfad = $dpfad."?go="; // Pfad ermitteln
}
$abfrage = mysql_query("SELECT id FROM ".$tabelle." ".$where." "); // DB Abfragen
$total = mysql_num_rows($abfrage); // Anzahl der Zeilen in DB
// ---------------------- Seitennavigationsdaten --------------------------------------------------
isset($_GET['go'])?$go = clean_it($_GET['go']):$go = '';
$per_page = 2; // Anzahl der Datensaetze die Pro Seite angezeigt werden sollen
$p = 5; // Anzahl der Links die in der Seitenavigation ausgegeben werde
// Blaetterfunktion aufrufen = > Ausgeben
list ($start, $ende) = get_navi($go, $total, $pfad, false, $per_page, $p);
// ---------------------- ENDE Seitennavigationsdaten----------------------------------------------
$abfrage = mysql_query("SELECT id, titel, beschreibung, icon, cat, datei, downloads, DATE_FORMAT(date, '%d.%m.%Y') AS datum
FROM ".$tabelle." ".$where." ORDER BY id DESC LIMIT $start,$ende");
if($total < 1){ // Pruefen ob Layouts vorhanden
echo "<p>Zur Zeit existieren keine Downloads ...</p>";
}else{
echo "<p>Insgesamt sind derzeit <strong>".$total." Downloads</strong> vorhanden ...</p>";
// wenn vorhandene - Kategorien auslesen
$query = mysql_query("SELECT DISTINCT cat FROM ".$tabelle." ");
if(mysql_num_rows($query) != '0'){
echo "<form action='' method='GET'>\n";
echo "<select name='cat' size='1'>\n";
echo "<option value=''>Kategorien waehlen</option>\n";
while($rows = mysql_fetch_object($query)){
echo "<option valu=\"".rawurlencode($rows->cat)."\">".$rows->cat."</option>";
}
echo "</select>\n <input type='submit' class='button' value='Los'/>\n </form><br />\n";
}
// Layouts ausgeben ausgeben
while($row = mysql_fetch_object($abfrage)){
echo "<div class='download'>\n";
echo "<img src='".$upload_dir_img.$row->id.$row->icon."' alt='".$row->titel."' style='float: left;' />\n";
echo "<h4>".$row->titel."</h4><br />\n";
echo "<strong>Kategorie:</strong> ".$row->cat."<br />\n";
echo "<strong>Datum:</strong> ".$row->datum."<br />\n";
if(empty($row->beschreibung)){
echo "<p><em>Keine Beschreibung vorhanden...</em></p>\n";
}else{
echo "<p>".$row->beschreibung."</p>\n";
}
echo "<br class='clear_left' />\n";
echo "<a href='".$dpfad."?do=download&id=".$row->id."' class='the_button'>Download <small>(".$row->downloads.")</small> </a>\n";
echo "</div>\n";
} // close while
echo "<br class=\"clear_left\" /><br />";
// Blaetterfunktion aufrufen = > Ausgeben
get_navi($go, $total, $pfad, true, $per_page, $p);
} // close Eintrage vorhanden
?>
</div>
<div id="footer">
<p><a href="http://unnecessary.de">Grafixx DownloadScript</a> <a href="http://alice-grafixx.de" title="Photoshop
Community">Alice-Grafixx.de</a></p>
</div>
</div>
</body>
</html>
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 ...