在cookie中保存查询字符串

时间:2017-11-17 10:54:05

标签: php

在我的页面的每个请求中,我想将查询字符串值存储在cookie中。我的意思是:

$_GET['id'] = 28 to get 28. 

下次:

$_GET['id'] is 36. 

我想获得36并将其添加到28.我怎样才能实现这一目标?

2 个答案:

答案 0 :(得分:0)

$value=$_COOKIE['TestCookie'];
setcookie("TestCookie", $value+$_GET['value'], time()+(10 * 365 * 24 * 60 * 60));

这将解决您的问题。我将cookie的过期时间设置得很大,你可以修改它。

答案 1 :(得分:0)

您可以按照提及的方式使用Cookie,但根据工作流程的不同,您可能希望使用$_SESSION,因为它通常更安全。 Cookie可以由客户修改,并在访问之间保持不变。如果这是您想要的行为,那么setcookie()将是您最好的选择。

<?php
// The intval() function helps to ensure that numbers are being used, floatval() could work too
// Get current cookie value
$currentValue = intval($_COOKIE['CookieCounter']);
// Get new passed value
$incrementBy = intval($_GET['id']);
// Set the cookie and have it saved for 30 days
setcookie('CookieCounter', str($currentValue + $incrementBy), time()+60*60*24*30); 

另一种方法是使用会话。

  

会话是一种为个人用户存储数据的简单方法   唯一会话ID。这可用于保存状态信息   页面请求之间。会话ID通常发送到浏览器   通过会话cookie,ID用于检索现有会话   数据。缺少ID或会话cookie让PHP知道创建一个   新会话,并生成新的会话ID。

<?php
// Start the session
session_start();
// Check if the session value is already set
if (!isset($_SESSION['count'])) {
  $_SESSION['count'] = intval($_GET['id']);
} else {
// Increment the session value
  $_SESSION['count'] += intval($_GET['id']);
}

但是,cookie可以更改,也可以通过浏览器设置等删除。如果您希望它更安全和持久,我会使用数据库或其他持久性数据存储。