PHP Affiliate Count
Affiliate ManagerTutorials » PHP/MySQL Tutorials » Affiliate Manager
Affiliate Manager - Tutorial
In diesem Tutorial moechte ich euch zeigen wie ihr eure Affiliates, mit Hilfe einer MySql Datenbank, ganz easy verwalten koennt.Was wird benoetigt?
- Webspace der PHP unterstuetzt
- eine MySql Datenbank / PHPMyAdmin
- Php/MySQL Basiskenntnise
Step 1
Wir erzeugen eine neue Tabelle mit Hilfe von PHPMyAdmin ...
CREATE TABLE `affis` (
`id` int(5) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`button` varchar(255) NOT NULL default '',
`view` int(5) NOT NULL default '0',
PRIMARY KEY (`id`)
);
`id` int(5) NOT NULL auto_increment,
`name` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`url` varchar(255) NOT NULL default '',
`button` varchar(255) NOT NULL default '',
`view` int(5) NOT NULL default '0',
PRIMARY KEY (`id`)
);
Step 2 - config.inc.php
Fangen wir mit dem Verbindungsaufbau zur Datenbank an, dafuer benoetigen wir die Datei config.inc.php
<?php // config.inc.php //--------------------------- $host = "localhost"; // Adresse des Datenbankservers, fast immer localhost $user = " "; // Dein MySQL Benutzername $pass = ""; // Dein MySQL Passwort $dbase = " "; // 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."); ?>
Die Variable $connection definiert die Verbindung zur Datenbank. Der Befehl mysql_connect oeffnet eine Verbindung zum MySQL-Server. Sollte die Verbindung nicht hergestellt werden koennen, so wird das Script, mit OR DIE abgebrochen und eine Fehlermeldung wird ausgegeben.
Die Variable $db definiert die Auswahl der Datenbank, mit dem Befehl mysql_select_db wird die Datenbank dann ausgewaehlt, sollte dies nicht moeglich sein wird eine Fehlermeldung ausgegeben.
Step 3 - affis.php
Die Datei affis.php ist die 'Ausgabeseite', welche alle vorhandenen Affiliates, sowie deren Aufrufe, anzeigt.
<?php // affis.php include('config.inc.php'); // DB Verbindung einbinden echo "<h1>All Affiliate</h1>"; $abfrage = mysql_query("SELECT id,name,view,button FROM affis"); while($row = mysql_fetch_object($abfrage)){ ?> <div style="float: left; margin: 0px 25px 10px 15px; width: 225px; font: normal 12px verdana, tahoma, sans-serif; text-align: left; border: 1px solid #C7D0D9; background-color: #E2E7EB"> <span style="float: left; padding-right: 5px;"> <a href="go.php?id=<?= $row->id; ?>"><img border="0" src="<?= $row->button; ?>" width="88" height="31" alt="<?= $name; ?>" /></a> </span> <a href="go.php?id=<?= $row->id; ?>"><?= $row->name; ?></a><br /> Visits: <?= $row->view; ?> </div> <?php } // while ?>
Step 4 - go.php
Die Datei go.php zaehlt die Klicks und leitet dann auf die entsprechende URL weiter...
<?php // go.php include('config.inc.php'); // DB Verbindung einbinden $id = mysql_real_escape_string($_GET['id']); // Variable definieren if(!isset($_GET['id'])){ // Parameteruebergabe pruefen echo "Es wurde keine ID uebergeben!"; }else{ // sofern Parameter uebergeben wurde // DB Abfragen $abfrage = mysql_query("SELECT url FROM affis WHERE id='$id'"); $row = mysql_fetch_object($abfrage); //setzt view+1 und leitet den Besucher weiter $update = mysql_query("UPDATE affis SET view = view+'1' WHERE id='$id'"); if($update){ header("Location: $row->url"); }else{ echo "Es ist ein Fehler aufgetreten"; } } // close ID uebergeben ?>
Hier wird als erstes die DB Verbindung eingebunden, dann wird ueberprueft ob eine ID per GET uebergeben wurde, sollte dies nicht der Fall sein, wird eine Fehlermeldung ausgegeben. Sofern denn eine ID uebergeben wurde, wird die passende URL dazu aus der DB ausgelesen und anschliessend wir der Klick dann mittels mysql_query("UPDATE affis SET view = view+'1' WHERE id='$id'"); um eines erhoeht, es folgt mittels header("Location: $row->url"); die Weiterleitung auf die entsprechende Seite.
Step 5 - admin.php
Eigentlich wuerde das ja jetzt schon ausreichen, wir haben die Ausgabe der Daten(affis.php) und die Zaehlung der Klicks(go.php), die Daten der Affiliates koennten auch per Hand in die Datenbank eingetragen werden,
aber dann waer es ja nicht easy, sondern kompliziert ;)
Kommen wir also nun zum 'Adminpanel' der Datei admin.php...
<?php // admin.php session_start(); // startet die Session //---------------------- Logindate --------------------------------- // $grafixx_name = "USERNAME"; // Loginname angeben $grafixx_pass = "PASSWORT"; // Loginpasswort angeben //------------------------------------------------------------------ // ?> <!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 - Affiliates</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 - Affiliates</h1> <br /> <?php // ------------------------------------------------------------------------------------------------------ // WENN NICHT EINGELOGGT // ------------------------------------------------------------------------------------------------------ if(!isset($_SESSION['login'])){ // Wenn nicht eingeloggt if(isset($_POST['admin_login'])) { // sofern submit gedrueckt $login_name = strip_tags($_POST['admin_name']); // Variable definieren $login_pass = strip_tags($_POST['admin_pass']); // Variable definieren if(empty($login_name)) { $message .= 'Bitte geben Sie ihren Usernamen ein ... <br />'; $error = "1"; } if(empty($login_pass)) { $message .= 'Bitte geben Sie ihr Passwort ein ... <br />'; $error = "1"; } if($login_name != $grafixx_name OR $login_pass != $grafixx_pass){ $message .= 'Zugriff verweigert ... <br />'; $error = "1"; } if($error != "1"){ // session handle----------------------------- $_SESSION['login'] = $_SERVER['REMOTE_ADDR']; echo "<meta http-equiv=\"refresh\" content=\"0; URL=admin.php\">"; } if($error == "1"){ echo "<h1>Error ...</h1>\n <p>$message</p>"; } } // close isset [admin_login] ?> <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: </label> <input type="password" name="admin_pass" style="width: 250px" /> <br /><br /> <input type="submit" value=" Login " name="admin_login" /> </fieldset> </form> <?php // ------------------------------------------------------------------------------------------------------ // WENN EINGELOGGT // ------------------------------------------------------------------------------------------------------ }else{ include('config.inc.php'); // DB Verbindung einbinden // DB Abfragen $abfrage = mysql_query("SELECT id, name, url, view FROM affis"); echo "<table width=\"650\" cellpadding=\"3\" class=\"tab\">\n"; echo "<tr>\n <th width=\"15\">ID</th>\n"; echo "<th>Name</th>\n"; echo "<th width=\"200\">Website</th>\n"; echo "<th width=\"55\">Klicks</th>\n"; echo "<th width=\"95\">Bearbeiten</th>\n </tr>\n"; // Affiliates ausgeben while($row = mysql_fetch_object($abfrage)){ $zeile++; // jede 2te Zeile einfaerben if ($zeile % 2 == 0) { echo "<tr>"; } else { echo "<tr bgcolor=\"#f5f5f5\">"; } echo "<td align=\"right\">".$row->id."</td>\n"; echo "<td>".$row->name."</td>\n"; echo "<td>".$row->url."</td>\n"; echo "<td align=\"center\">".$row->view."</td>\n"; echo "<td align=\"center\">\n"; echo "<a href=\"admin.php?action=loeschen&id=".$row->id."\">Delete</a> | \n"; echo "<a href=\"admin.php?action=edit&id=".$row->id."\">Edit</a>\n"; echo "</td>\n"; echo "</tr> \n"; } // close while echo "</table><br />\n"; echo "<p><a href=\"admin.php?action=new\" class=\"button\">Neuen Affiliate anlegen</a></p>"; // LINK zum AFFI anlegen // ------------------------------------------------------------------------------------------------------ // AFFILLIATE NEW - AFFILIATE EDIT // ------------------------------------------------------------------------------------------------------ $id = mysql_real_escape_string($_GET['id']); // Variable definieren $action = strip_tags($_GET['action']); // Variable definieren if($action == 'edit' OR $action == 'new') { // Sofern nicht geloescht werden soll ... if(isset($_GET['id'])){ // Parameteruebergabe pruefen // DB Abfrage $abfrage = mysql_query("SELECT name, email, url, button FROM affis WHERE id='$id'"); $row = mysql_fetch_array($abfrage); $name = $row['name']; // Variable definieren $email = $row['email']; // Variable definieren $url = $row['url']; // Variable definieren $button = $row['button']; // Variable definieren } // if $_GET 'id' // ------------------------------------------------------------------------------------------------------ // SUBMIT GEDRUECKT // ------------------------------------------------------------------------------------------------------ if(isset($_POST['submit'])){ $name = mysql_real_escape_string($_POST['name']); // Variable definieren $email = mysql_real_escape_string($_POST['email']); // Variable definieren $url = mysql_real_escape_string($_POST['url']); // Variable definieren $button = mysql_real_escape_string($_POST['button']); // Variable definieren // Check alle Felder ausgefuellt if($name == '' || $button == '' || $url == ''){ echo "<div class=\"error\"><h2>Error ...</h2>\n <p>Bitte Danke alle Felder ausfuellen ...</p>\n</div>\n"; }else{ // Wenn alles ausgefuellt wurde if($action == "new"){ // ------------------------------- Wenn action = new $eintragen = mysql_query("INSERT INTO affis (name, email, button, url) VALUES ('$name','$email','$button','$url')"); }// close new if($action == "edit") { $eintragen = mysql_query("UPDATE affis SET name='$name', email='$email', url='$url', button='$button' WHERE id='$id'"); } // close edit if ($eintragen){ echo "<meta http-equiv=\"refresh\" content=\"0; URL=admin.php\">"; // Weiterleitung => Admin }else{ echo "<p>Es ist ein Fehler aufgetreten ".mysql_error()."</p>"; } // close $eintragen } // close Check alle Felder ausgefuellt }// close Submit // ------------------------------------------------------------------------------------------------------ // FORMULAR // ------------------------------------------------------------------------------------------------------ if(isset($_GET['id'])) { $headline = "Edit Affiliate"; $pfad = "new_affi.php?action=edit&id=".$id.""; }else{ $headline = "New Affiliate"; $pfad = "new_affi.php?action=new"; } ?> <form action=" " method="post"> <fieldset> <legend><?= $headline; ?></legend> <label>Name:</label> <input type="text" name="name" value="<?= $name; ?>" style="width: 250px" /> <br /> <label>E-Mail:</label> <input type="text" name="email" value="<?= $email; ?>" style="width: 250px" /> <br /> <label>Website:</label> <input type="text" name="url" value="<?= $url; ?>" style="width: 250px" /> <br /> <label>Button:</label> <input type="text" name="button" value="<?= $button; ?>" style="width: 250px" /> <br /><br /> <input type="submit" value="Abschicken" name="submit" class="button" /> </fieldset> </form> <?php } // close action // ----------------------------------------------------------------------------------------------- // Affiliate LOESCHEN //------------------------------------------------------------------------------------------------ if($action == 'loeschen'){ // Wenn geloescht werden soll $mode = strip_tags($_GET['mode']); if(isset($_GET['mode'])){ // Wenn Parameter uebergeben wurde // Affiliate loeschen $loeschen = mysql_query("DELETE FROM affis WHERE id='$id'"); if($loeschen){ // Sofern Loeschen erfolgreich echo "<meta http-equiv=\"refresh\" content=\"0; URL=admin.php\">"; // Weiterleitung => Admin }else{ // Wenn nicht erfolgreich echo "<p>Beim Loeschen ist ein Fehler aufgetreten ".mysql_error()."</p>"; } // close $loeschen } else { // Abfragen ob auch wirklich geloescht werden soll echo "<p class=\"error\">Ganz sicher loeschen? <br /><br />\n"; echo "<a href=\"admin.php?action=loeschen&mode=del&id=$id\" class=\"button\">Ja</a>\n"; echo " <a href=\"admin.php\" class=\"button\">Nein</a>\n </p>"; } }// close loeschen // ----------------------------------------------------------------------------------------------- // LOGOUT //------------------------------------------------------------------------------------------------ if($action == 'logout'){ // Logout session_unset(); // Sessionvariable loeschen session_destroy(); // Session zerstoeren echo "<meta http-equiv=\"refresh\" content=\"0; URL=admin.php\">"; // Weiterleitung => Login }// close logout } // close nicht eingeloggt echo "<h3>Grafixx - Affiliates <a href=\"http://alice-grafixx.de\">Alice-Grafixx.de</a> ".date('Y')." | "; if(isset($_SESSION['login'])){ // Admin Logout echo "<a href=\"admin.php?action=logout\">logout</a>"; } ?> </h3> </div> </body> </html>
Hier starten wir als erstes eine Session, dies wird fuer den Login benoetigt,
anschliessend werden die LOGIN-DATEN hinterlegt,
hier sollte die Variable $grafixx_name und die Variable $grafixx_pass, mit dem gewuenschten Username und Passwort bestueck werden!
Darauf folgt der Login-Bereich ...
Anschliessend listen wir alle existierenden Affiliates auf, bestueckt jeweils mit einem Link zum Loeschen und Editieren,
dann wird ein Link ausgegeben, der es uns ermoeglicht einen neuen Affiliate einzutragen.
Es folgt anschliessend dann der Bereich, der fuer den Neueintrag sowie als auch die Bearbeitung eines bestehenden Eintrags zustaendig ist, Naeheres hierzu erspaere ich mit der Einfachheit halber.
Danach kommt den der Teil, der fuer das Loeschen eines Affiliates zustaendig ist und ganz zum Schluss kommt dann der Teil zum Ausloggen...
Das waer es dann mal im Grossen und Ganzen, wir haben nun 4 Dateien
config.inc.php - Stellt die Verbindung zur DB her
affis.php - listet alle Affiliates auf
go.php - zaehlt die Aufrufe und leitet auf die URL weiter
admin.php - Adminpanel | Listet alle Affiliates zur Bearbeitung
Wichtig!
Damit das Script reibungslos funktioniert, muss in der php.ini short_open_tag = ON sein,
ansonsten muss haendisch ueberall die Ausgabe von Variablen nach dem Schema <?= $xxx; ?>
umgeaendert werden in <?php echo $xxx; ?>
Tutorial Dateien downloaden
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 ...