Weiterleitungen für Werbemittel festlegen

Standardmäßig führen alle Klicks auf Werbemittel zur Startseite Ihres Partnerprogramms. Mit Hilfe der nachfolgenden Anleitung können Sie über das Admin-Menü für jedes eingetragene Werbemittel eine Zieladresse angeben, auf die Interessenten nach Klick auf ebenjenes Werbemittel weitergeleitet werden. Dies ermöglicht es, unterschiedliche Werbemittel auf zugehörige Produkt-Detail-Seiten weiterzuleiten.

Datenbankerweiterung

Im ersten Schritt erweitern wir die Datenbank-Tabelle pay_werbemittel um eine Spalte zur Speicherung des Weiterleitungsziels. Führen Sie hierfür folgendes SQL-Statement in der an das Partnerprogramm angebundenen Datenbank aus, beispielsweise via phpMyAdmin:

 ALTER TABLE `pay_werbemittel` ADD `wl` VARCHAR( 255 ) NOT NULL ; 

Erweiterung des Admin-Menüpunkts Werbemittel

Im zweiten Schritt erweitern wir den Admin-Menüpunkt Werbemittel der PayPerSale-Software um die Möglichkeit zur Angabe der Weiterleitungsadresse. Öffnen Sie hierfür die Datei ./admin/admin.php mit einem Texteditor und ersetzen Sie die Zeilen je nach PHP-Version wie nachfolgend beschrieben.

Bis PHP 5.6

Für den Fall, dass das Partnerprogramm tatsächlich noch unter einer derart veralteten PHP-Version läuft, finden Sie nachfolgend die Anpassungen für Versionen bis einschließlich PHP 5.6.

 $a=mysql_query("SELECT banner from pay_werbemittel where id=".(int)$_GET['id']) or die(mysql_error()); 
 list($name)=mysql_fetch_row($a);  

durch

 $a=mysql_query("SELECT banner,wl from pay_werbemittel where id=".(int)$_GET['id']) or die(mysql_error()); 
 list($name,$wl)=mysql_fetch_row($a);  

sowie die Zeile

  mysql_query("Insert INTO pay_werbemittel(banner) VALUES('".dbclean($name)."')");  

durch

 mysql_query("Insert INTO pay_werbemittel(banner,wl) VALUES('".dbclean($name)."','".dbclean($_POST['wl'])."')");  

