Dem Skript liegt folgende Struktur der MySQL-Tabelle zugrunde:
mysql> describe counter; +-------+------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+------------------+------+-----+---------+----------------+ | id | int(10) unsigned | | PRI | 0 | auto_increment | | url | char(255) | | | | | | count | int(11) | | | 0 | | +-------+------------------+------+-----+---------+----------------+ 3 rows in set (0.00 sec)
Das Feld url enthält die URL, die aufgerufen wird. Das Feld count enthält die Anzahl der Klicks auf url.
<?php // Zugangsdaten fuer die Datenbank // Diese sollten der Sicherheit halber // in ein Verzeichnis außerhalb des // Document-Root ausgelagert werden. $host = "localhost"; $user = "user"; $pass = "demo_password"; $database = "demo_db"; $table = "counter"; // Die per GET übergebene URL einlesen // In der Praxis wird hier geprüft, ob die URL überhaupt ok ist. $url = $_GET['url']; // Verbindung zum MySQL-Server aufbauen $db = mysql_connect( $host, $user, $pass ); if ( !is_resource( $db ) ) { // handleSqlError() steht symbolisch für die Fehlerbehandlung. handleSqlError(); } // Datenbank auswählen if ( !mysql_select_db( $database, $db ) ) { handleSqlError(); } // URL für den Transport zur Datenbank maskieren $safe_url = "'" . mysql_real_escape_string( $url ) . "'"; // Eintrag fuer die übergebene URL um 1 erhöhen. $query = "UPDATE $table SET count=count+1 WHERE url=$safe_url" $result = mysql_query( $query, $db ) || handleSqlError(); // Noch kein Eintrag für die URL vorhanden? if ( mysql_affected_rows( $db ) == 0 ) { $query = "INSERT INTO $table (url, count) VALUES ($safe_url, 1)"; mysql_query( $query, $db ) || handleSqlError(); } // Auf übergebene URL weiterleiten header( "Location: " . $url ); ?>
Anwendungsbeispiel:
<a href="count.php?url=http://www.martin-jansen.de">Link</a>
Als Parameter für die Datei count.php wird die URL übergeben, auf die weitergeleitet werden soll. In count.php wird nun der Datensatz in der Tabelle, der $url als Wert für das Feld url enthält um 1 erhöht und es wird auf die neue URL weitergeleitet.






