3

我想读取 cookie 并使用 php 在服务器端计算其长度,但找不到任何直接的方法。那么如何完成这个任务呢?

4

5 回答 5

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
于 2013-04-01T09:08:14.657 回答
2

要获取原始 cookie 及其长度:

$rawCookies = isset($_SERVER['HTTP_COOKIE']) ? $_SERVER['HTTP_COOKIE'] : null;
$rawLength  = strlen($rawCookies);
echo $rawLength;
于 2013-04-01T09:17:08.063 回答
0

strlen($_COOKIE['cookie_name'])?

于 2013-04-01T09:07:37.077 回答
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   
  ?>
于 2013-04-01T09:18:24.290 回答
0

请参阅以下资源:
http :
//extraconversion.com/data-storage/characters/characters-to-bytes.html 在 php
https://mothereff.in/byte-counter中以字节为单位测量字符串大小

还有我使用 Firebug 获取 cookie 大小的屏幕截图。 在此处输入图像描述

我使用来自@Dino 的代码,但更改了一些内容,例如strlen支持mb_strlenunicode。
它成为了:

$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.

于 2017-06-13T05:48:28.707 回答