Det du er ude efter kan aldrig give noget præcist resultat, da nogle klienter ikke tillader cookies og andre sletter dem ind imellem.
Men her er noget du kan arbejde med
<?php
if(empty($_SESSION['visitor_registered'])) {
if(!empty($_COOKIE['visitor_id'])) {
// SQL: UPDATE, WHERE id = $_COOKIE['visitor_id']
} else {
$id = uniqid();
// SQL: INSERT, $id
$lifespan = time()+(60*60*24*365);
setcookie("visitor_id", $id, $lifespan, "/");
}
$_SESSION['visitor_registered'] = true;
}
?>
Jeg har arbejdet med den kode du gav mig. Den gav dog ikke helt svaret på det jeg var ude efter: Hvordan læser man værdien fra en cookie.
Jeg ville nemlig gerne undgå en masse database access for først at finde den DB entry med et sessionsnummer som er identisk og med max værdi på antal besøg. Men det er så det jeg alligevel har forsøgt at kode mig frem til ud fra den kode du gav.
Nu fungerer koden imidlertid ikke da linien $noofvisits = $myrow[0]+1 altid returnerer 1.
Jeg har taget udgangspunkt i at $myrow[0] har værdien fra visitcount i SELECT statementet.
Jeg vil sætte stor pris på hvis du eller andre kan oplyse mig fejlen i koden. Ligeledes vil jeg sætte stor pris på hvis der foreslås en alternativ løsning på det problem jeg har beskrevet.
Her er min kode:
<?PHP
$host = strtolower(getenv("HTTP_HOST")); // get the name of the requested host www.host.com
$date = date("Y-m-d");
$time = date("H:i:s");
$ip = getenv("REMOTE_ADDR"); // get the ip number of the user
$remotehost = gethostbyaddr($ip);
$httprefer = getenv("HTTP_REFERER");
$usersw = getenv("HTTP_USER_AGENT");
$remoteuser = getenv("REMOTE_USER");
// remove first characters like 'Mozilla/4.0 (compatible;' from $usersw
if($remoteuser){
$remotehost = $remoteuser."-".$remotehost;
}
if ($ie = strpos($usersw, "compatible"))
{
$usersw = substr($usersw, $ie+12, -1);
}
if(empty($_SESSION['visitor_registered'])) {
if(!empty($_COOKIE['visitor_id'])) {
// read max visitcount from database add 1
$cookieid = $_COOKIE['visitor_id'];
$db_link = mysql_connect("mysql.webhotel.dk", "userid", "passwd");
$result = mysql_query("SELECT visitcount FROM tbl_visitlog WHERE visitorid LIKE '$cookieid' AND visitcount = (MAX(visitcount) FROM tbl_visitlog)", $db_link);
$myrow = mysql_fetch_row($result);
$noofvisits = $myrow[0]+1; // visitcount - $noofvisits resulterer altid i 1
$query = "INSERT INTO tbl_visitlog (id, domain, date, time, ip_adr, visit_host, visitcount, httprefer, useragent, visitorid) ";
$query .= "VALUES (null, '$host', '$date', '$time', '$ip', '$remotehost', '$noofvisits', '$httprefer', '$usersw', '$cookieid')";
$mysql_result = mysql_db_query("my_db", $query, $db_link);
mysql_close($db_link);
} else {
$id = uniqid();
// SQL: INSERT, $id
$noofvisits = 1;
$db_link = mysql_connect("mysql.webhotel.dk", "userid", "passwd");
$query = "INSERT INTO tbl_visitlog (id, domain, date, time, ip_adr, visit_host, visitcount, httprefer, useragent, visitorid) ";
$query .= "VALUES (null, '$host', '$date', '$time', '$ip', '$remotehost', '$noofvisits', '$httprefer', '$usersw', '$id']')";
$mysql_result = mysql_db_query("my_db", $query, $db_link);
mysql_close($db_link);
$lifespan = time()+(60*60*24*365);
setcookie("visitor_id", $id, $lifespan, "/", ".mysite.dk", FALSE);
}
$_SESSION['visitor_registered'] = true;
}
?>
<HTML>
<HEAD>
........