Tutorial PHP Upload Script
DownloadScriptTutorials » PHP/MySQL Tutorials » DownloadScript
DownloadScript - Tutorial
Ich hab schon lange mehr keinen Tutorial-Wunsch erfuellt, also hab ich mir den Erstbesten geschnappt und in die Tat umgesetzt ..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...?
Nun denn, ich bin sogar noch einen Schritt weiter gegangen als gewuenscht wurde...
- der Dateiupload ist mittels Username u. Passwort gesichter, damit niemand ungewollte Dateien hochladen kann
- die Downloads koennen in Kategorien eingeteilt werden
- die Anzahl der Downloads jeder Datei wird mitgezaehlt
- bei bestimmte Dateitypen wie z.B. (.jpg, .gif, .png) wird ein Download erzwungen,
nicht so wie hier auf Alice-Grafixx z.B. mit den Texturen,
die der User mittels Rechtsklick->Speichern unter selbst herunterladen muss
Was wird benoetigt?
- PHP / MySql Grundkenntnisse
- 1 MySql Datenbank
- Webspace der PHP unterstuetzt
Wie schauts aus?
- Downloadbereich
- Admin Uebersicht
- Download eintragen
Step 1
Als Erstes erstellen wir zunaechst einmal eine neue Tabelle 'grafixx_downloads' in der Datenbank,
in welche wir spaeter dann die Daten der einzelnen Downloaddateien (nennt man das so?) einzutragen gedenken...
CREATE TABLE IF NOT EXISTS `grafixx_downloads` (
`id` int(22) NOT NULL AUTO_INCREMENT,
`titel` varchar(255) NOT NULL,
`beschreibung` text NOT NULL,
`cat` varchar(255) NOT NULL,
`icon` varchar(255) NOT NULL,
`datei` varchar(255) NOT NULL,
`date` datetime NOT NULL,
`downloads` int(22) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
);
`id` int(22) NOT NULL AUTO_INCREMENT,
`titel` varchar(255) NOT NULL,
`beschreibung` text NOT NULL,
`cat` varchar(255) NOT NULL,
`icon` varchar(255) NOT NULL,
`datei` varchar(255) NOT NULL,
`date` datetime NOT NULL,
`downloads` int(22) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
);
Step 2 - Datenbank Verbindung u. Funktionen | config.inc.php
Config.inc.php heisst unsere Datei mit der wir eine Verbindung zur Datenbank herstellen,
welche ausserdem bestimmte Funktionen, wie z.B. eine Blaetterfunktion, beinhaltet, welche wir im Download-Script benoetigen.
<?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 ?>
Step 3 - Adminbereich ~ Dateiverwaltung | admin.php
Die Datei admin.php ist mit einem Loginbereich versehen, so dass niemand unbefugt Dateien hochladen kann.
Sie bietet eine Uebersicht aller bisher hochgeladenen DownloadDateien, wenn man mit derm Maus ueber den Titel der DownloadDateie faehrt wird das Vorschaubild
eingeblendet, es wird ein Link zum Loeschen der DownloadDatei angeboten und eben das Formular zum Eintragen eines Downloads...
In die admin.php wird die config.inc.php eingebunden (include()), bitte hier dann darauf
achten, dass der Pfad angepasst wird, sollten sich beide Dateien nicht in ein und dem selben Ordner befinden!
<?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>
Step 4 - Ausgabe der Downloads | download.php
Die Datei download.php ist dafuer zustaendig alle zur Verfuegung stehenden Downloads aufzulisten,
sie bietet die Moeglichkeit die angebotenen Downloads nach Kategorien zu sortieren, zaehlt die Klicks eines jeweiligen Downloads und ist dafuer zustendig, dass die
Angebotene DownloadDatei auch wirklich heruntergeladen werden kann und nicht nur wie es z.B. bei Bildern in der Regel ueblich ist einfach angezeigt werden...
<?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>
Step 5 - Verzeichnis files
Als finalen Schritt legen wir nun noch einen Ordner mit der Bezeichnung files an, dieser Ordner MUSS einen Ordner mit der Bezeichnung thumbs beinhalten, in welchen dann die vorschaubilder eines Downloads gesteckt werden koennen.
Wir haben also nun folgende Dateien:
- config.inc.php || Baut die Verbindung zur DB auf und enthaelt die genutzten Funktionen
- admin.php || enthaelt den Login/Logout, Uebersicht der Dateien, Dateiupload und das Loeschen der Dateien
- downloads.php || listet alle verfuegbaren Downloads uebersichtlich auch und bietet die Moeglichkeit diese herunterzuladen
Wichtig!
Alle hier verwendeten Dateien config.inc.php, admin.php und downloads.php, sowie der Ordner files, muessen sich im selben Verzeichnis befinden, sonst muessen die Pfadangaben angepasst werden!Der Ordner files wieso sein Unterordner thumbs muessen ueber die entsprechenden Rechte ( CHMOD 755 ) verfuegen, sonst ist ein Upload von Dateien nicht moeglich!
Viel Spass damit,
sollten Fragen zum DownloadScript auftauchen oder gar Probleme damit bestehen, bitte die Kommentarfunktion hier nutzen...
Tutorial Dateien herunterladen
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 ...