2015-11-04 30 views
0

我正在嘗試爲訪問者爲我的網站制定簡單的導航規則。我想阻止訪問者訪問特定頁面,如果他們以前沒有訪問過其他頁面。 我對這個page1.php中簡單的代碼:使用PHP會話進行頁面導航

<?php 
session_start(); 
$_SESSION["currentPage"] = 1; 
?> 

而這種代碼在我使page2.php:

<?php 
session_start(); 
if ($_SESSION["currentPage"] == 1) { 
    $_SESSION["currentPage"] = 2; 
    $_SESSION["test"] = "Hello"; 
}else{ 
    $_SESSION["currentPage"] = 3; 
    } 
?> 

訪問page1.php中,然後使page2.php和呼應了$_SESSION["currentPage"]$_SESSION["test"]後我得到「Hello」和「3」。

我只是不明白爲什麼代碼在if語句的兩個塊中執行...我需要它在$_SESSION["currentPage"]設置爲「2」後停止。

我運行PHP 28年3月5日

回答

0

它執行

$_SESSION["currentPage"] = 2; 
$_SESSION["test"] = "Hello"; 

當您打開使page2.php第一次,

$_SESSION["currentPage"] = 3; 

當您刷新頁面,因爲$_SESSION["currentPage"]不1了。
$_SESSION在請求中持續存在。清除Cookie並重試。

+0

感謝您的回覆,@AlexBlex。但是,當發生以下步驟時會發生這種情況: 1.清除瀏覽器緩存和Cookie 2.訪問page1.php 3.訪問page2.php – pnb1

+1

我懷疑如此。嘗試使用curl重現它:1.'curl -v http://.../ page1.php',2.'curl -v --cookie「...來自以前響應的會話cookie ...」http: //..../ page2.php'並用兩個命令的輸出更新你的問題。 –

+0

,我發現刪除代碼中的'session_cache_limiter('private_no_expire')'行解決了這個問題。對於我來說,這條線在解決與在窗體中導航返回時ERR_CACHE_MISS錯誤的問題。 – pnb1