我正在尝试创建一个页面,如果您的用户第一次重定向到索引页面,但如果用户第二次来到该页面不重定向。 我使用简单的php会话来计算访问次数和if语句来检查条件:
<?php
session_start();
$_SESSION['views'] = $SESSION['views']+1;
if($SESSION['views'] = 1){
header("location:index.php");
}
?>
问题是用零初始化数组,即
<?php
$_SESSION['views']=0;
?>
它看起来既简单又不那么艰难。
答案 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()
。这可以确保在重定向用户时不会执行下面的任何代码。