Hi guys,
I am trying to count the users recent searches. I attempted this awhile back with cookies but now I am trying with Sessions.
It's kind of a mess...and kind of works..so i need some help. This is my current code:
session_start();
$answers = array();
if ( !isset($_SESSION['mysearch']) ) {
$_SESSION['mysearch'] = $_GET['s'];
$answers = array($_SESSION['mysearch']);
} elseif ( (isset($_SESSION['mysearch'])) && (!isset($_SESSION['mysearch2'])) ) {
$_SESSION['mysearch2'] = $_GET['s'];
$answers = array($_SESSION['mysearch'], $_SESSION['mysearch2']);
} elseif ( isset($_SESSION['mysearch2']) & !isset($_SESSION['mysearch3'] )) {
$_SESSION['mysearch3'] = $_GET['s'];
$answers = array($_SESSION['mysearch'], $_SESSION['mysearch2']);
} elseif ( isset($_SESSION['mysearch3']) & !isset($_SESSION['mysearch4'] )) {
$_SESSION['mysearch4'] = $_GET['s'];
$answers = array($_SESSION['mysearch'], $_SESSION['mysearch2'], $_SESSION['mysearch3']);
} elseif ( isset($_SESSION['mysearch4']) & !isset($_SESSION['mysearch5'] )) {
$_SESSION['mysearch5'] = $_GET['s'];
$answers = array($_SESSION['mysearch'], $_SESSION['mysearch2'], $_SESSION['mysearch3'], $_SESSION['mysearch4'] );
} elseif (isset($_SESSION['mysearch']) & isset($_SESSION['mysearch2']) & isset($_SESSION['mysearch3']) & isset($_SESSION['mysearch4'] ) & isset($_SESSION['mysearch5'] )) {
$answers = array($_SESSION['mysearch'], $_SESSION['mysearch2'], $_SESSION['mysearch3'], $_SESSION['mysearch4'], $_SESSION['mysearch5'] );
}
$RequestSignature = md5($_SERVER['REQUEST_URI'].$_SERVER['QUERY_STRING'].print_r($_POST, true));
if (count($answers) == 5) {
if ($_SESSION['LastRequest'] == $RequestSignature) {
//refresh;
$answers = array($_SESSION['mysearch'], $_SESSION['mysearch2'], $_SESSION['mysearch3'], $_SESSION['mysearch4'], $_SESSION['mysearch5']);
} else {
// new request
$_SESSION['mysearch5'] = $_SESSION['mysearch4'];
$_SESSION['mysearch4'] = $_SESSION['mysearch3'];
$_SESSION['mysearch3'] = $_SESSION['mysearch2'];
$_SESSION['mysearch2'] = $_SESSION['mysearch'];
$_SESSION['mysearch'] = $_GET['s'];
$answers = array($_SESSION['mysearch'], $_SESSION['mysearch2'], $_SESSION['mysearch3'], $_SESSION['mysearch4'], $_SESSION['mysearch5']);
$_SESSION['LastRequest'] = $RequestSignature;
}
}
$_SESSION['mysearches'] = $answers;
if (isset($_SESSION['LAST_ACTIVITY']) && (time() - $_SESSION['LAST_ACTIVITY'] > 1800)) {
//last request was more than 30 minates ago
session_destroy(); // destroy session data in storage
session_unset($_SESSION['mysearches']); // unset $_SESSION variable for the runtime
}
$_SESSION['LAST_ACTIVITY'] = time(); // update last activity time stamp
basically the session isn't saving. I thought with the above code (the last_activity session variable) it would last for approx 30 mins. On one page it isn't populating and starts a new list but then if you refresh the list is there.
And sometimes, all the items are there except the first one - or the first one and the second item match but shouldn't. I see what this happens when i set mysearch2 = mysearch but i am not sure how to fix this..
i hope that makes sense.
I tried at this for awhile so i am hoping you can give advice on how to clean it up and make it work well.
thanks