Des Weiteren ersetzen Sie

 if (isset($_FILES['probe'])){

durch nachfolgende Passage:

  if (isset($_POST['wl']) && !isset($_FILES['probe'])){ 
     mysql_query("update pay_werbemittel set wl=".dbclean($_POST['wl'])." where id=".(int)$_POST['id']); 
     Header("Location:admin.php?act=banner_edit&id=".$_POST['id']); 
     die; 
 }elseif (isset($_FILES['probe'])){

Ab PHP 7.0

Davon ausgehend, dass Sie eine aktuelle PHP-Version und die damit korrespondierenden Dateien der PayPerSale-Software einsetzen, sind diese Anpassungen vorzunehmen:

 $a=mysqli_query($con, "SELECT banner from pay_werbemittel where id=".(int)$_GET['id']) or die(mysqli_error($con)); 
 list($name)=mysqli_fetch_row($a); 

ersetzen durch

 $a=mysqli_query($con, "SELECT banner,wl from pay_werbemittel where id=".(int)$_GET['id']) or die(mysqli_error($con)); 
 list($name,$wl)=mysqli_fetch_row($a);  

sowie die Zeile

  mysqli_query($con, "Insert INTO pay_werbemittel(banner) VALUES('".dbclean($name)."')");  

durch

 mysqli_query($con, "Insert INTO pay_werbemittel(banner,wl) VALUES('".dbclean($name)."','".dbclean($_POST['wl'])."')");  

Des Weiteren ersetzen Sie

 if (isset($_FILES['probe'])){

durch nachfolgende Passage:

  if (isset($_POST['wl']) && !isset($_FILES['probe'])){ 
     mysqli_query($con, "update pay_werbemittel set wl=".dbclean($_POST['wl'])." where id=".(int)$_POST['id']); 
     Header("Location:admin.php?act=banner_edit&id=".$_POST['id']); 
     die; 
 }elseif (isset($_FILES['probe'])){

Alle PHP-Versionen

Unabhängig davon, welcher Teil der für Sie relevante war, geht es mit Speicherung und Upload weiter. Das heißt, nach erfolgter Änderung speichern Sie die Datei und laden Sie sie auf Ihren Webspace.

Nachdem nun die Datenbank-Befehle in den PHP-Code eingefügt wurden, müssen noch die HTML-Templates erweitert werden. Öffnen Sie hierfür zunächst die
Datei ./admin/templates/werbemittel_edit.html mit einem Texteditor. Fügen Sie unterhalb der Zeile

 </form>

die folgenden Zeilen ein:

  <form action="admin.php?act=werbemittel_eintragen" method="post"> 
 <table class="admin_table" cellspacing="0"> 
     <tr> 
         <td>Weiterleitung</td> 
     </tr> 
     <tr> 
         <td class="bg2"><input name="wl" type="url" value="{$wl}" class="w50" /> <input type="submit" value="Speichern" /></td> 
     </tr> 
 </table> 
 <input name="id" type="hidden" value="{$_GET['id']}" /> 
 </form>

Speichern Sie die vorgenommenen Änderungen an der Datei und laden Sie sie auf Ihren Server. Damit Weiterleitungsadressen nicht nur bei der Bearbeitung vorhandener Werbemittel, sondern gleich beim Hinzufügen neuer Werbemittel angegeben werden können, muss die ./admin/templates/werbemittel.html-Datei bearbeitet werden. Ändern Sie die Zeile

 <input name="probe" type="file"/> <input type="submit" value="Hochladen" />

in

 <input name="probe" type="file"/> <input name="wl" type="url"/> <input type="submit" value="Hochladen" />

Speichern Sie die geänderte Datei und laden Sie sie auf den Server.

Erweiterung des Partner-Menüpunkts Werbemittel

Mit der geschilderten Vorgehensweise wird die Weiterleitungsadresse direkt in den Werbemittelcode eingefügt, den die Partner in ihre Website einfügen können. Dabei ist in der Datei ./login_in.php ist der Abschnitt

 $werbemittel[$inf[0].'x'.$inf[1]][]="<p class=\"center\"><img src=\"./banner/".$werbe['banner']."\" alt=\"\" /><br /> 
 <textarea cols=\"60\" rows=\"3\" onfocus=\"this.select();\">&lt;a href=\"".$daten['url']."/?".$_SESSION['ID']."\" target=\"_blank\"&gt;&lt;img src=\"".$daten['url']."/banner/".$werbe['banner']."\" style=\"width:".$inf[0]."px;height:".$inf[1]."px;border:0;\"&gt;&lt;/a&gt;</textarea>  
 </p>";  

wie folgt zu erweitern:

  if (!empty($werbe['wl'])){ 
     $wl='&amp;wl='.urlencode($werbe['wl']); 
 }else{ 
     $wl=''; 
 } 
 $werbemittel[$inf[0].'x'.$inf[1]][]="<p class=\"center\"><img src=\"./banner/".$werbe['banner']."\" alt=\"\" /><br /> 
 <textarea cols=\"60\" rows=\"3\" onfocus=\"this.select();\">&lt;a href=\"".$daten['url']."/?".$_SESSION['ID'].$wl."\" target=\"_blank\"&gt;&lt;img src=\"".$daten['url']."/banner/".$werbe['banner']."\" style=\"width:".$inf[0]."px;height:".$inf[1]."px;border:0;\"&gt;&lt;/a&gt;</textarea>  
 </p>";

Die beschriebene Vorgehensweise fügt das Weiterleitungsziel als Parameter in den Werbemittel-Link ein. Somit ist die Weiterleitungsadresse für den Partner manipulierbar. Sofern dies unerwünscht ist, können Sie mit entsprechenden Programmierkenntnissen die Werbemittel-ID als Parameter übergeben und die zugehörige Link-URL in der ref.php-Datei anhand der ID ausgelesen. Auf diese Weise kann auch die Weiterleitungs-Adresse für bereits von Partnern eingebundene Werbemittel aktualisiert werden – ohne, dass die Partner den Code austauschen müssten.

Implementierung der Weiterleitung

Im vierten und letzten Schritt richten wir die Weiterleitung selbst ein. Öffnen Sie hierfür die ref.php-Datei und ersetzen Sie die Zeile

 if (strpos($_SERVER['PHP_SELF'],"ref.php")!==false){  

durch folgenden Code:

 if (isset($_GET['wl'])){ 
     Header("Location:".urldecode($_GET['wl'])); 
     die; 
 }elseif (strpos($_SERVER['PHP_SELF'],"ref.php")!==false){

Nach Speicherung und Upload der Datei testen Sie bitte, ob die Weiterleitungsziele wie gewünscht funktionieren. Dies können Sie beispielsweise durchführen, indem Sie sich in den Partnerbereich einloggen.