
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 ...