PHP中的數組



arrays cookies (5)

Cookie基本上是文本,因此您可以通過將數組編碼為JSON字符串來存儲數組(請參閱json_encode )。 請注意,您可以存儲的字符串長度有限制。

https://ffff65535.com

如何在cookie中存儲數組的正確方法? 在PHP代碼示例中:

$number_ticket=2;
$info[7][5]=1;
$info[8][5]=1;

嘗試serialize() 。 它將數組轉換為字符串格式,然後您可以使用unserialize()將其轉換回數組。 像WordPress這樣的腳本使用它來將多個值保存到單個數據庫字段中。

你也可以像Rob說的那樣使用json_encode() ,如果你想在javascript中讀取cookie,這可能很有用。


序列化數據:

setcookie('cookie', serialize($info), time()+3600);

然後反序列化數據:

$data = unserialize($_COOKIE['cookie']);

在數據之後,$ info和$ data將具有相同的內容。


您還可以嘗試在不同的cookie中編寫不同的元素。 Cookie名稱可以設置為數組名稱,並且可以作為數組用於PHP腳本,但單獨的cookie存儲在用戶的系統中。 考慮使用explode()設置一個具有多個名稱和值的cookie。 建議不要將serialize()用於此目的,因為它可能導致安全漏洞。 有關詳細信息,請參閱setcookie PHP函數


要將數組值存儲在cookie中,首先需要將它們轉換為字符串,因此這裡有一些選項。

將Cookie存儲為JSON

存儲代碼

setcookie('your_cookie_name', json_encode($info), time()+3600);

閱讀代碼

$data = json_decode($_COOKIE['your_cookie_name'], true);

如果您需要使用JavaScript在前端讀取cookie,JSON也可以很好地選擇。

實際上,您可以使用任何encrypt_array_to_string / decrypt_array_from_string方法組,它將數組轉換為字符串並將字符串轉換回相同的數組。 例如,您也可以使用explode / implode作為整數數組。

警告:不要使用序列化/反序列化

來自PHP.net

Do not pass untrusted user input to unserialize(). - HTTP包括cookie的任何內容都是不可信的!

與安全相關的參考

作為替代解決方案,您也可以在不將數組轉換為字符串的情況下完成。

setcookie('my_array[0]', 'value1' , time()+3600);
setcookie('my_array[1]', 'value2' , time()+3600);
setcookie('my_array[2]', 'value3' , time()+3600);

之後,如果您打印$_COOKIE變量,您將看到以下內容

echo '<pre>';
print_r( $_COOKIE );
die();
Array
(   
    [my_array] => Array
        (
            [0] => value1
            [1] => value2
            [2] => value3
        )

)

這是PHP功能的記錄。

來自PHP.net

Cookies names can be set as array names and will be available to your PHP scripts as arrays but separate cookies are stored on the user's system.





cookies