在PHP Cookie中存储表单值的最佳方法?

在PHP Cookie中存储表单值的最佳方法?,php,cookies,Php,Cookies,在表单提交之后,我想在一个PHP cookie中存储几个指定的表单值。我需要在浏览器关闭后保留数据,因此我不想使用会话。我当前的通话如下所示: if ($_GET) { $params = $_GET; } 有没有一种方法可以设置从$\u GET到$\u COOKIE的几个参数,以便在用户返回时使用它们 检查setcookie的PHP文档:检查setcookie的PHP文档:您可以使用serialize(),或者对所有$\u GET值执行foreach()循环,并在cookie中设置这

在表单提交之后,我想在一个PHP cookie中存储几个指定的表单值。我需要在浏览器关闭后保留数据,因此我不想使用会话。我当前的通话如下所示:

if ($_GET) {
    $params = $_GET;
}

有没有一种方法可以设置从$\u GET到$\u COOKIE的几个参数,以便在用户返回时使用它们

检查setcookie的PHP文档:

检查setcookie的PHP文档:

您可以使用serialize(),或者对所有$\u GET值执行foreach()循环,并在cookie中设置这些值(每个值使用不同的cookie)

您可以使用serialize(),或者对所有$\u GET值执行foreach()循环,并在cookie中设置这些值(每个值有不同的cookie)

您仍然可以使用会话来解决问题。只需使用
session\u set\u cookie\u params()
(请参阅)将cookie参数更改为time>0(0表示在浏览器关闭时应将其删除),并使用
session\u cache\u expire()延长会话缓存的生存期。
(见附件)

这样做的好处是,即使是客户端不能更改的数据也不能通过简单地更改机器上的cookie来更改

仅限Cookies


另一种方法可以包括一些序列化(例如,使用
serialize()
deserialize()
或自行完成一些低复杂性的事情,比如简单地用分隔符连接一些参数),将参数直接存储到具有
setcookie()的cookie中
函数。获取有关该函数的更多信息。使用该函数,您可以直接从超全局
$\u COOKIE
读取COOKIE值,您仍然可以使用会话解决问题。只需使用
会话设置COOKIE\u参数()将COOKIE参数更改为时间>0即可(0表示应在浏览器关闭时将其删除)并使用
session\u cache\u expire()

这样做的好处是,即使是客户端不能更改的数据也不能通过简单地更改机器上的cookie来更改

仅限Cookies


另一种方法可以包括一些序列化(例如,使用
serialize()
deserialize()
或自行完成一些低复杂性的事情,比如简单地用分隔符连接一些参数),将参数直接存储到具有
setcookie()的cookie中
函数。获取有关该函数的更多信息。使用该函数,您可以直接从超全局
$\u COOKIE

读取COOKIE值。您可以使用
foreach
遍历Get数组,并使用其索引名设置COOKIE。 试试这个-

$expire=time()+60*60*24*30;
foreach($_GET as $k=>$v){
   setcookie($k,$v,$expire);
}

这将设置与获取数组索引相同的cookie名称,并将在一个月后过期。

您可以使用
foreach
遍历获取数组,并使用其索引名称设置cookie。 试试这个-

$expire=time()+60*60*24*30;
foreach($_GET as $k=>$v){
   setcookie($k,$v,$expire);
}

这将设置与获取数组索引相同的cookie名称,并将在一个月后过期。

RTFM()对不起…我想应该先这样做。RTFM()对不起…我想应该先这样做。这是我从来没有听说过的事情…我将对此进行研究,因为它可能会解决另一个问题:)谢谢!@Paul以不正当的方式使用工具并不是什么新鲜事。不久前有人使用状态封条来破解漏洞。会话在浏览器关闭之前是活动的。你是对的,而这家伙是错的。@你的常识是,这不是真的。在通用语言中,会话cookie描述了在当前会话之后被删除的会话(浏览器关闭后立即关闭)。但在php中,通过更改cookie参数和缓存时间,可以使用相同的会话机制在更长的时间内存储数据。一个有效的反对观点是,数据可能以低效和不可控的方式存储,而数据库则更可靠。然而,它具有提供与直接cookie方法相比,ata保护和使用简单。与许多新手程序员一样,您混淆了会话和cookie的用途。有了更多的经验,您将学会区分它们。当然,我们谈论的是“数据保护”在查询字符串提供的数据的情况下。Stackoverflow理论是如此的理论。这是我从未见过的新东西…我将研究它,因为它可能解决另一个问题:)谢谢!@Paul以不正当的方式使用工具并不是什么新鲜事。不久前有人使用状态封条来破解漏洞。会话在浏览器关闭之前是活动的。你是对的,而这家伙是错的。@你的常识是,这不是真的。在通用语言中,会话cookie描述了在当前会话之后被删除的会话(浏览器关闭后立即关闭)。但在php中,通过更改cookie参数和缓存时间,可以使用相同的会话机制在更长的时间内存储数据。一个有效的反对观点是,数据可能以低效和不可控的方式存储,而数据库则更可靠。然而,它具有提供与直接cookie方法相比,ata保护和使用简单。与许多新手程序员一样,您混淆了会话和cookie的用途。有了更多的经验,您将学会区分它们。当然,我们谈论的是查询字符串提供的数据的“数据保护”。Stackoverflow理论就是这样的理论。