2012-05-17 70 views
0

我的網站正在開發中有一個奇怪的問題。
一旦登錄,用戶將被重定向到閱讀許可協議。在此頁面中,我稱爲terms.php,條件顯示一個確認按鈕,用於將用戶重定向到用戶登錄時調用agreed.php的頁面,否則:調用register.phpFirefox會話開發問題

奇怪的事情是隻在Firefox(已安裝螢火蟲)。
一旦登錄,terms.php的表格顯示action="register.php"!而不是agreed.php,並且我所做的所有檢查都表明用戶未登錄。 另一個奇怪的事情是,如果我按F5刷新,它會顯示agreed.php! 它不會發生在IE和Chrome中。

不知道這可能是什麼?

function logged_in() { 
    return isset($_SESSION['USER_ID']); 
} 

function redirect_to($location = NULL) { 
    if ($location != NULL) { 
     header("Location: {$location}"); 
     exit; 
    } 
} 

的login.php

if (shouldReadTerms()) 
    redirect_to("terms.php"); 

terms.php

<?php if(logged_in()): ?> 
    <?php if (shouldReadTerms()): ?> 
     <form action="agreed.php" method="POST"> 
    <?php endif; ?> 
    <br /> 
    <br /> 
    <button <?php if (!shouldReadTerms()) echo 'disabled'; ?>>I Agree </button> 
    <?php if (shouldReadTerms()): ?> 
     </form> 
    <?php endif; ?> 
    <br /> 
    <br /> 
<?php else: ?> 
    <form action="register.php" method="POST"> 
    <br /> 
    <br /> 
    <button>I Agree</button> 
    </form> 
<?php endif; ?> 
+0

'任何想法這可能是什麼?' - 不是沒有看到一些代碼。 – DaveRandom

+0

嗨特德,請你可以發帖代碼 –

+0

加代碼..... – Ted

回答

1

如果不是在IE或Chrome的問題,你可以嘗試

<meta http-equiv="cache-control" content="no-cache"> 

在該頁面的標題中。

+0

謝謝。沒有去...... – Ted

2

這個錯誤可能有兩個原因。會話和緩存。

如果您確信問題只出現在FF開始刪除cookies並清除瀏覽器緩存。

如果這並不能幫助增加terms.php

header("Cache-Control: no-cache, must-revalidate"); 

如果這也沒有幫助試試,看看會議的轉儲在授權後,每一個步驟。

+0

我改變了我的session.php以包含該標題行。它訣竅。一旦我把這條線放入terms.php中,錯誤依然存在。這讓我想,也許它與前一頁有關......我不確定是否爲我的所有頁面放置此行將是一個好主意(我認爲緩存確實會加快速度......)但我是不知道我完全理解這條線的意思。您能否提一些建議? – Ted

+0

此標頭禁止使用聲明的頁面的緩存版本。在所有頁面上使用它並不好。如果之前發送過的數據,從terms.php發送標題可能不起作用。嘗試從session.php發送一個頭,但只在這個頁面上測試這個想法。 – ShaaD

0

悲哀而真實: 改變:

redirect_to("terms.php"); 

redirect_to("terms.php?".rand()); 

問題解決了。 雖然不是100%確定的原因。但它現在像一個魅力