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


Best way to store form values in PHP Cookie?

表单提交后,我想在PHP cookie中存储几个指定的表单值。我需要在浏览器关闭后保持数据,这样我就不想使用会话了。我现在的电话是这样的:

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

有没有一种方法可以将几个参数从$_GET设置为$_COOKIE,这样我就可以在用户返回时使用它们?

您仍然可以使用会话来解决您的问题。只需使用session_set_cookie_params()(请参阅此处)将cookie参数更改为时间>0(0表示应在浏览器关闭时将其删除),并使用session_cache_expire()(请参阅这里)增加会话缓存寿命。

这样做的优点是,即使是客户端不应该更改的数据,也不能通过简单地更改其机器上的cookie来更改。

仅限Cookie

另一种方法可以包括对使用setcookie()函数直接存储在cookie中的参数进行一些序列化(例如,使用serialize()deserialize(),或者对低复杂度的事情自行执行一些操作,例如简单地用分隔符连接一些参数)。点击此处获取更多信息。这样,您就可以直接从超全局$_COOKIE中读取cookie值。

查看PHP文档中的setcookie:http://php.net/setcookie

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

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

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

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