2012-07-14 93 views
2

我努力讓自己在哪,如果你的用戶來第一次將其重定向到索引頁面一個頁面,但如果用戶進入第二次的頁面不重定向。 我使用簡單的PHP會話訪問和計數if語句來檢查條件:PHP會話計數訪問和重定向,如果(會話[「訪問」] = 1)

<?php 
session_start(); 
$_SESSION['views'] = $SESSION['views']+1; 
if($SESSION['views'] = 1){ 
header("location:index.php"); 
} 
?> 

的問題是數組零即

<?php  
$_SESSION['views']=0; 
?> 

這niether,它更簡單的初始化看起來也並不困難。

+1

需要==到如果沒有= – MilMike 2012-07-14 07:18:02

+1

你不小心,你的會議VAR添加到1'如果($ SESSION [ '意見'] = 1)'。用==代替條件語句,而不是'=' – 2012-07-14 07:21:41

回答

10

使用isset()檢查重點已創建:

<?php 
session_start(); 

if (!isset($_SESSION['views'])) { 
    $_SESSION['views'] = 0; 
} 

$_SESSION['views'] = $_SESSION['views']+1; 

if ($_SESSION['views'] == 1) { 
    header("location:index.php"); 
} 
?> 

另外要小心:你有if ($SESSION['views'] = 1)這是設置項設置爲1不進行比較,並正確的超全局名稱是$_SESSION$SESSION

+0

感謝nivrig指出我的錯誤.... 這就是我應該使用的地方isset() 希望它能工作noW ,,,, – Leo 2012-07-14 07:54:18

0

同意nivrig。 檢查會話是否已設置。

你有幾個語法錯誤在你的代碼,但:

確保你寫$ _SESSION而不是$ SESSION,當你使用if情況下,你必須使用==來比較。單個=將爲變量分配一個值。

1

首先(其中@nivrig和@Yan不固定)的

if($_SESSION['views'] = 1){ 
header("location:index.php"); 
} 

應該

if ($_SESSION['views'] == 1){ 
header("location:index.php"); 
} 

與@nivrig 他的榜樣去是對的

+0

謝謝你的推薦Ryanc – Leo 2012-07-14 07:56:21

+0

你好歡迎@absar akram – ryanc1256 2012-07-14 07:58:36

0

既然你做不要擔心首先初始化變量,利用isset()這將檢查變量是否被設置並且不是NULL:

<?php 

session_start(); 

if(isset($_SESSION['views'])){ 
    $_SESSION['views']++; 
}else{ 
    $_SESSION['views'] = 0; 
    header("location: index.php"); 
    exit(); 
} 
?> 

如果你不關心有多少次用戶一直到頁面,那麼你可以簡單地使用:

<?php 

session_start(); 

if(!isset($_SESSION['views'])){ 
    $_SESSION['views'] = 0; 
    header("location: index.php"); 
    exit(); 
} 
?> 

第二種解決方案並不擔心增加views,只是數量檢查值是否已被設置。如果尚未設置,則可以斷言這是用戶第一次訪問該頁面,然後設置變量並重定向用戶。通過設置變量,您將確保用戶在查看頁面後不會進入循環。這種方法應該按照最初的要求更好地簡化事情

另外,還要確保你把exit()將用戶重定向後。這可以確保在重定向用戶時以下任何代碼都不會被執行。