我有2个文件,在我的主要index.php上我有:
<?php
session_start();
$_session['login']=false;
??
我有另一个php文件,我存储导航栏,在这个php文件中我有
if ($_SESSION['login']==true) { ?>
show this menu.. user is logged in.
<?php }else { <?
show this one, not logged in.
<?php } ?>
在我的login.php中我只是:
session_start();
$_SESSION['login']=true;
那么为什么当我调用login.php文件(点击一个按钮)会话状态没有改变时呢?
答案 0 :(得分:1)
$_session
是一个超全局,必须是大写的。
参考:
并且检查过错误会让你有所了解。
您还需要确保使用会话在所有文件中启动会话。
参考:
您还有2x ??
,如果它是您真实代码的一部分我不会这样做。
如果是,则需要将其读作?>
。
旁注:
最好检查会话是否已设置,而不是检查它是否true|false
。
即:
if (isset($_SESSION['login']) && $_SESSION['login']==true)
或(非空)
if (!empty($_SESSION['login']) && $_SESSION['login']==true)
答案 1 :(得分:0)
首先,您使用$ _SESSION的所有文件必须在所有代码之前插入“session_start()”
答案 2 :(得分:0)
PHP中的Superglobals必须用大写字母书写。因此,这应该是大写的:
$_session['login']=false;
像这样:
$_SESSION['login']=false;
答案 3 :(得分:0)
def sortData(data, choice):
sorters = {"Average": lambda item: sum(item[1]) / len(item[1]),
"Highest - Lowest": lambda item: item[1],
"Minimum": lambda item: min(item[1]),
"Maximum": lambda item: max(item[1])}
if choice in sorters:
sorter = sorters[choice]
for name, score in sorted(data.items(), key=sorter, reverse=True):
print("%s: %s" % (name, score))
else:
print("Unknown choice: " + choice)
data = {"Name": "1,2,3\n", "Name_2": "4,5,6\n", "Name_3": "10,9,8\n"}
data = {k: [int(x) for x in v.split(',')] for k, v in data.items()}
sortData(data, "Minimum")