gpt4 book ai didi

php - PHP 中的 Cookie 对象

转载 作者:可可西里 更新时间:2023-11-01 13:50:22 25 4
gpt4 key购买 nike

我开始学习 PHP,但我遇到了一个应用程序问题:我需要将一个对象的信息放入 PHP 中用于 cookie,然后在另一个页面上再次接收一个 cookie 对象。任何人都可以解决这个问题吗?

我想在 cookie 中存储的信息只是一些信息,最好是客户,如背景颜色、窗口大小。

<?php  
class Client {

private $id;
private $pSize;
private $color;

function __construct($id) {
$this->id = $id;
}

public function getPSize() {
return $this->pSize;
}

public function setPSize($pSize) {
$this->pSize = $pSize;
}

public function getColor() {
return $this->color;
}

public function setColor($color) {
$this->color = $color;
}
}
?>

在页面 index.php 中我有:

<?php      
include_once 'Client.class.php';
//Test Preference Client
$client = new Client(1);
$client->setColor("#000000");
$client->setPSize(200);

//using Serialize to put to Cookie
$StringClient = serialize($client);

//Store to Cookie
$_COOKIE['PreferenceClient'] = $StringClient;

?>

在另一个页面我得到了信息:

 if(isset($_COOKIE['PreferenceClient'])){
// Unsing Unserialize to Object
$objClient = unserialize($_COOKIE['PreferenceClient']);

//Test data:
echo $objClient->getColor();
//Continue with Performing changes to the client if the information exists...
}

我解决了这个问题。感谢所有提供帮助的人。在我尝试只获取cookie信息而不进行序列化之前各位,这是我的第一篇文章,如果我做错了什么,我深表歉意。我得给你补点东西?

最佳答案

您可以通过序列化、反序列化将对象存储在字符串中(就像 cookie 那样)。

setcookie ($name, serialize($object));   // set object

$object = unserialize($_COOKIE[$name]); // get object

但请记住,使用这种方法可能很危险。 PHP Object Injection

您可以使用json 代替序列化 来存储stdClass,这样就足够安全了。

setcookie ($name, json_encode($object));   // set object stdClass

$object = json_decode($_COOKIE[$name]); // get object stdClass

但最好使用session存储您的数据。您甚至可以在不调用序列化、反序列化的情况下存储对象。但是 __sleep__wakeup 魔法仍然有效。

setcookie , $_COOKIE , serialize , magic with serialization .

关于php - PHP 中的 Cookie 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20096825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com