根据 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还是修复了这个错误?
答案 0 :(得分:2)
编辑:
此错误标记为Not a bug
,因此特定系统/ modif也未触发此问题。版本或它永远不存在,顺便说一下,这个bug来自后期2006
;)
如果您一个接一个地多次呼叫session_start
,那就不会赢了。您可以通过查看
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;
如果会话已经全部启动,则无效