here are my cookie functions: note that $id is the cookie md5(rand()) number accessible by:
$id = $HTTP_COOKIE_VARS['id'];
and also, the cookie set is called, "id".
here are the functions as promised:
function insert_cookie($unique_id, $expiry, $user_id) {
/ table looks like:
CREATE TABLE session (
id tinyint(11) NOT NULL auto_increment,
user_id tinyint(11) DEFAULT '0' NOT NULL,
session_id char(32) DEFAULT '0' NOT NULL,
expiry char(10) DEFAULT '0' NOT NULL,
PRIMARY KEY (id)
);
/
global $DB_CONF, $HTTP_HOST;
// incoming: user_id, session_id(uniqueid), expiry
$sql = "INSERT into {$DB_CONF["table_session"]} (user_id, session_id, expiry)
VALUES (\"$user_id\",\"$unique_id\",\"$expiry\")";
$sql_result = mysql_query($sql) or die ("Couldn't execute query. (message_database()) ".mysql_error());
if ( !$sql_result ) {
return 0;
}
else {
setcookie("id", $unique_id, $expiry , "/", "$HTTP_HOST", 0);
return 1;
}
}
function check_cookie($id) {
// incoming: $unique_id off the cookie
global $DB_CONF;
$sql = "SELECT * FROM {$DB_CONF['table_session']} where session_id='$id'";
$sql_result = mysql_query($sql) or die ("Couldn't execute query. (message_database()) ".mysql_error());
if ( !$sql_result ) { return 0; }
while ($row = mysql_fetch_array($sql_result)) {
$user_id = $row['user_id'];
$expiry = $row['expiry'];
}
$current_time = time();
if ( $current_time > $expiry ) { // let's update cookie
$expiry = time()+99999999;
setcookie("id", $unique_id, $expiry,"/", ".$HTTP_HOST", "0");
$sql = "UPDATE {$DB_CONF['table_session']}
set expiry = \"$expiry\" where session_id = \"$id\"";
$sql_result = mysql_query($sql) or die ("Couldn't execute query. (message_database()) ".mysql_error());
}
if ( $user_id > '0' ) { // they matched against session database
return $user_id;
}
else {
// okay.. old cookie, let's remove it from them&database
clear_cookie($id);
return 0;
}
}
function clear_cookie($id) {
global $DB_CONF, $HTTP_COOKIE_VARS;
// clears cookie from user
setcookie("id","","","/", ".$HTTP_HOST", "0");
// clears cookie from database
$sql = "DELETE FROM {$DB_CONF['table_session']} where session_id='$id'";
$sql_result = mysql_query($sql) or die ("Couldn't execute query. (message_database()) ".mysql_error());
return;
}
hope this could help. if you need any additional help, contact me; i'd be more than willing to show you my login scripts 😉