Seite 1 von 1

Statistik - Informationen in die Datenbank schreiben?!

Verfasst: 20.07.2005 23:13
von mgutt
Ich wollte eine kleine Statistik bauen, in der die referer der Besucher in einer Liste angezeigt werden.

Dafür gibt es nun eine Tablelle namens "phpbb_logdatei". In der constants.php habe ich diese geaddet und als "XSTATS_TABLE" definiert.

dann wollte ich diesen code der page_header.php hinzufügen, aber er schreibt nichts in die tabelle:

Code: Alles auswählen

$xreferer = $_SERVER['HTTP_REFERER'];
$xbrowser = $_SERVER['HTTP_USER_AGENT'];
$xip = $_SERVER['REMOTE_ADDR'];
$xwebseite = $_SERVER['PHP_SELF'];

$sql  = "INSERT INTO ".XSTATS_TABLE ." (referer, browser, ip, webseite) VALUES ('$xreferer', '$xbrowser', '$xip', '$xwebseite')";
wo ist der denkfehler?

Verfasst: 26.07.2005 13:07
von mgutt
*bump*

Verfasst: 27.07.2005 16:26
von mgutt
*bump*

Verfasst: 27.07.2005 16:28
von mristau2k5
hast auch ein

Code: Alles auswählen

mysql_query($sql);
drin? bzw. die spezielle funktion aus phpBB, die ist in der mysql.php glaub ich drin

Verfasst: 28.07.2005 14:22
von mgutt
klar eigentlich logisch.

hatte ich aber irgendwie verpennt, weil ich die fehlermeldung nicht gemacht hatte.

durch die abarbeitung der fehlermeldung wird auch der datensatz erst geschrieben:

Code: Alles auswählen

$xreferer = $_SERVER['HTTP_REFERER'];
$xbrowser = $_SERVER['HTTP_USER_AGENT'];
$xip = $_SERVER['REMOTE_ADDR'];
$xwebseite = $_SERVER['PHP_SELF'];

$sql  = "INSERT INTO ".XSTATS_TABLE ." (referer, browser, ip, webseite) VALUES ('$xreferer', '$xbrowser', '$xip', '$xwebseite')";

if ( !$db->sql_query($sql) )
{
	message_die(GENERAL_ERROR, 'Could not update statistic information', '', __LINE__, __FILE__, $sql);
}

Verfasst: 28.07.2005 14:26
von kratzer54847
wurde XSTATS_TABLE in der constants.php definiert?
gib mal $sql per echo aus

Verfasst: 28.07.2005 14:59
von mgutt
ja habe ich (siehe auch meinen ersten Post ;) )

jetzt gehts aber auch.

ich habe nochmal ein bisschen verändert:

Code: Alles auswählen

$xreferer = $_SERVER['HTTP_REFERER'];
$xbrowser = $_SERVER['HTTP_USER_AGENT'];
$xip = $_SERVER['REMOTE_ADDR'];
$xwebseite = $_SERVER['PHP_SELF'];

if (!empty($xreferer) && !preg_match("/maxrev/i", $xreferer))
{
	$sql  = "INSERT INTO ".XSTATS_TABLE ." (referer, browser, ip, webseite) VALUES ('$xreferer', '$xbrowser', '$xip', '$xwebseite')";
	if ( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update statistic information', '', __LINE__, __FILE__, $sql);
		}
}
den preg_match code wollte ich noch verfeinern mit der SERVER_NAME Geschichte, aber irgendwie funzt das nicht.

Ich hatte versucht mit

Code: Alles auswählen

"/.$_SERVER["SERVER_NAME"]./i"
aber das geht leider nicht.

Für's erste siehts aber schon ganz gut aus:

http://www.maxrev.de/auswertung.php?s=0

;)

Verfasst: 20.08.2005 13:33
von mgutt
Ich habe noch ein paar Modis vorgenommen, da mich die referer von der Suchmaschine nicht mehr interessiert haben, da von dort eigentlich immer Besucher kommen.

Code: Alles auswählen

//
// Statistik Mod Anfang
//
$xreferer = $_SERVER['HTTP_REFERER'];
$xwebseite = $_SERVER['PHP_SELF'];

if ( !empty($xreferer) && !preg_match("/(google|freenet|fireball|yahoo|freunde.koeln|aol|miragorobot|mail.lycos|search.msn|suche.web|superhonda.de|hondaclub-hamm|buethe|hondaclub-neckar|t-online|accord-forum|wwwhonda|tuning-guides|tuningguides|hondachat|honda-chat|jdm-universe.com|civic-forum.com|prelude-forum.com|hondaclub-hildesheim|maxrev|max-rev|hondatreffen.com|jacuta|celler-honda|motorrad-honda|hondaclub-hamm|nippon-tuning.de)/i", $xreferer) )
{
	$sql = "SELECT id FROM ".XSTATS_TABLE ." WHERE referer='$xreferer'";
	$query = mysql_query($sql);
	$ds = mysql_fetch_object($query);
	$id = $ds->id;

	if (empty($id))
	{
		$sql  = "INSERT INTO ".XSTATS_TABLE ." (referer, webseite, counter) VALUES ('$xreferer', '$xwebseite', counter+1)";
		if ( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update statistic information', '', __LINE__, __FILE__, $sql);
		}
	}
	else
	{
		$sql  = "UPDATE ".XSTATS_TABLE ." SET counter=counter+1 WHERE id='$id'";
		if ( !$db->sql_query($sql) )
		{
			message_die(GENERAL_ERROR, 'Could not update statistic information', '', __LINE__, __FILE__, $sql);
		}
	}
}
//
// Statistik Mod Ende
//

Was im Moment nervt, ist das er im referer den eigenen Domainname nicht per:

Code: Alles auswählen

$_SERVER['HTTP_HOST']
oder

Code: Alles auswählen

$_SERVER['SERVER_NAME']
auszuschließen ist. ich muss alle domains von hand eintippen.