2013-04-01 34 views
3

我想读取cookie并使用php计算服务器端的长度,但无法找到任何直接的方法。那么如何实现这个任务呢?在PHP中计算Cookie大小

+1

每个cookie 4千字节,其中名称和OPAQUE_STRING组合形成4千字节限制。 –

+2

你是什么意思的长度...?是它的大小..? – alwaysLearn

+0

@dreamCoder:是的,这是大小 – blackhole

回答

0

strlen($_COOKIE['cookie_name'])

4

这是怎么回事?

setcookie("user", "Dino babu kannampuzha", time() + 3600); 

if (isset($_COOKIE["user"])) { 
    $data = $_COOKIE["user"]; 
    $serialized_data = serialize($data); 
    $size = strlen($serialized_data); 
    echo 'Length : ' . strlen($data); 
    echo "<br/>"; 
    echo 'Size : ' . ($size * 8/1024) . ' Kb'; 
} 

//输出

Length : 21 
Size : 0.232 Kb 
+0

请注意,由于cookie将只在页面重新加载后才可用,只有*重新加载后,才会满足条件。 – Boaz

+0

@波斯语:是的,你的仪式。它只是一个样本。 – Dino

+1

+1,但是Cookie的大小限制是否包含数据,如到期时间? (这不是解析到$ _COOKIE var) – Emissary

2

要获取原始的饼干,其长度:

$rawCookies = isset($_SERVER['HTTP_COOKIE']) ? $_SERVER['HTTP_COOKIE'] : null; 
$rawLength = strlen($rawCookies); 
echo $rawLength; 
0

不知道这是否是你想要的,但你可以试试这个

$start_memory = memory_get_usage(); 
$cookie = $_COOKIE['YourCookie']; 
echo memory_get_usage() - $start_memory-PHP_INT_SIZE * 8; 


    <?php 
    setcookie("TestCookie", '10'); 
    $start = memory_get_usage(); 
    $cookie = $_COOKIE['TestCookie']; 
    echo memory_get_usage() - $start; //116 bytes 
    ?> 
0

请参考以下资源:
http://extraconversion.com/data-storage/characters/characters-to-bytes.html
Measure string size in Bytes in php
https://mothereff.in/byte-counter

而且我的截图是使用Firebug拿到饼干大小。 enter image description here

我用我的代码@Dino但改变的东西,如strlenmb_strlen为支持Unicode。
它变成:

$data = $_COOKIE['user']; 
$name = 'user'; 
if (!is_scalar($data)) { 
    $data = serialize($data); 
} 
$size = mb_strlen($data)+mb_strlen($name); 
echo 'Cookie name length : ' . mb_strlen($name) . "<br>\n"; 
echo 'Cookie content length : ' . mb_strlen($data) . "<br>\n"; 
echo 'Cookie size : ~' . ($size) . ' Bytes<br>'."\n"; 

这几乎是接近尺寸出现在Firebug。我真的不明白为什么大小必须为(n*8/1024),如果我们从上面的资源引用只有1个字符1字节除了unicode,所以我必须使用mb_strlen而不是strlen