多次调用session_start会创建重复的cookie吗?

时间:2014-08-28 14:55:11

标签: php firebug session-cookies

根据 this bug report ,多次调用session_start和session_write_close会创建重复的Cookie,如果在大循环中多次调用,则可能会损害浏览器的性能。

但是,当我使用以下代码测试此错误时,Firebug仅在“Cookies”选项卡下显示每个cookie的一个副本。

<?php

session_name('uniqueName1');
session_start();
$_SESSION['Foo1'] = 'Bar1';
session_write_close();

session_name('uniqueName2');
session_start();
$_SESSION['Foo2'] = 'Bar2';
session_write_close();

session_name('uniqueName1');
session_start();
$sessionValue1 = $_SESSION['Foo1'];
session_write_close();

session_name('uniqueName2');
session_start();
$sessionValue2 = $_SESSION['Foo2'];
session_write_close();

?>

<!doctype html>
<html>
<head>
    <meta charset='utf-8'>
</head>
<body>
    <p>Test</p>
    <p><?php echo $sessionValue1; echo $sessionValue2; ?></p>
</body>
</html>

我是以错误的方式寻找多个Cookie还是修复了这个错误?

1 个答案:

答案 0 :(得分:2)

编辑:

此错误标记为Not a bug,因此特定系统/ modif也未触发此问题。版本或它永远不存在,顺便说一下,这个bug来自后期2006;)


如果您一个接一个地多次呼叫session_start,那就不会赢了。您可以通过查看

中的php源代码来获取此信息

https://github.com/php/php-src/blob/master/ext/session/session.c

switch (PS(session_status)) {
    case php_session_active:
        php_error(E_NOTICE, "A session had already been started - ignoring session_start()");
        return;
        break;

如果会话已经全部启动,则无效