Nur die Referrer von Partnerseiten logen

RageNo1

Erfahrenes Mitglied
Hallo,
Ich habe ein sehr gutes Referrer Script von Plebian.com. Dort werden die Seiten gelogt und in einer Tabelle abgelegt. Hier ist die Ausgabe des Scripts..

Nun habe ich folgendes vor, ich habe in einer anderen Tabelle nun alle Partnerseiten abgelegt. Dazu habe ich dieses Script angefertigt:

PHP:
<?php

    $host  = "localhost";
    $db    = "******";
    $user  = "******";
    $pass  = "******";

if($name AND $address AND $addressout)
{
mysql_connect($host, $user, $pass);
mysql_select_db($db);
mysql_query("INSERT INTO partnersites (name,address,addressout) VALUES ('$name','$address','$addressout')");

echo "partner wurde eingetragen";
}

?>

<html>
<body>
<form name="add" method="post" action="<?php echo $PHP_SELF; ?>">
name: <input name="name" type="text" id="name" value="<?php echo $name; ?>"><br>
adress (domain.de): <input name="address" type="text" id="address" value="<?php echo $address; ?>"><br>
adressout (http://www.domain.de): <input name="addressout" type="text" id="addressout" value="<?php echo $addressout; ?>"><br>
<input type="submit" name="Submit" value="partner eintragen">
</form>
</body>
</html>

Nun möchte ich, das alle eingetragenen Partnerseiten ausgegeben werden und nach den hits in angezeigt werden. Ich muss also nun die Partnerseiten mit den gelogten Referrer abgleichen und entsprechend auflisten. Ich weiss allerdings absolut nicht, ob und wie man das Realiseren kann.

Hier noch die Ausgabe des Referrerscripts:

PHP:
<?php

require_once('config.php');

/*
 * edit me
 */
echo "<h3>referral stats for the last <b>$number_of_days</b> days</h3>";
echo '<table><tr><td><b>referrer</b></td><td><b>hits in</b></td><td><b>hits out</b></td></tr>';

$c=mysql_query("select max(id) as id,url,sum(hitsout) as hitsout,count(*) as hitsin from TW_referers group by url having hitsin >= $minimum_hits order by hitsin desc") or die(mysql_error());
if(mysql_num_rows($c)>0)
{
	while($d=mysql_fetch_object($c))
	{
		$d->url=stripslashes($d->url);

		$url=(array_key_exists($d->url,$url_replace))?$url_replace[$d->url]:$d->url;
		
		/*
		 * edit me
		 *
		 * $d->url == url
		 * $url == title
		 * $d->hitsin == hits in from the site
		 * $d->hitsout == hits sent out to site
		 *
		 * to count hits out, you must link to; go.php?$d->id
		 */
		echo "<tr><td><a href=\"go.php?$d->id\" title=\"$d->url\" target=\"$d->id\">$url</a></td><td align=center>$d->hitsin</td><td align=center>$d->hitsout</td></tr>";
	}
}
else
{
	echo '<tr><td colspan=3><i>no referrers yet</i></td></tr>';
}

echo '</table>';

?>

Das ganze hat den Sinn, das auch Partnerseiten angezeigt werden, von denen kein Besucher gekommen ist und logischerweise nicht in den Referrern aufgeführt ist.
Also müssen die Referrer mit den Partnerseiten verglichen werden. Anschließend sollen die Partner mit den meisten Referrer In oben stehen.

Ich hoffe ihr versteht was ich vorhabe und könnt mir helfen.
Mfg Ragey
 
Es ist auch überhaupt nicht sinnvoll wie der Script abarbeitet. Der Grund ist ein recht simpler:

Dein Script prüft garnicht ob überhaupt ein Referer vorhanden ist, geschweige denn was für einer.

Ich würde erst mal den Referer zum host splitten. Und dann erst prüfen ob ein Eintrag mit gleichem Host in der DB bereits vorhanden ist. Wenn nicht trägst du ihn einfach in die DB ein. Und falls doch erhöhst du einfach nur den Wert.

Dein Script schreibt einfach jeden Referer in die DB. Die ist nur dann sinnvoll wenn du auch noch das Datum usw.. mitloggen willst.
 
Also mit dem oberen Script, trage ich nur die Partner in die Datenbank ein.
Das untere Script liest die gelogten Referrer aus und listet sie nach "Hit ins" auf.
Dieses ist aber ein eigenständiges Script an dem ich nichts machen will.

Was ich mir vorstelle ist wie folgt:
Hier habe ich nun noch ein Script geschrieben was die
Tabelle mit den Partnern ausliest und anzeigt.
PHP:
<?php

require_once('config.php');

mysql_connect($host, $user, $pass); 
mysql_select_db($db); 

$abfrage = "SELECT * FROM partnersites"; 
$result = mysql_query($abfrage); 

while ($show = mysql_fetch_array($result))

echo "<a href='".$show["addressout"]."'>".$show["name"]."</a><br>"; 

?>

Nun zum eigentlichen Problem:
Ich möchte gerne das 2. Script aus meinem ersten Post (das liest alle gelogten Referrer aus) mit diesem Ausgabescript hier Kombinieren.

Dieses Ausgabescript (aus diesem Post) soll nun zusätzlich auslesen wieviel Besucher von einer Seite kommen und es dann zu der entsprechenden Partnerseite zuordnen.
Also bei den Partnerseiten steht nun z.B. mittas.de
dann soll nun in der anderen Taballe überprüft werden, wieviele
Besucher von mittas.de gekommen sind.

Anschließend sollen die Partnerseiten nach den geschickten Besuchern aufgelistet werden.

Ich weiss nicht wie ich es erklären soll ich hoffe Ihr versteht was ich meine.
Oben im ersten Post habe ich extra das Ausgabescript gepostet womit die Referrer ausgelesen werden. Dieser Teil soll Kombiniert werden mit meinem Ausgabescript.

Mfg Ragey
 
Wenn Du Dich ein wenig damit beschäftigen kannst/willst, schau Dir mal mein Download-Protector Tutorial an. Darin findest Du einige Gedankenansätze zum Thema Referer und entsprechende Weichen im Script.
 
Ich muss doch logischerweise den folgenden Teil in das Ausgabescript einbauen:
PHP:
$c=mysql_query("select max(id) as id,url,sum(hitsout) as hitsout,count(*) as hitsin from TW_referers group by url having hitsin >= $minimum_hits order by hitsin desc") or die(mysql_error()); 
if(mysql_num_rows($c)>0) 
{ 
    while($d=mysql_fetch_object($c))

Kann ich überhaupt mit einem Ausgabescript zwei Tabellen auslesen?

Nachtrag:
Wenn ich dies Zeile nehme, werden die Referrer nach der url aufgelistet:
SELECT * FROM `TW_referers` ORDER BY `url` DESC LIMIT 7710 , 30

Dann sind z.B. 10 Zeilen domain.com, danach 13 Zeilen Domain2.com, usw.
Wie ereiche ich, das er die Zeilen von gleichen URLs zusammenzählt und dem Beispiel nach 10 bzw. 13 auswertet. Dafür muss ja erstmal erkannt werden, das es die gleiche Adresse ist.
 
Zuletzt bearbeitet:
RageNo1 hat gesagt.:
Wie ereiche ich, das er die Zeilen von gleichen URLs zusammenzählt und dem Beispiel nach 10 bzw. 13 auswertet. Dafür muss ja erstmal erkannt werden, das es die gleiche Adresse ist.

Du schreibst die URLs in ein Array und verwendest die Array Funktionen von PHP um dein Problem zu lösen. Ein Lösungsansatz ist folgender:

PHP:
<?php
$array = array ("http://www.link.de/referer.html", "http://www.usemich.org/bloarg.php", "http://www.link.de/referer.html", "http://nix.gescheites.de/linkliste.htm", "http://nix.gescheites.de/linkliste.htm");
print_r(array_count_values ($array));
?>

Ausgabe:
Code:
Array
(
    [http://www.link.de/referer.html] => 2
    [http://nix.gescheites.de/linkliste.htm] => 2
    [http://www.usemich.org/bloarg.php] => 1
)

Referenz:
http://de3.php.net/manual/de/function.array-count-values.php

Es sind noch andere Lösungen möglich (z. B. Regex oder Userdefinierte Array-Funktionen nutzen). Diese sollte aber die am wenigsten aufwändige sein :)
 
Zurück