Hi
My webserver recently upgraded to php5/mysql5 and all of a sudden a counter script that I created stopped working...
Just before the header of my html file contains the @include_once function that use to execute my counter script everytime the html page is loaded. The url to the counter script contains 2 parameters (PHP_Self URL and the users ip address.) Once the counter script gets this information it updates or inserts a mysql table.
I can execute the counter script manually by cut/paste it into the browser, it updates the mysql table with no issues. For some reason however it does not do this in the html file through the include_once(). This has been working for the past 6-9 months and code hasn't changed.
Is there somethign different with @include_once in php/mysql 5? Any thoughts or recommendations on how to get this working again are greatly appreciated.
PHP code inside my html file. It includes the include_once() which should call the counter script every time the page is loaded.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<?php
if (getenv(HTTP_X_FORWARDED_FOR)) {
$ip = getenv("HTTP_X_FORWARD_FOR");
$host = gethostbyaddr($ip);
} else {
$ip = getenv("REMOTE_ADDR");
$host = gethostbyaddr($ip);
}
@include_once("http://www.mysite.com/counter.php?ip=$ip&url={$_SERVER[php_SELF]}");
/* just created this var for troubleshooting...the $curl returns the correct path and parameters. If I cut paste this exact variable when renedered in browser, Mysql table is updated w/o problems */
$curl = "http://www.mysite.com/counter.php?ip=$ip&url={$_SERVER[php_SELF]}";
echo "CounterURL: $curl";
?>
<head>
<title> page title </title>
<meta> etc....
No more PHP code on page....
Here is my counter.php again this has been working on php4 for the past 6-9 months w/o issues.
<?php
require_once('mysql_connect.php'); //connection to DB
$URL = $_GET['url']; //get url parameter from url that is passed through the @include_once()
$ip = $_GET['ip']; //get ip parameter from url that is passed through the @include_once()
//troubleshooting variables...when executing from browser these variables are returned correctly
echo "URL: $URL<br>";
echo "ip: $ip<br>";
$qip = "SELECT COUNT(url) as ct FROM ipaddr WHERE url='$URL' and date=CURDATE() and ip='$ip'";
$rip = @mysql_query($qip);
$rowip = @mysql_fetch_array($rip,MYSQL_ASSOC);
//if user ip address is NOT in db for curdate then add info to ipaddr table and counter table.
if($rowip['ct'] == 0) {
$i1 = @mysql_query("Insert INTO ipaddr(url,ip,date) Values('$URL','$ip','CURDATE()')");
$qurl = "SELECT url FROM counter WHERE url='$URL' and date=CURDATE()";
$rurl = @mysql_query($qurl);
if(@mysql_num_rows($rurl) == 0) {
$query = @mysql_query("INSERT INTO counter(url,count,date) VALUES('$URL','1',CURDATE())");
}
else {
$query = @mysql_query("UPDATE counter SET count=count+1 WHERE url='$URL'");
}
}
?>