PHP重定向 - 具有多个条件的IF

时间:2016-06-28 01:16:05

标签: php

我遇到的问题非常简单,我不明白为什么。

需要一双新鲜的眼睛。

在我的配置文件中,我提取用户个人资料信息,如果他们的个人资料不完整且他们不在:家庭,设置,退出,个人资料错误页面,那么他们将被重定向。

基本上我是强制性的,或者他们无法导航到系统的其他区域。

$link = $_SERVER["REQUEST_URI"];
if($counter<9 && ($link !="home" OR $link !="logout" OR $link !="profileError" OR $link !="profileSettings")){
    header('Location: profileError');
    kill();
}

我已经测试了我的计数器,它似乎工作正常。

任何帮助都会得到启发!

5 个答案:

答案 0 :(得分:0)

setup:static-content:deploy包含来自网址的文件的完整路径名,例如$_SERVER['REQUEST_URI']/home.php。所以你的/folder/logout.php测试都没有用。尝试:

$link

只获取没有$link = basename($_SERVER['REQUEST_URI'], '.php'); 扩展名的文件名。

答案 1 :(得分:0)

您首先尝试debug您的代码echo $link$counter两者或添加else以查看错误

    $link = $_SERVER["REQUEST_URI"];
    //echo $link; echo $counter;

    if($counter<9 && ($link !="home" OR $link !="logout" OR $link !="profileError" OR $link !="profileSettings")){
        header('Location: profileError');
        kill();
    }
else{

echo "there is some error"."</br>";
echo $link; echo $counter;
}

答案 2 :(得分:0)

评估您的情况并测试标题位置,如果标题位置不起作用,请检查您的情况是否有错误。

答案 3 :(得分:0)

管理以使其正常工作。

$link = basename($_SERVER['REQUEST_URI'], '.php');
if($counter <9){
if($link !="home" OR $link !="logout" OR $link !="profileError" OR $link !="profileSettings"){
    header('Location: profileError');
    kill();
}
}

不确定为什么拆分IF语句会有所帮助,但至少它有效。

答案 4 :(得分:0)

您应该使用&&条件运算符而不是||(OR)。

翻译:如果页面没有被调用X和Y那么......否则,如果页面没有被调用X或Y那么...它将永远被调用。

$link = basename($_SERVER['REQUEST_URI'], '.php');
if($counter <9){
    if($link !="home" && $link !="logout" && $link !="profileError" && $link !="profileSettings"){
        header('Location: profileError');
        kill();
    }
}