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

时间:2012-07-14 07:13:08

标签: php session redirect

我正在尝试创建一个页面,如果您的用户第一次重定向到索引页面,但如果用户第二次来到该页面不重定向。 我使用简单的php会话来计算访问次数和if语句来检查条件:

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

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

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

它看起来既简单又不那么艰难。

4 个答案:

答案 0 :(得分:9)

使用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

答案 1 :(得分:1)

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

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

应该是

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

和@nivrig一起去 他的榜样是对的

答案 2 :(得分:0)

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

您的代码中存在一些语法错误:

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

答案 3 :(得分: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()。这可以确保在重定向用户时不会执行下面的任何代码。