Loading...   Upload Image

DownloadScriptTutorials » PHP/MySQL Tutorials » DownloadScript

Verfasst von Alice am 31.01.2012 - wurde schon 8714 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
3x bewertet
Schwierigkeit: mittel
Kommentare: [ 9 ]

Tag - Schlagwort Tutorial Tag - Schlagwort PHP Tag - Schlagwort Upload Tag - Schlagwort Script

DownloadScript - Tutorial

Ich hab schon lange mehr keinen Tutorial-Wunsch erfuellt, also hab ich mir den Erstbesten geschnappt und in die Tat umgesetzt ..

Ich würde mich total freuen wenn du ein einfaches Download-Script machen würdest! 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`)
);


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 Dateigröße - 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\">&laquo; 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\">&laquo;</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\">&raquo;</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 &raquo;</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&amp;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&amp;mod=okay&amp;id=".$id."\" class=\"button\">&nbsp;&nbsp; Ja, Loesch den Mist! &nbsp;&nbsp;</a>";
		echo "<a href=\"".$pfad."\" class=\" button\">&nbsp;&nbsp;Nein, doch lieber nicht ...&nbsp;&nbsp;</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

    	    // Prüfen, ob bei Datei die Dateigröße 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)."&amp;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&amp;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 ...


Affiliates:   Colorful Gfx  •   The Seduction  •   Design Grafixx  •   Gallery Yuri  •   Blue-Graphics  •   Pat DG  •   Chibi Graphics  • Show all ...
designenlassen.de - Der Design-Marktplatz für Webdesign, Logo-Design, Flyerdesign u.v.m.        ALL-INKL.COM - Webhosting Server Hosting Domain Provider