奇怪的问题PHP会话内部情况

时间:2016-10-01 07:42:45

标签: php session conditional

我有这段代码:

session_start();

$i = 'NO';

if ( $_GET['page'] != 'login' ) {

    $_SESSION['redirect'] = 'my-account';

    $i = 'YES';

}

逻辑说:

总是 $ _ GET ['页面']!="登录" ,IF条件中的块将被跳过...

在这样的网址中:www.example.com/?page=login

第一次没问题,$_SESSION['redirect']没有价值

如果我重新加载页面,$i仍然具有值"否" (确定) 但$_SESSION['redirect']现在包含值" my-account"

目前,此代码是我的测试网址上写的所有内容

更奇怪的是:

Chrome / Firefox(Windows)和Chrome(Mac)会出现此行为

Firefox(Mac)有效地忽略了块

怎么可能?

2 个答案:

答案 0 :(得分:1)

所以,即使你认为它不应该,你的会话也会被设定? 无论如何,您的页面可能已被调用 - 无论是重定向还是自动包含,当您自己调用该页面时,浏览器会调用它,因为它正在尝试加载" favicon.ico&# 34。

答案 1 :(得分:1)

尝试以下代码:

<?php
session_start();

$i = 'NO';
$page = $_GET['page'];
if ( isset($page) ) {
    if ($page != 'login') {
        $_SESSION['redirect'] = 'my-account';
        $i = 'YES';
    } else {
        $_SESSION['redirect'] = '';
    }
}

echo $i;
echo $_SESSION['redirect'];
?>

在尝试之前,清除会话变量