Loading...   Upload Image

DownloadCounter ohne MySQLTutorials » PHP/MySQL Tutorials » DownloadCounter ohne MySQL

Verfasst von Alice am 11.10.2008 - wurde schon 8541 mal gelesen

Kategorie: PHP/MySQL
Bewertung:
18x bewertet
Schwierigkeit: einfach
Kommentare: [ 52 ]

Tag - Schlagwort Counter Tag - Schlagwort PHP Tag - Schlagwort Count Tag - Schlagwort Script Tag - Schlagwort Flatfiles

DownloadCounter ohne MySQL - Tutorial

Es wurde ein Tutorial fuer einen Klickcounter/DownloadCounter ohne MySQL Datenbank gewuenscht ...

Okay zugegeben, ein richtiges Tutorial an sich ist es ja nicht geworden,
dazu fehlt mir im Moment leider die Zeit,
aber das Script ist eigentlich recht gut auskommentiert, so dass es leicht nachvollziehbar sein sollte ...

Was wird benoetigt?


- Webspace der PHP unterstuetzt

Wie schauts aus?


- Loginformular
- Adminpanel
- Eintragen
- Editieren
- Loeschen

Step 1 - index.php / count.txt


Das Script benoetigt eine leere Textdatei mit der Bezeichnung count.txt,
diese Datei muss die Rechte(CHMOD)666 besitzen und im selben Verzeichnis liegen, wie die index.php!

Die index.php enthaelt das Login-Formular, damit niemand ohne Zugangsdaten Links eintragen kann.
Die Datei bietet eine komplette Auflistung aller eingetragenen URL's, mit Blaetterfunktion,
mitels index.php koennen neue Eintraegen hinzugefuegt, Loeschen und Editieren werden...

Die CSS-Datei die fuer die index.php genutzt/benoetigt wird, kann hier heruntergeladen werden.

Code der index.php
<?php 

session_start(); // startet die Session 

$pfad = $_SERVER['PHP_SELF'];				// aktueller Pfad zur Datei

//---------------------- Logindaten --------------------------------- //

$grafixx_name = "USERNAME";					// Loginname angeben
$grafixx_pass = "PASSWORT";					// Loginpasswort angeben

//------------------------------------------------------------------ //

ob_start();	// startet den Ausgabepuffer

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de"> 

<head>
<title>Grafixx - DownloadCounter  ||  Adminpanel </title> 

<meta http-equiv="Content-Language" content="de" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="imagetoolbar" content="no" />

<link rel="stylesheet" type="text/css" href="style.css" />

</head>
<body>

<div id="ram">
<h1 id="header">Grafixx <small>DownloadCounter</small></h1>
<br />
<?php 

if(!isset($_SESSION['login'])) { // wenn keine Session vorhanden

if(isset($_POST['admin_login'])) { // wenn supbit gedrueckt

$login_name = strip_tags($_POST['admin_name']); // Variable definieren
$login_pass = strip_tags($_POST['admin_pass']); // Variable definieren

    if(empty($login_name)) { // Pruefen ob Username angegeben wurde
    	$message .= 'Bitte geben Sie ihren Usernamen ein ... <br />'; $error = "1";
 	} 	
 	if(empty($login_pass)) { // Pruefen ob Passwort angegeben wurde
    	$message .= 'Bitte geben Sie ihr 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['login'] = $_SERVER['REMOTE_ADDR']; // Session setzen

			header("Location: $pfad"); // Weiterleiten
	}
	
	if($error == "1"){  // Fehlermeldung ausgeben wenn vorhanden
		echo "<h1>Error ...</h1>\n <p>$message</p>";
	}

}

}
// ----------------------------------------------- Ende Login ------------------------------------- //

