PHP重定向仅在未找到会话变量时重定向多次

PHP重定向仅在未找到会话变量时重定向多次,php,session,redirect,header,Php,Session,Redirect,Header,我有几个域指向同一个php脚本。 在访问时,我想重定向用户做一个随机域的那些,但只有一次。 为了实现这一点,我设置了一个会话变量,重定向并检查该变量 我的代码是: session_start(); if($_SESSION['seen'] != 1) { $_SESSION['seen'] = 1; header("Location: ".$randomurl); } 会话_start(); 如果($\会话['seen']!=1){ $_SESSION['seen']=1

我有几个域指向同一个php脚本。 在访问时,我想重定向用户做一个随机域的那些,但只有一次。 为了实现这一点,我设置了一个会话变量,重定向并检查该变量

我的代码是:

session_start(); if($_SESSION['seen'] != 1) { $_SESSION['seen'] = 1; header("Location: ".$randomurl); } 会话_start(); 如果($\会话['seen']!=1){ $_SESSION['seen']=1; 标题(“位置:.$URL”); } 因此,如果用户从未见过该页面,它应该只重定向1次,因为此后会话变量将包含1,并且不会重定向

然而,这是重定向我大约5次,直到它停止在一页上,我无法解释为什么

有人有线索吗?

试试:

if(isset($_SESSION['seen']) && $_SESSION['seen']!= 1) {
....
}

您可能可以为此使用cookie。如果用户希望再次看到随机页面,那么可以删除他们的会话cookie,这只是浪费了在服务器上的查找。那么,您在每个域上或仅在一个入口点上都有此代码?如果在每个域上,那么这是非常合乎逻辑的,因为每个新域将无法读取为调用域放置的会话cookie,并且只有当您重定向到已访问域上的url时,它才会停止。(因为会有一个当前有效的会话cookie)就像Harald说的,我很确定在设置会话时它是每个域的,除非它是子域,在这种情况下你可以将值设置为“.domain”。也许这会有帮助,或者。。没有工作,我想问题是因为我有不同的域,会话只对一个域有效。您从哪里获得
$\u会话[“valid\u user”]
?OP没有提到。此外,你应该总是为你的答案提供某种解释/推理。强烈反对只使用代码的答案。
<?php

session_start();


if ( !isset( $_SESSION["valid_user"]) )

  { header("location:domain");
}