使用PHP会话验证用户

时间:2014-11-08 19:50:11

标签: php session authentication

我已经设置了一些会话代码,但它似乎没有工作!

在登录表单上的POST请求的登录验证脚本中,我的代码如下:             

        if( isset($_POST['email']) && isset($_POST['password']) )
        {
        // Perform Lookup
                $sql = "SELECT * FROM authentication WHERE email='" . $email . "';";
                $query = mysqli_query($conn,$sql);
                $fetch = mysqli_fetch_assoc($query);
                $fetched = $fetch['email'];
            if($fetched == $email)
            {
                // auth okay, setup session
                $_SESSION['user'] = $_POST['email'];
                // redirect to required page
                header( "Location: app.php" );
             } else {
                // didn't auth go back to loginform
                //header( "Location: fail.html" );
                die("Failed to auth.");
             }
         } else {
             // username and password not given so go back to login
             //header( "Location: loginform.html" );
            die("NO Username or Password Given");
         }

        ?>

在我的"安全"页面位于顶部..

        <?php
        session_start();
        session_regenerate_id();
        if(!isset($_SESSION['user']))      // if there is no valid session
        {
            header("Location: index.php?message=notauthed");
        }
        require 'includes/header.php';
        $name = $_SESSION['user'];
        ?>

在我的登出脚本中,这已经到位..

<?php
session_start();
unset($_SESSION['user']);
session_destroy();
header("Location: index.html");
?>

Woops完全忘了包含问题哈哈:)

登录脚本有效,重定向正常。

登录后,我无法回显$ name = $ _SESSION [&#39; user&#39;];

此外,当我退出时,我仍然可以访问应用页面。

另外**我在PHP 5.3上运行?我认为。不是最新的,hostgator php ..

1 个答案:

答案 0 :(得分:0)

尝试:

    <?php
session_start();
session_unset($_SESSION['user']);
header("Location: index.html");
?>

这种方法不是最好的,因为它只清除变量的内容,而不是会话本身,如果你试图再次检查它仍然会出现,所以试试这个:

<?php
   session_start();
   session_destroy();
   header("Location: index.html");
?>

希望它有所帮助。