我有这段代码:
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)有效地忽略了块
怎么可能?
答案 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'];
?>
在尝试之前,清除会话变量