Search the Community
Showing results for tags 'cookie'.
-
Basically thought I got this working before and now i'm stuck. I'm setting and getting a cookie using a set function ("setRememberMeToken") and retrieving them using a get function ("getRememberMeCheck") [see functions bellow in the final box]... however when i close the browser the cookie session is lost when i reopen.. I used a browser extension called Cookie-editor in chrome to check and I see nothing saved upon reopening (cookie named "token" as it uses tokens in MYSQL DB). This is the thing, if i run (this code bellow).. it actually saves the session fine and works great... saved in a experimental file I named ~/test/test/cookithing.php. <?php include '../includes/config.php'; function setRememberMeToken($pdo, $user_id) { $token = bin2hex(random_bytes('25')); $expirationDate = time() + (86400 * 7); // <-- 7 days later setcookie("token", $token, $expirationDate, "/"); echo $_COOKIE["token"] = $token; $test = true; $to = date('Y-m-d', $expirationDate); $sql = "INSERT INTO `user_token` (`user_id`, `expires`, `tokenHash`) VALUES (?, ?, ?);"; $stmt= $pdo->prepare($sql); $stmt->execute([$user_id, $to, sha1($token)]); } setRememberMeToken($pdo, 1); echo "<br>"; echo sha1($_COOKIE["token"]); ?> So by vising this page it works!.. however not ideal situation to be in as I need it to get to work upon login... Forgetting about the code above for s second, here is the code I use for login (ask if you need more)... if (isset($_POST['remember-me'])){ setRememberMeToken($pdo, $_SESSION["userID"] ); // <----- set token //echo "<br>"; //echo sha1($_COOKIE["token"]); } and the main functions are here:.. <?php function setRememberMeToken($pdo, $user_id) { $token = bin2hex(random_bytes('25')); $expirationDate = time() + (86400 * 7); // <-- 7 days later (make sure your comments are accurate) setcookie("token", $token, $expirationDate, "/"); $_COOKIE["token"] = $token; $test = true; $to = date('Y-m-d', $expirationDate); $sql = "INSERT INTO `user_token` (`user_id`, `expires`, `tokenHash`) VALUES (?, ?, ?);"; $stmt= $pdo->prepare($sql); $stmt->execute([$user_id, $to, sha1($token)]); } function getRememberMeCheck($pdo) { $stmt = $pdo->prepare(" SELECT users.name, users.user_id FROM user_token, users WHERE tokenHash = ? AND expires > NOW() AND users.user_id = user_token.user_id "); $stmt->execute([sha1($_COOKIE["token"])]); $db_query = $stmt->fetch(); if (!$db_query){ return false; } $_SESSION["loggedin"] = true; $_SESSION["username"] = $db_query['name']; $_SESSION["the_usr_id"] = $db_query['user_id']; $_SESSION["userID"] = $db_query['user_id']; // ADDED DUE TO DESCRIPTION ("PROB WILL BE OK") return true; } function isRemembered() { return isset($_COOKIE['token']); } ?> Can anyone see what I'm doing wrong.. right now I'm fairly clueless..? ____________ Edit: also, my header file contains this (see bellow) also.. include 'includes/remember_token.php'; include 'includes/count_online.php'; if (isset($_COOKIE['token'])) { getRememberMeCheck($pdo); } .. this checks if the cookie is set.
-
I am creating a function to set a cookie of the last three viewed items and then display the items except the item I am on. The issue I am having is after the second product I view, it will show duplicate items. I outputted the query and there are no duplicates. I tried array_unique. function definerecentview() { global $wpdb; $myvaluee = $_GET['singleProduct']; add_action('init', 'definerecentview'); if ( empty($_COOKIE['recently_viewed'])) $viewed_products = array(); else $viewed_products = (array) explode( ',', $_COOKIE['recently_viewed']); if ( ! in_array($myvalue, $viewed_products)) { $viewed_products[] = $myvaluee; } if (sizeof( $viewed_products ) > 4 ) { array_shift( $viewed_products ); } // Store cookie setcookie( 'recently_viewed', implode( ',', $viewed_products ),time() + (86400 * 30), '/' ); $output = ""; $viewed = implode( ',',$viewed_products); $unique = implode(',', array_unique(explode(',', $viewed)));//added $query = "SELECT * FROM products WHERE `prod_id` IN ($unique) AND `prod_id` != '". $this->curProduct ."' LIMIT 4";//don't show current item $group = $wpdb->get_results($query, ARRAY_A); echo "<div class='aroundrecent grid-area'>Recently Viewed"; echo "<div class='columnflex grid-area'>"; foreach($group as $vw){ $output .= "<a href='#'><div class='recent grid-area'>"; $output .= "<div class='recentimg grid-area'><img src='/thumbnails/'.$vw['image']. "' alt='".$vw['prod_model']."'title='".$vw['prod_id']."' /></div>"; $output .= "<div class='recentmodel grid-area '>".$vw['prod_name']."</div>"; $output .= "<div class='recentnumber grid-area '>".$vw['prod_model']."</div>"; $output .= "</div></a>"; echo $output; } echo "</div>"; echo "</div>"; echo "</div>"; var_dump($group); //I will get this SELECT * FROM products WHERE `prod_id` IN (2619,2612,2272) AND `prod_id` != '2272' LIMIT 4 And it will show product 2619 twice. }?>
-
Hi guys , i am really stuck here .. i am not a php programmer and got a script from a friend to open a link random on click anywhere on site .. this script works great but it only opens a link once a day , i need it to open a link every time the users clicks on the site. i googled a lot and fount that it is the cookie settings , only in all tutorials online they talk about setting cookie time on 0 ... this option is not written in the script i have and there is a tag made , new_Date i can not find any info on those tags like new day , and changing it to 0 breaks the script. does somebody know how to change this script so it works on every click on the site. this script is needed for affiliate links and i need it to open every time someone clicks on something on the site without time delay or a time delay from 1 minute for the main page. but most importent is the code without time delay . if someone wants to help i'll be very thankful course googling is not going to solve this for me .. Thanks the script :::: <script> var puShown = false; var PopWidth = 1370; var PopHeight = 800; var PopFocus = 0; var _Top = null; function GetWindowHeight() { var myHeight = 0; if( typeof( _Top.window.innerHeight ) == 'number' ) { myHeight = _Top.window.innerHeight; } else if( _Top.document.documentElement && _Top.document.documentElement.clientHeight ) { myHeight = _Top.document.documentElement.clientHeight; } else if( _Top.document.body && _Top.document.body.clientHeight ) { myHeight = _Top.document.body.clientHeight; } return myHeight; } function GetWindowWidth() { var myWidth = 0; if( typeof( _Top.window.innerWidth ) == 'number' ) { myWidth = _Top.window.innerWidth; } else if( _Top.document.documentElement && _Top.document.documentElement.clientWidth ) { myWidth = _Top.document.documentElement.clientWidth; } else if( _Top.document.body && _Top.document.body.clientWidth ) { myWidth = _Top.document.body.clientWidth; } return myWidth; } function GetWindowTop() { return (_Top.window.screenTop != undefined) ? _Top.window.screenTop : _Top.window.screenY; } function GetWindowLeft() { return (_Top.window.screenLeft != undefined) ? _Top.window.screenLeft : _Top.window.screenX; } function doOpen(url) { var popURL = "about:blank" var popID = "ad_" + Math.floor(89999999*Math.random()+10000000); var pxLeft = 0; var pxTop = 0; pxLeft = (GetWindowLeft() + (GetWindowWidth() / 2) - (PopWidth / 2)); pxTop = (GetWindowTop() + (GetWindowHeight() / 2) - (PopHeight / 2)); if ( puShown == true ) { return true; } var PopWin=_Top.window.open(popURL,popID,'toolbar=0,scrollbars=1,location=1,statusbar=1,menubar=0,resizable=1,top=' + pxTop + ',left=' + pxLeft + ',width=' + PopWidth + ',height=' + PopHeight); if (PopWin) { puShown = true; if (PopFocus == 0) { PopWin.blur(); if (navigator.userAgent.toLowerCase().indexOf("applewebkit") > -1) { _Top.window.blur(); _Top.window.focus(); } } PopWin.Init = function(e) { with (e) { Params = e.Params; Main = function(){ if (typeof window.mozPaintCount != "undefined") { var x = window.open("about:blank"); x.close(); } var popURL = Params.PopURL; try { opener.window.focus(); } catch (err) { } window.location = popURL; } Main(); } }; PopWin.Params = { PopURL: url } PopWin.Init(PopWin); } return PopWin; } function setCookie(name, value, time) { var expires = new Date(); expires.setTime( expires.getTime() + time ); document.cookie = name + '=' + value + '; path=/;' + '; expires=' + expires.toGMTString() ; } function getCookie(name) { var cookies = document.cookie.toString().split('; '); var cookie, c_name, c_value; for (var n=0; n<cookies.length; n++) { cookie = cookies[n].split('='); c_name = cookie[0]; c_value = cookie[1]; if ( c_name == name ) { return c_value; } } return null; } function initPu() { _Top = self; if (top != self) { try { if (top.document.location.toString()) _Top = top; } catch(err) { } } if ( document.attachEvent ) { document.attachEvent( 'onclick', checkTarget ); } else if ( document.addEventListener ) { document.addEventListener( 'click', checkTarget, false ); } } function checkTarget(e) { if ( !getCookie('popundr') ) { var e = e || window.event; var win = doOpen('http://yourlinkurl.url/bannerpage.phphtml'); setCookie('popundr', 1, 24*60*60*1000); } } initPu(); </script>
