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



我正在尝试创建一个页面,如果用户第一次来,它会重定向到索引页面,但如果用户第二次来,页面不会重定向。我使用简单的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");
}
?>

还要小心:您有if ($SESSION['views'] = 1),它将密钥设置为1,而不是比较它,正确的超全局名称是$_SESSION而不是$SESSION

首先(其中@nivrig和@Yan不修复)

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

应该是

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

和@nivrig一起去他的例子是正确的

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

不过,您的代码中有几个语法错误:

确保你写的是$_SESSION而不是$SESSION,当你使用if时,你必须使用==进行比较。单个=将为变量赋值。

由于您不想担心首先初始化变量,请使用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()。这样可以确保在重定向用户时不会执行下面的任何代码。

最新更新