在 cookie 中查找并保存变量


find and save variable in cookie

我正在尝试将变量保存在cookie中,然后检索它,到目前为止,我可以只保存文本和页面URL,然后在我想要的任何位置检索它。

你能帮我解决这个问题吗?例如,在此代码中,我想在 cookie 中保存$room和$renthome值。

这是我当前的代码

<!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>

在jQuery中,你应该使用jquery.cookie插件。

这将创建一个饼干

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

然后检索它的值

$.cookie(name);

我使用 jQuery Cookie

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

用法:$.cookie('name', 'value');

正在检索:$.cookie('name'); // => "value"

要在 Cookie 中保存复杂数据,请执行以下操作:

1)将整个数据保存在一个对象中。像 var cookieData = {}; 这样的东西,然后你可以添加属性,比如cookieData.date = yourDate; cookieData.myUrl=yourUrl;

2)使用JSON.stringify将物体转移到刺痛处

3) 将字符串保存在 cookie 中。

现在,为了再次使用它——

1) 检索饼干(见上面的代码)

2) 使用JSON.parse将字符串变回对象

3)从对象中获取所需的数据

您可以在PHP中生成<script>块,该块将保存变量。示例显示按$room值保存名为room的 Cookie。

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

另一种(我认为更好)方法是通过PHP设置cookie。

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

不要忘记,如果你想通过PHP设置cookie,你必须在发送任何输出之前完成。在您的情况下,您必须准备输出,设置 cookie,然后发送输出。