if(isset($_SESSION['login'])){ 				// Sofern Session vorhanden ...

$db_file = "count.txt"; 					// Pfadangabe zur count.txt
$read_dbfile = file($db_file);				// Daten auslesen => Array packen

$ermittel_id = count($read_dbfile);			// Anzahl der Zeilen in datei ermitteln

if($ermittel_id == ""){ $ermittel_id = 0; }	// wenn count == 0

$links_per_page = 15;						// Anzahl der URL's die Pro Seite angezeigt werden sollen
$p = 5;										// Anzahl der Links die in der Seitennavigation angezeigt wird


//------------------------ Funktion um die letze ID zu ermitteln ------------------

function last_id(){	
 $array = file('count.txt'); 			// Datei in ein Array einlesen
 
 $count = sizeof($array)-1;				// Anzahl der Elemente ermitteln - 1 fuers Array
 
 $teile = explode("|", $array[$count]); // Array zerlegen
  
 return $teile[0];				 		// zuletzt eingetragene ID ermitteln 
}  

$next_id = last_id() + 1;				// naechste ID ermitteln
// ---------------------------------------------------------------------------------------------------- //


$id = strip_tags($_GET['id']);			// Variable definieren
$action = strip_tags($_GET['action']);  // Variable definieren

if(isset($_GET['id'])){ // falls ID uebregeben wurde 

	$datei = fopen($db_file, "r"); // Daten auslesen
	
		while($zeile = fgetcsv($datei, 1000, "|")){ // Daten werden aus der Datei
                                                    // in ein Array $zeile gelesen
	  		if($zeile[0] == $id){
				$url = $zeile[1];  					// Variable definieren
				$klicks = $zeile[2];				// Variable definieren
	    	}
		}
	fclose($datei);									// Datei schliessen
}

if($action == ''){ // Wenn Variable $action nicht uebergeben / leer
?>

<a href="<?php echo $pfad; ?>?action=new" class="button">Neuen Link eintragen ...</a>

<br /><br /><br />

<h1>Uebersicht ...</h1>

<?php 

$total_records = count($read_dbfile);	 // Anzahl der Zeilen in Datei ermitteln

if($total_records == '') {				// Falls keine Daten vorhanden 
    	echo "<p>Zur Zeit sind keine Links vorhanden ...</p>\n"; // 'Fehler' ausgeben
} else {

// -------------------------------------------------------- Seitennavigation ------------------------- //

$pages = ceil($total_records / $links_per_page); 		// ermittelt die Anzahl der Seiten

// korrigieren der aktuellen Seite
if(empty($_GET['go'])) {
    $go = 1;
} elseif($_GET['go'] <= 0 || $_GET['go'] > $pages) {
    $go = 1;
} else {
    $go = $_GET['go'];
}

$links = array();	// Linkkette

if(($go - $p) < 1){          
  $prevOffset = $go - 1;      
}else {          
  $prevOffset = $p;      
}            
if(($go + $p) > $pages) {          
  $nextOffset = $pages - $go;      
}else {          
  $nextOffset = $p;      
}          
$off = ($go - $prevOffset);    
                
if ($go- $prevOffset > 1){    
    $first = 1;
    $links[] = "<a href=\"".$pfad."?go=$first\" title=\"Zur ersten Seite springen\">&laquo; Erste ...</a>\n";      
}      
if($go != 1){  	 
    $prev = $go-1;
    $links[] = "<a href=\"".$pfad."?go=$prev\" title=\"Zurueck zur letzen Seite\"> &laquo;</a>\n";     
}   
       
for($i = $off; $i <= ($go + $nextOffset); $i++){  
  if ($i != $go){              
        $links[] = "<a href=\"".$pfad."?go=$i\" title=\"Seite $i anzeigen\">$i</a>\n";
  }elseif($i == $pages) {              
        // aktuelle Seite, braucht keinen Link
        $links[] = "<span class=\"current\">[ $i ]</span>\n";  
        }          
  elseif($i == $go){              
        // aktuelle Seite, braucht keinen Link
        $links[] = "<span class=\"current\">[ $i ]</span>\n";  
        }      
}                
if($go != $pages){          
    $next = $go+1;
    $links[] = "<a href=\"".$pfad."?go=$next\" title=\"Weiter zur naechsten Seite\"> &raquo; </a>\n";
}      

if ($off+$prevOffset*2 < $pages){          
    // zur letzen Seite springen
    $last = $pages;
    $links[] = "<a href=\"".$pfad."?go=$last\" title=\"Zur letzen Seite springen\">... Letzte &raquo;</a>\n";
}      
 
// Zusammenfügen der einzelnen Links zu einem String
$link_string = implode(" &nbsp; ", $links);
 
// --------------------------------------------------------------------------------------------------------------------- //

	$start = $go * $links_per_page; 		// AusleseStart ermitteln
	$ende = $start - $links_per_page;		// AusleseEnde ermitteln
	
if ($start > $total_records){ 
	$start = $total_records;
}
	$start = $total_records - $start-1;
	$ende = $total_records - $ende-1;
	
	$nummerdel = $go * $pro - $pro + 1;  
?>	
<table width="500" style="border: 1px solid #B5B8BB;">
<tr>
<th width="21" align="center">ID</th>
<th>URL</th>
<th align="center">Klicks</th>
<th align="center">Option</th>
</tr>
<?php
for ($do_zeile = $ende; $do_zeile > $start ; $do_zeile--){
	$eintraege = explode ("|", $read_dbfile[$do_zeile]); 	// Eintraege auseinander nehmen

 $zeile++;  // jede 2te Zeile einfaerben
   if ($zeile % 2 == 0) {
       echo "<tr>";
   } else {
          echo "<tr bgcolor=\"#E6E9EC\">";
   }
?>
<td width="21" align="center"><?php echo $eintraege[0]; ?></td>
<td><?php echo $eintraege[1]; ?></td>
<td width="56" align="center"><?php echo $eintraege[2]; ?></td>
<td width="95" align="center">
<a href="<?php echo $pfad; ?>?action=edit&amp;id=<?php echo $eintraege[0]; ?>"> Edit </a>&nbsp;|&nbsp;
<a href="<?php echo $pfad; ?>?action=delete&amp;id=<?php echo $eintraege[0]; ?>"> Delete </a>
</td>
</tr>
<?php
	$nummerdel++; 
	} // close for-schleife
?>
</table>
<br />
<?php
 echo "<div id=\"navigation\">\n";

 echo "<span class=\"pages\">Seite $go von $pages</span>\n";

 echo $link_string; // Ausgabe der Seitennavigation
 
 echo "</div>\n"; 

 } // close urls vorhanden
 
} // close action leer

// ---------------------------------- / Config / ---//

if (isset($_POST['submit'])){ // Wenn submit gedrueckt

$url = strip_tags($_POST['url']); // Variable definieren

// ------------------------------- Wenn action = new --------------------------------------------------

if ($action == "new") {  

$suchen = strpos($url, 'http://'); // $url pruefen auf http://

    if(empty($url)){ // Fehler wenn keine URL angegeben wurde
    	$message .= "Bitte Danke eine URL angeben ...<br /><br />\n";  $error = "1";
    }
    
    if($suchen === false ){
    	$message .= "Die URL bitte mit http:// angeben ...<br /><br />";  $error = "1";
    }
    
    if($error != "1"){ // Wenn kein Fehler war
    	
		$datei = fopen($db_file, "a");					// Datei oeffnen
		fputs($datei, $next_id . "|" . $url . "|0 \n"); // Daten eintragen
		fclose($datei);									// Datei schliessen

   	   $generate_link = "&lt;a href=&quot;go.php?id=$next_id&quot;&gt; - Linkbezeichnung/titel - &lt;/a&gt;";
   	   
   	     echo "<h1>Prima ...</h1> \n";
   	     echo "<p>Vielen Dank ...<br /><br /> \n";
   	     echo "Der Eintrag war erfolgreich :)<br /><br />\n";
   	     echo "Der Link Tag lautet:\n <br /><strong> $generate_link </strong> <br /><br />";
   	     echo "<a href=\"$pfad?action=new\">» noch einen Link eintragen</a><br /><br />\n";
   	     echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n";
   	     
   	     $okay = 1;
	}

	if($error == "1"){ // Fehler fals vorhanden ausgeben
		echo "<h1>Error ...</h1><p>$message</p>";
	}
} // close action - new


// ------------------------------- Wenn action = edit ----------------------------------------------------
if ($action == "edit") {  

    if (empty($url)){ // wenn keine URL angegeben wurde
    	echo "Bitte Danke eine URL angeben ...\n";
    }else {

	$datei = fopen($db_file, "r"); 						// Datei oeffnen - lesen
	
	while($zeile = fgetcsv($datei, 1000, "|")){ 		// Daten werden aus der Datei
                                                		// in ein Array $zeile gelesen
	  if($zeile[0] == $id){	
	    $write[] = "$id|$url|$klicks\n";				// neue Daten definieren
	  }else{
	    $write[] = "$zeile[0]|$zeile[1]|$zeile[2]\n";  // Daten definieren
	  }
	} //while

	fclose($datei);										// Datei schliessen


	$datei = fopen($db_file, "w"); 						// Datei oeffnen um zu schreiben
		$who = 0;
	while($write[$who] != ""){
		  fputs($datei, $write[$who]);					// In Datei schreiben
		  $who++;
		  $okay = 1;									// Variable definieren

	}
	fclose($datei);										// Datei schliessen
	
	if($okay == 1){
        echo "<h1>Prima ...</h1> \n";
        echo "<p>Das Update war erfolgreich ...<br /><br />\n";
	    echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n";
    }else{ 												// Fehlermeldung ausgeben
    	echo "Es ist ein Fehler aufgetreten"; 
    }    
  }
} // close action - edit

} // ------------------------------- Wenn action = delete --------------------------------------------------------

if ($action == "delete") { 
  
$mode = $_GET['mode'];
   
   if(isset($_GET['mode'])){						// Pruefen ob Variable uebergeben wurde
   
	$datei = fopen($db_file, "r");					// Datei oeffnen um zu lesen
	  while($zeile = fgetcsv($datei, 1000, "|")){   // Daten werden aus der Datei
                                                    // in ein Array $zeile gelesen
	    if($zeile[0] == $id){
	      continue;									// weiter geht's - Eintrag raus
	    }else{
	   	 $write[] = "$zeile[0]|$zeile[1]|$zeile[2]"; // Daten definieren
	    }
	  }
	fclose($datei);									// Datei schliessen

	$datei = fopen($db_file, "w");					// Datei oeffnen um zu schreiben
		$who = 0;
    while($write[$who] != ""){
  	  fputs($datei, "$write[$who]\n");				// In Datei schreiben
  	  $who++;
  	}
	fclose($datei);									// Datei schliessen


     echo "<h1>Prima ...</h1> \n";
     echo "<p>Die URL wurde erfolgreich geloescht ...<br /><br />\n";
     echo "<a href=\"$pfad\">» Uebersicht ...</a></p>\n";
    
    } else { // zur Sicherheit noch mal nachfragen ...
    	echo "<h1>Wirklich ...</h1>\n";
        echo "<p>Ganz sicher loeschen?<br /><br />\n";
        echo "<a href=\"$pad?action=delete&amp;mode=yes&id=$id\" class=\"button\">Ja, ganz sicher</a>";
        echo "&nbsp;&nbsp;<a href=\"$pfad\" class=\"button\">Nein, lieber doch nicht</a></p> ";
    }
    
}// close action - delete
   
//------------------------------------- close wenn Abschicken geklickt ------------------------------

if(($action == "edit" AND !$okay) OR ($action == "new" AND !$okay)){

    if(isset($_GET['id'])) { // pruefen ob Variable uebergeben
        echo "<h1>Link editieren ...</h1>"; 	// Headline fuer Edit ausgeben
    }else{
        echo "<h1>Neuen Link eintragen ...</h1>"; // Headline fuer Neuen Link ausgeben
    }
    
// ----------------------------- Formular zu Eintragen ---------------------------------------------    
?>
<form action="" method="post">
<fieldset style="width: 400px">
<legend> URL Eintragen </legend>
<input type="text" name="url" value="<?php echo $url; ?>" style="width: 390px" /><br />

<input type="submit" value=" Speichern " name="submit" class="button" />
</fieldset>

</form>
<?php } // close action 

}else{ // --------------------------- wenn nicht eingeloggt - login formular anzeigen -----------------------
?>
<form action="" method="post">
<fieldset style="width: 300px">

<legend>Login</legend>

<label for="user">Username: </label>
<input type="text" name="admin_name" style="width: 250px" />

<label for="passwort">Passwort:&nbsp; </label>
<input type="password" name="admin_pass" style="width: 250px" />
<br /><br />
<input type="submit" value=" Login " name="admin_login" />
</fieldset>

</form>
<?php } // close login

ob_end_flush(); // leert/beendet den Ausgabepuffer
?>
<h3 id="footer">Grafixx - DownloadCounter © <a href="http://alice-grafixx.de">Alice-Grafixx.de</a> <?php echo date('Y'); ?></h3>

</div>

</body>

</html>


Wichtig!


Die Variable $benutzer = "USERNAMEN"; enthalt den Benutzernamen, dieser MUSS angepasst werden!
Die Variable $passwort = "PASSWORT"; enthalt das Passwort, dieses MUSS angepasst werden!


Step 2 - go.php


Die Datei go.php ist einzig und allein fuer das Zaehlen der Klicks zustaendig

<?php 
// go.php
//---------------------------

$id = strip_tags($_GET['id']);	// Variable definieren
$db_file = "count.txt"; 		// Pfadangabe zur count.txt

if(!isset($id) OR empty($id)){ // Pruefen ob ID uebergeben wurde


	echo "Keine ID angegeben ..."; // Fehlermeldung wiedergeben
}else{

	$datei = fopen($db_file, "r"); // Daten oeffnen um zu lesen
	
		while($zeile = fgetcsv($datei, 1000, "|")){ // Daten werden aus der Datei
                                                    // in ein Array $zeile gelesen
			if($zeile[0] == $id){
				$url = $zeile[1];		// URL fuer Weiterleitung
				$klicks = $zeile[2]+1;  // Klick um eines erhoehen
		   		
		   		$yes = 1; // Setzen der Variable = Eintrag vorhanden 
		   		
		   		$write[] = "$id|$url|$klicks\n"; // neue Daten definieren
	 		 }else{
	   			$write[] = "$zeile[0]|$zeile[1]|$zeile[2]\n"; // Daten definieren
	 		 }
		}
	fclose($datei);
	
	if(!$yes){
		die("ID wurde nicht gefunden!"); // Fehlermeldung, falls ID nicht vorhanden
	}	

	$datei = fopen($db_file, "w"); // Datei oeffnen um zu schreiben
		$who = 0;
	while($write[$who] != ""){
		  fputs($datei, $write[$who]); // Neue Daten in Datei schreiben
		  $who++;
		
		$okay = 1; // Setzen der Variable fuer evtl. Fehler

	}
	fclose($datei);
	
	if($okay == 1){ // Wenn alles korrekt dann weiterleiten
		header("Location: $url");  // Weiterleiten 
	}else{ // wenn nicht, dann Fehlermeldung 
		 echo "Es ist ein Fehler aufgetreten";
	}

} // close ID angegeben

