$ _SESSION检查是否为空并重定向

时间:2013-09-27 09:08:43

标签: php

如何检查$_SESSION['myusername']是否为空,如果是,请将其重定向到index.html

我目前正在使用:

<?php
session_start();
/*** begin the session ***/
if(!isset($_SESSION['myusername']))
{
    header('Location:index.html');
}
?>

但这可以让非授权用户留下来。

8 个答案:

答案 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");
}