2010-08-29 77 views
1

我有一個簡單的登錄頁面。在Mozilla和IE中一切正常。當我嘗試在Safari中登錄時,會話是空的,只是一個白頁。如果我檢查會話ID,它會給我的身份證,但沒有別的。 echo session_id(); 如果我複製頁面URL,然後轉到另一個頁面並粘貼URL,瀏覽器將顯示該頁面。如果我刷新它,它會再次消失(但它總是顯示會話ID) 一切適用於Mozilla和IE。php會話在Safari中不起作用

更新:謝謝大家的幫助,是的,這是頁面上的東西,我試了一個簡單的頁面,它的工作。學到了我的教訓。再次感謝!在PHP

回答

1

會話使用的會話cookie,那麼檢查:

  • 是Safari瀏覽器允許餅乾?默認情況下,會話cookie,它被稱爲「phpsessionid」
  • 你確定你使用的「在session_start()」? (和它的更好,如果你使用一個「會話名稱()」太)

我希望這有助於

+0

Safari顯示我所有的cookie,我用「session_name()」,它也顯示它。但是沒有任何更改,當我複製並粘貼URL時,它給了我相同的會話ID並顯示頁面。當我刷新它時,它會再次消失。 – Tamara 2010-08-30 18:46:28

+0

那麼.. @Col。 Shrapnel是正確的,你必須檢查id是否相同..並且調試你的代碼..用一個簡單的頁面測試,試着找出什麼是錯誤的,如果你在網上打開你的頁面,也許我們可以測試它 – pleasedontbelong 2010-08-30 19:19:57

0

只是檢查Safari瀏覽器的cookie政策。
它看起來像你的瀏覽器只是不發送會話ID cookie返回。

如果我檢查會話ID,它給我的ID

它不是會話ID本身什麼OU必須檢查。
反倒是如果會話ID和以前一樣

如果是相同的,也有一些是與您的代碼。
你必須開始調試它。從運行一個測試文件與此代碼
開始:

<?php 
session_start(); 
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0; 
echo "Counter ".$_SESSION['counter']++." раз.<br> 
<a href=".$_SERVER['PHP_SELF'].'?'.session_name().'='.session_id().">reload</a>"; 
?> 

,如果它的工作原理,使其

<?php 
session_start(); 
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0; 
echo "Counter ".$_SESSION['counter']++." раз.<br> 
<a href=".$_SERVER['PHP_SELF'].">reload</a>"; 
?> 

,並找到一種方法來看點的HTTP交換協議。這是最重要的事情 - 查看從服務器返回的cookies。我知道沒有Safari的工具,但應該有一個

+0

是的,它是相同的確切ID。在我的safari設置中的「接受cookies」中,它說「always」 – Tamara 2010-08-30 18:30:49

+0

@Tamara以及您必須調試您的代碼。如果它是相同的ID,它不是技術問題,而是代碼問題。你必須調試它 – 2010-08-30 18:52:28