Strange cookie problem. setcookie dependant on where user was directed from?
Posted on
16th Feb 2014 07:03 pm by
admin
Hello,
I have a website that sets a cookie when a user visits the website. The cookie holds an ID number that I have decided to refer to Computer Identification Number (CIN) that is unique for every user. The idea is to be able to identify a computer with the CIN even if the IP changes.
This is the code I use. What it does is that it first checks whether a visitor is an admin. Every admin pc has the admin cookie called 'admin'. If the user is not an admin, the script checks if cookies of the user is enabled and reloads the page to check. If cookies are on, it checks if the user has been here before, by checking if cookie called tp_visitor is set, if it isnt, the script sets a new tp_visitor. The tp_visitor contains the unique ID number {CIN} ). Each visit, the script writes to a database and logs the CIN, IP and timestamp:
Code: <?php
$connection = connect(); //CONNECTS TO MYSQL
if (empty($_COOKIE['admin']) ) { //COMPUTERS WITH COOKIE: 'ADMIN' ARE ADMINS, AND SHOULD NOT BE COUNTED
if (isset($_SERVER['HTTP_REFERER'])) {
$ref = $_SERVER['HTTP_REFERER'];
}
// CHECKS IF USER HAS COOKIE BY FIRST SETTING ONE THEN RELOADING THE SAME PAGE TO CHECK IF THE COOKIE WAS SET
if ( ! isset( $_GET['entry'] ) ) {
setcookie('enabled', 'test', (time() + (60*60*24*365*5)));
header('location: ' . $_SERVER['PHP_SELF'] . '?entry=1&' . SID);
}
else {
//IF COOKIE WAS SET
if (!empty($_COOKIE['enabled'])) {
//IF COOKIE TP_VISITOR IS NOT SET (THE USER IS HERE FOR THE FIRST TIME)
if ( !isset( $_COOKIE['tp_visitor'] ) ) {
$new_cin = 'SELECT COUNT(*) FROM kingoslo.cin';
$resultat = mysql_query($new_cin, $connection);
$new_cin = mysql_result($resultat,0);
$new_cin = $new_cin + 1;
setcookie('tp_visitor', $new_cin, (time() +(60*60*24*365*5)) );
$cookie = 'INSERT INTO kingoslo.cinlog (cin, tid, ip, referanse) VALUES ("' . $new_cin . '", "' . time() . '", "' . getenv("REMOTE_ADDR") . '", "' . $ref . '")';
$new_cin = 'INSERT INTO kingoslo.cin (cin, visits, epost) VALUES ("' . $new_cin . '", 0, 0)';
mysql_query($cookie, $connection);
mysql_query($new_cin, $connection);
}
//IF COOKIE TP_VISITOR IS SET (THE USER IS NOT HERE FOR THE FIRST TIME)
else {
$no_cookie = 'INSERT INTO kingoslo.cinlog (cin, tid, ip, referanse) VALUES ("' . $_COOKIE['tp_visitor'] . '", "' . time() . '", "' . getenv("REMOTE_ADDR") . '", "' . $ref . '")';
mysql_query($no_cookie, $connection);
setcookie('tp_visitor', $_COOKIE['tp_visitor'], (time() +(60*60*24*365*5)) );
}
}
else { //IF COOKIES WAS DISABLED
$no_cookie = 'INSERT INTO kingoslo.cinlog (cin, tid, ip, referanse) VALUES ("COOKIE_DISABLED", "' . time() . '", "' . getenv("REMOTE_ADDR") . '", "' . $ref . '")';
mysql_query($no_cookie, $connection);
}
}
}
close($connection); //CLOSES CONNECTION
?>
Now what is the problem?
Well it seems that when I visit this script, it will sometimes create a new CIN and cookie called tp_visitor even if the user has been on the website before! This seems to happen more frequently when I am directed from different sources, i.e. if I am first directed from a link on Google, then type in the URL of the website in the next attempt.
I was wondering what this may be the result of. I think it is very strange
Thanks
No comments posted yet
Your Answer:
Login to answer
115
46
Other forums
CHECH A STRING FOR ' " ' (DOUBLE QUOTES)
I am checking for delimiter (.!?) and if there is a " after a sentence then it should neglect a
Generate PDF
Hi guys,
I would like to know if there is a way to generate pdf when clicking on a link. In f
how to make database item unique
Hey guys,
is it possible to do this:
I have the database item $title being pulled for
There was a problem with the request. (Code: 0)
Any Idea what could cause this? I get it randomly at best. But with both IE and FF. It derives from
Count number of records in all the tables with a querry URGENT PLEASE...
I downloaded ORACLE 9I DATA DUMP into my comp. There are number of tables. I need to find out the
Help! refer to a friend script with captcha code
Hi guys, I am posting on here in desperate need for some help with an ongoing search I have been doi
add 20 000 to the rowcnt
Hi ...
I need to add 20 000 to the row count but just cant find a way to do this i am new to php
Multiple Options for a Single Page
For this example I want to use the Handlers option which is under Fed Admin and all the related codi
IIS & NW MII on the same server
Hi,
We're weighing the possibility to run both IIS and MII (NetWeaver) on the same server
Retrieving Data from Two Different Databases
Hello All,
Ran into another problem and would appreciate some help! I have two datab