PHP Counter
Verfasst: Mi 26.Jan, 2005 19:37
Seineszeitens war ich auf der Suche nach einem php-Counter mit sql und reloadsperre. Ich wollte keinen weiteren Schnickschnack, wie Statistik o.ä.
Dafür habe ich diesen gewählt:
Funktioniert soweit prächtig. Allerdings ist er nicht 'regelkonform' in meinem phpbb eingebunden.
Momentan muss ich den Counter in der index_body_plus.tpl mit aufrufen *örgs*
Irgendwie bekomm ich das nicht hin, dass ich dieses z.B. mit {counter} eingebunden bekomme.
Hab mir schon die Hinweise auf phpbb.de in der Knowledgebase durchgelesen, bzw. versucht, das von adv. countdown mod abzuleiten, aber es scheitert quasi schon im Ansatz.
Kann mir jemand behilflich sein?
btw: Includet wird die phpcounter.php in der index.php mit
Da weiss ich auch nicht, ob das so richtig ist.
Dafür habe ich diesen gewählt:
Code: Alles auswählen
<?
function Counter($page = '') {
/* this function will take $page as an arguement.
* using different values for $page will allow
* you to use a different counter on each page.
* if you want the same counter for all of your
* site then don't pass in $page */
/* connect to and select database */
mysql_connect ('localhost','username','password');
mysql_select_db ('database');
/* set expire time for ips
* 600 seconds = 10 minutes */
$expire = time() - 600;
/* delete from table where IP has expired */
$query = "DELETE FROM counter_ips " .
"WHERE viewtime < $expire " .
"AND page = '$page'";
mysql_query ($query);
/* now we check to see if the users
* IP exists in the table */
$query = "SELECT IP FROM counter_ips " .
"WHERE IP = '{$_SERVER['REMOTE_ADDR']}'" .
"AND page = '$page'";
$result = mysql_query ($query);
if (mysql_num_rows ($result) > 0) {
/* if the IP existed, update the view time */
$viewtime = time();
$query = "UPDATE counter_ips SET viewtime = '$viewtime'" .
"WHERE IP = '{$_SERVER['REMOTE_ADDR']}'" .
"AND page = '$page'";
mysql_query ($query);
} else {
/* ok time to record a hit and the IP */
/* first check if a record exists for $page */
$query = "SELECT num FROM counter " .
"WHERE page = '$page'";
$result = mysql_query ($query);
if (mysql_num_rows ($result) == 0) {
/* if no row, add one */
$query = "INSERT INTO counter VALUES " .
"(1,'$page')";
mysql_query ($query);
} else {
/* there is a row so just update it */
$query = "UPDATE counter SET num = num + 1 " .
"WHERE page = '$page'";
mysql_query ($query);
}
/* add IP to IP table */
$viewtime = time();
$query = "INSERT INTO counter_ips VALUES " .
"('{$_SERVER['REMOTE_ADDR']}', '$page', $viewtime)";
mysql_query ($query);
}
/* now we get the counter value and return it */
$query = "SELECT num FROM counter WHERE page = '$page'";
$row = mysql_fetch_assoc (mysql_query ($query));
return $row['num'];
}
/* table dumps
CREATE TABLE `counter` (
`num` int(10) unsigned NOT NULL default '0',
`page` varchar(100) default NULL,
KEY `page` (`page`)
) TYPE=MyISAM;
CREATE TABLE `counter_ips` (
`IP` varchar(16) NOT NULL default '',
`page` varchar(100) default NULL,
`viewtime` int(11) unsigned NOT NULL default '0',
KEY `IP` (`IP`),
KEY `viewtime` (`viewtime`),
KEY `page` (`page`)
) TYPE=MyISAM;
*/
?> Momentan muss ich den Counter in der index_body_plus.tpl mit
Code: Alles auswählen
<?php echo counter(); ?>Irgendwie bekomm ich das nicht hin, dass ich dieses z.B. mit {counter} eingebunden bekomme.
Hab mir schon die Hinweise auf phpbb.de in der Knowledgebase durchgelesen, bzw. versucht, das von adv. countdown mod abzuleiten, aber es scheitert quasi schon im Ansatz.
Kann mir jemand behilflich sein?
btw: Includet wird die phpcounter.php in der index.php mit
Code: Alles auswählen
include_once($phpbb_root_path . 'phpcounter/phpcounter.'. $phpEx);