用于计算访问次数和重定向if的PHP会话(会话[';访问次数';]=1)

用于计算访问次数和重定向if的PHP会话(会话[';访问次数';]=1),php,session,redirect,Php,Session,Redirect,我试图制作一个页面,如果用户第一次来,它会重定向到索引页面,但是如果用户第二次来,页面不会重定向。 我使用简单的php会话计算访问次数,并使用if语句检查条件: <?php session_start(); $_SESSION['views'] = $SESSION['views']+1; if($SESSION['views'] = 1){ header("location:index.php"); } ?> 问题是用零初始化数组,即 <?php $_SESS

我试图制作一个页面,如果用户第一次来,它会重定向到索引页面,但是如果用户第二次来,页面不会重定向。 我使用简单的php会话计算访问次数,并使用if语句检查条件:

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

问题是用零初始化数组,即

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

它看起来很简单,但也不太难。

使用
isset()
检查密钥是否已创建:

<?php
session_start();

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

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

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

还要小心:如果($SESSION['views']=1)将键设置为1,则您没有比较它,正确的超全局名称是
$\u SESSION
not
$SESSION

同意nivrig。 检查会话是否已设置

但是,代码中有几个语法错误:

确保您编写了$\u会话而不是$SESSION,并且在使用if用例时,必须使用==进行比较。单个=将为变量赋值。

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

应该是

if ($_SESSION['views'] == 1){ 
header("location:index.php");
}
和@nivrig一起去
他的示例是正确的

,因为您不想先初始化变量,使用它将检查变量是否已设置且不为空:

<?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();
}
?>

第二种解决方案不需要增加
视图的数量
,只需检查该值是否已设置。如果尚未设置,则可以断言这是用户第一次访问页面,然后设置变量并重定向用户。通过设置变量,您将确保用户在查看页面后不会进入循环。这种方法应该更好地简化最初要求的事情


另外,请确保在重定向用户后放置
exit()
。这可以确保重定向用户时不会执行下面的任何代码。

如果不小心将会话变量设置为1,则需要将==添加到if not=中<代码>如果($SESSION['views']=1)。使用
=
代替条件语句,而不是
=
谢谢nivrig指出我的错误。。。。这正是我应该用的地方希望现在能用,,,,
<?php

session_start(); 

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