如何检查$_SESSION['myusername']
是否为空,如果是,请将其重定向到index.html
?
我目前正在使用:
<?php
session_start();
/*** begin the session ***/
if(!isset($_SESSION['myusername']))
{
header('Location:index.html');
}
?>
但这可以让非授权用户留下来。
答案 0 :(得分:2)
利用
<?php
session_start();
/*** begin the session ***/
if(empty($_SESSION['myusername']))
{
header('Location:index.html');;
}
?>
答案 1 :(得分:0)
将您的代码更改为此
<?php
session_start();
/*** begin the session ***/
if(!$_SESSION['myusername'])
{
header('Location:index.html');;
}
?>
答案 2 :(得分:0)
也许您应该使用更强大的方法来控制对页面的访问,例如RBA系统......
看看this,这对我有很大帮助
答案 3 :(得分:0)
尝试这样:
session_start();
if(!isset($_SESSION['blah']) && empty($_SESSION['blah'])) {
header('Location:index.html');
}
答案 4 :(得分:0)
exit()
之后 die()
或header()
答案 5 :(得分:0)
如果要检查变量是否为空,只需使用empty()
函数。
if(empty($_SESSION['myusername'])) {
header('Location:index.html');
}
您不必使用isset
,因为未定义变量empty
函数将返回false,但不会生成任何警告。
确定变量是否为空。变量是 如果它不存在或者其值等于FALSE则认为为空。 如果变量不存在,empty()不会生成警告。
实际上这不是检查授权是否有效的好方法,你必须使用其他一些带有密码哈希,IP地址等的结构。
答案 6 :(得分:0)
我知道这是旧的;但你没有分享完整的代码。
我知道这是来自本教程:http://www.phpeasystep.com/phptu/6.html
如果检查日志,则会看到HTML标记后无法设置标题。如果你看一下教程中的代码,你会发现他在顶部有两个HTML注释。
删除它们,PHP
将能够设置标头并重定向用户。否则,请在else
语句中加载页面,然后在if
中再次提供登录表单。希望这会有所帮助。
此外,我相信你在两年后变老了,更聪明;但这是一个糟糕的登录过程和(因为代码不会逐字工作)一个糟糕的教程。例如,我仍然可以使用curl http://example.com/protectedpage.php
获取该页面的内容,因为它不会重定向我,并且它将用于页面的其余部分。
答案 7 :(得分:0)
if(isset($_POST['submit'])){
echo "Success";
}else{
header("location:yoursiteurl");
}