如果Cookie不等于变量,如何重定向

时间:2015-04-05 09:16:29

标签: php redirect cookies

如果Cookie不等于可修改,我正在努力重定向用户。如果它确实等于vairable,那么它应该继续脚本。这是我的重定向代码:

if(empty($_GET)) {
    //No variables are specified in the URL.
    //Do stuff accordingly
    echo "No variables specified in URL...";
} else {
    //Variables are present. Do stuff:
    $id = htmlspecialchars($_GET["id"]);
    echo 'url query is ' . $id;
}

if(isset($_COOKIE['logged_in']) == $id)
{
    header("Location: test.php");
}
if(isset($_COOKIE['logged_in']) != $id)
{
    //continues the script

请注意,if statment($ id)中的vairable可以从url的查询中查看;例如,如果网址是," random.com/test.php?id = 17"并且cookie等于18脚本应该重定向。但是,如果网址是," random.com/test.php?id = 17"并且cookie等于17,然后保持在同一页面上。对不起,如果它听起来很复杂。

它不能像这段代码一样工作:无论可变等于什么,它都不会重定向。感谢

4 个答案:

答案 0 :(得分:1)

你在找这样的东西吗?如果是这样,它应该适用于您的情况:

<?php
if(empty($_GET)) {
    //No variables are specified in the URL.
    //Do stuff accordingly
    echo "No variables specified in URL...";
} else {
    //Variables are present. Do stuff:
    $id = htmlspecialchars($_GET["id"]);
    echo 'url query is ' . $id;
}

if(isset($_COOKIE['logged_in']) && $_COOKIE['logged_in']==$id)
{
    header("Location: test.php");
}
if(isset($_COOKIE['logged_in']) && $_COOKIE['logged_in']!=$id)
{
    //continues the script
}
?>

答案 1 :(得分:0)

标题仅在发送给客户端后才会应用。如果你想立即重定向,你可以在header(...)之后放置exit(0),在这种情况下你将停止执行脚本,并将当前标题发送到浏览器,这将重定向你。

if(isset($_COOKIE['logged_in']) && $_COOKIE['logged_in']==$id) {
    header("Location: test.php");
    exit(0);
}

//continues the script

答案 2 :(得分:0)

问题是您要将isset(结果)的“”与GET参数的{em>值进行比较,{{1} }:

$id

这说的是“确定是否设置if(isset($_COOKIE['logged_in']) == $id) 并将该确定与$_COOKIE['logged_in']进行比较”。 PHP将评估$id,其返回issettrue(如documentation中所述),并将falsetrue与表达式的另一面(false),意思是==,在给定您的示例时永远不会匹配。如果您查询可能正在寻找的“random.com/test.php?id=true”(或false)。

您所拥有的行意味着“确定是否设置$id并将 $_COOKIE['logged_in']值与值进行比较 $_COOKIE['logged_in']“,我相信你正在寻找的东西。在这种情况下,您要做的是首先检查$id是否已设置,然后检查$_COOKIE['logged_in']是否匹配{{1像这样:

$_COOKIE['logged_in']

如果这没有意义,这里有一个非常明确的版本,可能更清楚实际发生的事情:

$id

希望有所帮助。

答案 3 :(得分:-1)

你应该添加另一个条件。

 if(empty($_GET)) {
    //No variables are specified in the URL.
    //Do stuff accordingly
    echo "No variables specified in URL...";

} else {
    //Variables are present. Do stuff:
    $id = htmlspecialchars($_GET["id"]);
    echo 'url query is ' . $id;
}

if(isset($_COOKIE['logged_in']) && $_COOKIE['logged_in'] == $id)
{
    header("Location: test.php");
}
if(isset($_COOKIE['logged_in']) && $_COOKIE['logged_in'] != $id)
{
    //continues the script

或使用此脚本

if(isset($_COOKIE['logged_in']))
{
   if($_COOKIE['logged_in']==$id){
       header("Location: test.php");
   }
   else{
       //another condition to equal is not equal so directly we can use else
       //continues the script
   }
} else {
echo "Cookie not valid or available";
// redirect user 
}