2014-08-28 56 views
0

根據this bug report,多次調用session_start和session_write_close會創建重複的cookie,如果在大循環中多次調用cookie,可能會損害瀏覽器的性能。多次調用session_start會創建重複的cookie嗎?

但是當我使用下面的代碼測試這個bug時,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> 

我在找多個餅乾的方法錯誤還是修正了這個錯誤?

+0

http://php.net/manual/en /function.session-start.php 4.3.3 \t從PHP 4.3.3開始,在會話先前啓動後調用session_start()將導致E_NOTICE級別的錯誤。另外,第二次會話開始將被忽略。 什麼都不會發生 – Soulan 2014-08-28 14:59:30

回答

2

編輯:

這個bug被標記爲Not a 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; 

得到這個信息,如果一個會話媒體鏈接啓動它不會有任何效果

+1

我相信你引用的代碼指的是一個接一個地調用session_start,而不用在兩者之間調用session_write_close。 – 2014-08-28 15:00:53

+0

@AmadeusDrZaius我更新了我的文章 – ins0 2014-08-28 15:08:30

+0

我相信PHP開發人員在行爲被認爲是正確的時候會說「沒有錯誤」,而不是行爲不存在時。 – 2014-08-28 15:31:42