?>


Step 3 - show_klicks.php


Die Datei show_klicks.php enthaelt eine Funktion, die ist fuer das Anzeigen der Klicks einer bestimmten URL zustaendig ist...

<?php
// show_klicks.php
//---------------------------

function showklicks($id){

$datei = fopen("count.txt", "r");				// Datei zum lesen oeffnen

	while($zeile = fgetcsv($datei, 1000, "|")){ // Daten werden aus der Datei
                                                // in ein Array $zeile gelesen
	  	if($zeile[0] == $id){
			$klicks = $zeile[2];				// Anzahl der Klicks ermitteln
	  	}
	}
	return $klicks;								// Anzahl der Klicks wiedergeben
fclose($datei);									// Datei schliessen
}

?>


Um die Anzahl der Klicks einer bestimmten URL,
in einer Datei (MUSS eine PHP-Datei sein!) wiederzugeben,
muss mittels include-Befehl
<?php include('show_klicks.php'); ?>
die show_klicks.php eingebunden werden!
Sofern sich die Datei show_klicks.php nicht im selben Ordner wie die Datei,
die die Klicks wiedergeben soll, befindet, muss die Pfadangabe beim include-Befehl angepasst werden...

Anschliessend an der Stelle, an der Anzahl der Klicks wiedergegeben werden soll,
muss folgender Code angebracht werden:
<?php echo showklicks('linkID'); ?>

Bei linkID MUSS die ID(Zahl) der URL angegeben werden, von dem die Anzahl der Klicks ausgegeben werden soll!

Beispiel



Zur Anwendung der Funktion showklicks...
<!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 - Beispiel</title> 
</head>

<body>

<?php include("show_klicks.php"); ?>

<a href="go.php?id=4"> Alice-Grafixx.de <?php echo showklicks('4'); ?>;</a>  
<a href="go.php?id=6"> Design-Grafixx.com <?php echo showklicks('6'); ?></a>  

</body>

</html>


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