简体   繁体   中英

find and save variable in cookie

I am trying to save variable in cookie and then retrieve it, so far i can save just a text and page url and then retrieve it where ever i want.

Could u please help me out with it?for example in this code i want to save $room and $renthome values in cookie.

this is my current code

 <!DOCTYPE html> <html> <head> <title>New page string name</title> <link rel="stylesheet" href="css/reset.css"> <!-- Resource style --> <link rel="stylesheet" type="text/css" href="css/buy-rent.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.2/jquery.min.js"></script> <script> function createCookie(name, value, days) { var expires = '', date = new Date(); if (days) { date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = '; expires=' + date.toGMTString(); } document.cookie = name + '=' + value + expires + '; path=/'; } /* * Read cookie by name. * In your case the return value will be a json array with list of pages saved. */ function readCookie(name) { var nameEQ = name + '=', allCookies = document.cookie.split(';'), i, cookie; for (i = 0; i < allCookies.length; i += 1) { cookie = allCookies[i]; while (cookie.charAt(0) === ' ') { cookie = cookie.substring(1, cookie.length); } if (cookie.indexOf(nameEQ) === 0) { return cookie.substring(nameEQ.length, cookie.length); } } return null; } /* * Erase cookie with name. * You can also erase/delete the cookie with name. */ function eraseCookie(name) { createCookie(name, '', -1); } var faves = new Array(); function isAlready(){ var is = false; $.each(faves,function(index,value){ if(this.url == window.location.href){ console.log(index); faves.splice(index,1); is = true; } }); return is; } $(function(){ var url = window.location.href; // current page url $(document.body).on('click','#addTofav',function(e){ e.preventDefault(); var pageTitle = $(document).find("title").text(); if(isAlready()){ } else { var fav = {'title':pageTitle,'url':url}; faves.push(fav); } var stringified = JSON.stringify(faves); createCookie('favespages', stringified); location.reload(); }); var myfaves = JSON.parse(readCookie('favespages')); if(myfaves){ faves = myfaves; } else { faves = new Array(); } }); </script> </head> <body> <a href="javascript:void(0);" id="addTofav">Add me to fav</a> <div class="img"> <div class="desc"> <ul id="appendfavs"> </ul> </div> </div> <?php error_reporting(0); include("config.php"); $quer= "SELECT*FROM ".$db_table." "; $query=mysqli_query($connect,$quer) or die(mysqli_error()); ?> <?php while($row = mysqli_fetch_array($query)): $idhome= $row['idhome']; $room=$row['room']; $renthome=$row['renthome']; $pricehome=$row['pricehome']; ?> <?php endwhile;?> </body> </html> 

I use jQuery Cookie

https://github.com/carhartl/jquery-cookie

usage: $.cookie('name', 'value');

retrieving: $.cookie('name'); // => "value" $.cookie('name'); // => "value"

In order to save complex data in a cookie, do the following:

1) save the whole data in an object. Something like var cookieData = {}; , and then you can add properites like cookieData.date = yourDate; cookieData.myUrl=yourUrl; cookieData.date = yourDate; cookieData.myUrl=yourUrl;

2) transfer the object to a sting using JSON.stringify

3) save the string in the cookie.

Now, in order to use it again -

1) retrieve the cookie (See the code above)

2) Turn the string back into an object using JSON.parse

3) Fetch the data you desire from the object

In jQuery, you should use jquery.cookie plugin.

This creates a cookie

$.cookie(name, value [, options]);

and then retrieve it value

$.cookie(name);

You can generate in PHP <script> block which will save the variable. Example show saving cookie named room by $room value.

<script>
     createCookie("room", "<?= $row['room'] ?>", 2);
</script>

another (and I think better) way is to set the cookie by PHP.

<?php setcookie("room", $row['room'], 2 * 24 * 60 * 60 * 1000); ?>

Don't forget that if you want to set cookie by PHP yhou have to do it before send any output. In your case you have to prepare output, set cookie and then send the output.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM