2012-07-14 57 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()将用户重定向后。这可以确保在重定向用户时以下任何代码都不会被执行。