Tutorials

Partnerscript (Mit Referrer) Tutorial

Einloggen
Benutzername:
Passwort:

Passwort vergessen?
Kostenlos
Anmelden
anzeigen
Partnerscript (Mit Referrer)


2441 - ntmb - 04.12.2006 16:10 Uhr - Version: 1 - - verlinken als BB-Code


Da es einige haben wollten dachte ich mir mal das Script zu veröffentlichen.

Hier mal die Datenbanken, die erstellt werden müssen.

Datenbank partner (dort sind alle Partner aufgelistet)
1
2
3
4
5
6
7
8
9
10
11
12
CREATE TABLE `partner` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(20) collate latin1_german2_ci NOT NULL default '',
  `hit` int(11) NOT NULL default '0',
  `hitout` int(5) NOT NULL default '0',
  `hittotal` int(7) NOT NULL default '0',
  `kurzurl` varchar(50) collate latin1_german2_ci NOT NULL default '',
  `url` varchar(60) collate latin1_german2_ci NOT NULL default '',
  `email` varchar(50) collate latin1_german2_ci NOT NULL default '',
  `kick` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
)


Datenbank partner_ip (dort sind alle Ips von den Partnern gespeichert.
1
2
3
4
5
6
7
8
CREATE TABLE `partner_ip` (
  `id` int(11) NOT NULL auto_increment,
  `ip` char(15) collate latin1_german2_ci NOT NULL default '0',
  `time` int(11) NOT NULL default '0',
  `typ` int(1) NOT NULL default '0',
  `partnerid` int(3) NOT NULL default '0',
  PRIMARY KEY  (`id`)
)



So nun kommt das Stück hin welches in jede Datei kommen muss, also eher gesagt das Stück das ausliest ob der Referrer ein Partner ist oder nicht und zudem wird auch nachgeguckt ob die Ip schon in der Datenbank vorhanden ist, fals nicht und der Referrer von einem Partner ist, dann wird ein Eintrag bei partner_ip gemacht und bei bei Partner wird die hit (ins) und hittotal (gesamtins) um eins mehr. Hierzu müsstet ihr noch ein Verbindung zum Mysql erstellen oder ihr hab die Verbing schon offen.

Hier der Code zum connten zum Mysql-Server.
1
2
3
4
<?
mysql_connect
("localhost","user","pw");
mysql_select_db("mysqldatenbank");
?>


Code zum auslesen....
Wie gesagt die muss bei jeder Datei oben eingefügt werden, wo der Referrer von den Partnern gezählt werden sollen.
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
$ref
=str_replace("www."""parse_url($_SERVER[HTTP_REFERER]));
if(
$ref[host]!="deineseite.de"){
    
$mengeref=mysql_num_rows(mysql_query("SELECT id FROM partner_ip WHERE ip='$_SERVER[REMOTE_ADDR]' and typ='1'"));
    if(
$mengeref=="0"){
    
$eintragref=mysql_fetch_array(mysql_query("SELECT id FROM partner WHERE kurzurl='$ref[host]'"));
        if(isset(
$eintragref['id'])){
        
mysql_query("INSERT INTO partner_ip(ip,time,typ,partnerid) VALUES ('$_SERVER[REMOTE_ADDR]','$date','1','$eintragref[id]');");
        
mysql_query("UPDATE partner SET hit=hit+1,hittotal=hittotal+1 WHERE id='$eintragref[id]' LIMIT 1;");
        }
    }
}
?>



Partnerliste (auch hier müsst ihr eine Verbing zum Mysql Server haben)
Dies ist nur die Standard-Version Abänderungen müsstest du schon selber machen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<b>Alle Partnerseiten</b><br><br>
<table width="500" border="0" cellpadding="3" cellspacing="0">
<tr>
<td width="40"><b>Platz</b></td>
<td><b>Seite</b></td>
<td width="80"><b>Rein</b></td>
<td width="80"><b>Raus</b></td>
<td width="80"><b>Rein total</b></td>
</tr>
<? 
$partneraq
=mysql_query("SELECT id,name,hit,hitout,hittotal FROM partner WHERE kick='0' ORDER by hit desc");
$nrrr=1;
while(
$partnera=mysql_fetch_array($partneraq)){
echo 
"<tr>
<td>
$nrrr</td>
<td align=\"left\"><a href=\"partner.php?id="
.$partnera[id]."\"target=\"_blank\" title=\"Hits rein: ".$partnera['hit']." | Hits raus: ".$partnera['hitout']."\"><b>".htmlentities($partnera[name])."</b></a></td>
<td align=\"right\">"
.$partnera['hit']."</td>
<td align=\"right\">"
.$partnera['hitout']."</td>
<td align=\"right\">"
.$partnera['hittotal']."</td>
</tr>\n"
;
$nrrr++;
?></table>


Nun kommt der Stück wo die out zu den Partnerseiten gehen. Hierbei musst auch eine Mysql-Verbindung zum Server offen sein. Diese Datei muss partner.php heißen.
1
2
3
4
5
6
7
8
9
10
<?
$mengeref
=mysql_num_rows(mysql_query("SELECT id FROM partner_ip WHERE ip='$_SERVER[REMOTE_ADDR]' and typ='2' and partnerid='$_GET[id]'"));
if(
$_GET[id]!="" and $mengeref=="0"){ 
mysql_query("UPDATE partner SET hitout=hitout+1 WHERE id='$_GET[id]' LIMIT 1;"); 
mysql_query("INSERT INTO partner_ip(ip,time,typ,partnerid) VALUES ('$_SERVER[REMOTE_ADDR]','".time()."','2','$_GET[id]');");
}
$eintrag=mysql_fetch_array(mysql_query("select id from partner WHERE id='$_GET[id]' LIMIT 1"));
if(
$_GET[id]!=""){ header("Location: $eintrag[url]"); }
else { 
header("Location: http://www.deineseite.de"); }
?>


Hier kommt nun der Teil wo die User/Personen sich als Partner eintragen können.
Auch hier muss eine Verbingund zum Mysql vorhanden sein.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?
if($_POST[typ]=="add"){
$abfrage1=mysql_query("SELECT name FROM partner WHERE name='$_POST[titel]' limit 1");
$eintrag1=mysql_num_rows($abfrage1);
$abfrage2=mysql_query("SELECT url FROM partner WHERE url='$_POST[url]' limit 1");
$eintrag2=mysql_num_rows($abfrage2);

if(
$_POST[titel]==""){ $info="Der Titel deiner Seite wurde nicht angeben."; }
elseif(
$_POST[url]==""){ $info="Du hast deine Homepage Adresse nicht angeben."; }
elseif(
$_POST[email]==""){ $info="1Du hast keine Kontaktemailadresse angeben."; }
elseif(
substr($_POST[url], 07)!="http://"){ $info="Du hast eine ungültige Homepage Adresse angeben."; }
elseif(!
eregi("[\.-_a-z0-9]+.[a-z]{2,3}",substr($_POST[url], 7))){ $info="Du hast eine ungültige Homepage Adresse angeben."; }
elseif(!
eregi("^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$"$_POST[email])) { $info="Du hast keine Kontaktemailadresse angeben."; }
elseif(
$eintrag2>0){ $info="Die Homepage Adresse ist schon als Partner eingetragen."; }
elseif(
$eintrag1>0) { $info="Der Titel ist schon leider vorhanden."; }
else{
$refneu=str_replace("www."""parse_url($_POST[url]));
mysql_query("INSERT INTO partner(name,kurzurl,url,email) VALUES('$_POST[titel]','$refneu[host]','$_POST[url]','$_POST[email]');");
$_GET[status]="1";
}
}
if(
$_GET[status]!="1"){
?>
<form name="tut" action="" method="post" style="margin:0px">
<br><table width="300" border="0" cellpadding="2" cellspacing="0" class="table">
<tr>
<td class="table2" width="20%"><div align="left"><b>Titel:</b></div></td>
<td class="table2" width="80%"><div align="left"><input type="hidden" name="typ" value="add"><input type="text" name="titel" maxlength="15" value="<? print $_POST[titel?>" class="feld_1"></div></td>
</tr><tr>
<td class="table2"><div align="left"><b>Url:</b></div></td>
<td class="table2"><div align="left"><input type="text" name="url" maxlength="30" value="<? print $_POST[url?>" class="feld_1"> Format: http://www.deineseite.de</div></td>
</tr><tr>
<td class="table2"><div align="left"><b>Email:</b></div></td>
<td class="table2"><div align="left"><input type="text" name="email" maxlength="50" value="<? print $_POST[email?>" class="feld_1"> Für Kontakt</div></td>
</tr><tr>
<td class="table2" colspan="2"><div align="left"><font style="color:red"><? echo $info?></font><br><input type="submit" value="Als Partner eintragen" style="width:250px"></div></td>
</tr>
</table></form>
<?
}
else {
echo 
"<br><br> <b>Du wurdest als Partner eingetragen. :-)</b><br><a href=\"partner_alle.html\">weiter</a>";
}
?>



Hier noch zum Schluss das Stück wo Die Partner ausgelesen werden (Partnerliste TOP 15). Auch hier sollte vorher eine Verbing zu Mysql offen sein.
1
2
3
4
5
6
7
8
9
<?
$partnertop
=1;
$partnerq=mysql_query("SELECT id,hit,name FROM partner WHERE kick='0' ORDER by hit desc limit 0,25");
while(
$partner=mysql_fetch_array($partnerq)){
if(
$partnertop<=10){ $partnertext="<b>".htmlentities(substr($partner[name],0,19))."</b>"; }
else{ 
$partnertext=htmlentities(substr($partner[name],0,19)); }
echo 
"<a href=\"partner.php?id=".$partner[id]."\" class=\"menu1\" target=\"_blank\" title=\"in: ".$partner['hit']."\"><font class=\"menu1\">$partnertext</font></a>\n";
$partnertop++;
}


Dies stellt alles nur das Grundgerüst dar das andere müsstet ihr halt noch abändern und hinzufügen.

Zusatz:
Hier nochmal das Script, welches nachguckt ob die Einträge älter sind als 7 Tage, wenn dies eintrift, dann werden diese Einträge gelöscht, zusätzlich wird danach nachgezählt vie viele ins (Typ 1) und outs (Typ 2) der Partner hat und dies wird dann bei den Partner jenachdem abgeändert. Dieses Datei solltet ihr per Cronjob/Crontab ausführen lassen, je öfter diese ausgeführt wird desto genauer/aktueller sind die Werte (ins,out).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
mysql_connect
("localhost","user","pw");
mysql_select_db("mysqldatenbank");

$date=time();
$timein=$date-604800// 1 Woche
mysql_query("DELETE FROM partner_ip WHERE time<='$timein';"); // in
mysql_query("DELETE FROM partner_ip WHERE time<='$timein';"); // out

$select=mysql_query("select id from partner");
while(
$eintrag=mysql_fetch_array($select)){ 
$updatein=mysql_num_rows(mysql_query("SELECT id FROM partner_ip where partnerid='$eintrag[id]' and typ='1'"));
$updateout=mysql_num_rows(mysql_query("SELECT id FROM partner_ip where partnerid='$eintrag[id]' and typ='2'"));
mysql_query("UPDATE partner SET hit='$updatein',hitout='$updateout' WHERE id='$eintrag[id]' LIMIT 1");
}
?>


Noch eine Info:
Fals ihr einen Partner kicken wollt, weil dieser sich nicht so benimmt wie er es soll, dann könnt ihr bei der Datenbank partner seine Id auswählen und bei ihm den Wert 1 bei der Spalte kicken setzen, dies halt zu Folge das er sich nicht nochmal mit diesen Domainnamen eintragen kann, da ja schon eingetragen ist und zudem wird er nicht mehr als Partner aufgelistet, da nur Partner ausgelesen werden die bei der Spalte kick den Wert 0 haben. Smily NR:7

Wünsche euch noch viel Spass mit dem Script und über ein Feedback würde ich mich freuen Smily NR:8

mfg Eugen

Mitglieder-Kommentare


Es sind leider noch keine Einträge vorhanden!

Nur registrierte Mitglieder könnten einen Kommentar schreiben.

Melde dich doch ganz einfach an, es ist kostenlos. :-)