2014-12-03 69 views
1

真的很奇怪的錯誤。我在我的開發計算機上運行MAMP臨了,我有一個非常簡單的測試PHP程序看起來像這樣:如果目錄名稱以「ads」開頭,則會話不工作

<?php 
    session_start(); 
    var_dump($_SESSION); 

且運行在以往任何時候我把它放在我的服務器上,傾出會話變量。除非,目錄名稱以「ads」開頭(然後它只輸出一個空數組)。

http://domain/test.php - works 
http://domain/ads/test.php - doesn't work 
http://domain/adtest/test.php - works 
http://domain/adserve/test.php - doesn't work 
http://domain/sads/test.php - works 

我沒有任何使用「廣告」的.htaccess文件。

更新:我做了一些更多的測試,發現這隻發生在Safari(不在Chrome或Firefox中)。但Safari是將用於此網站的主要瀏覽器。如果我不需要,我不想改變整個目錄的名字,只是爲了緩解一些Safari的怪癖。我試過重啓Safari並沒有運氣。在PHP中使用的cookie

+0

也許你在Safari中啓用了某種形式的adblocker。沒有它的測試。順便說一句,保持'/ ads /'路徑,讓無所不在的elblock adblocker更容易。 – mario 2014-12-03 10:07:01

+0

我想到這一點以及不...標準股票Safari。我甚至嘗試在Safari的偏好設置中關閉「阻止來自第三方和廣告客戶的cookies」,但沒有任何效果。 – 2014-12-03 10:09:21

回答

0

會議,所以你需要檢查你的Safari瀏覽器允許cookies和發送會話cookie返回到服務器

+0

就像我說過的...它幾乎在每一頁上都有效。所以是的...餅乾工作。 – 2014-12-03 10:17:39

+0

好的,你可以嘗試在session_start()$ _SESSION ['test'] ='foo'之後添加這一行。然後刪除該行並刷新該頁面以查看它是否看到測試var – 2014-12-03 10:20:17

+0

因此,即使在刪除該行後,它仍會存儲「foo」。因此,它將任何以「ads」開頭的東西視爲自己的獨立網站? – 2014-12-03 17:53:44

0

所以,當我在其他瀏覽器中沒有遇到此,包括Safari在其他機器上,我剛剛從我的開發機器上的Safari中刪除了所有相關的cookie,並且所有事情都再次開始工作。不知道什麼會導致錯誤,但至少這是一個很容易修復的結果。

編輯:問題幾天後回來,所以我不得不再次刪除cookie。我當然希望這不會發生在別人的瀏覽器上。