使用PHP $ _SESSION进行身份验证

时间:2014-07-02 15:53:15

标签: php html session

我有一个代码来登录数据库系统并执行一些简单的任务,例如查看用户详细信息,编辑用户详细信息类的任务。登录后,用户应该能够注销。我的问题出现在这里。我需要重定向到显示一些文本的页面(logoff.php页面),然后重定向到索引页面。但是一旦我点击退出链接,它就会直接转到索引页面,即登录页面。

用户被重定向到页面的注销页面,我的logoff.php代码就是这个

<?php
session_start();
if (isset($_SESSION["uname"])) {
    unset($_SESSION["uname"]);
}
header("Location:../index.php");
exit;
?>

<html>
    <head>
        <title>Logged Off</title>
    </head>
    <body>
        <br><br>
        <div align="">
            <h2>You are now logged off</h2>
            &nbsp;&nbsp;&nbsp;
            <a href="../index.php">home</a></div>
    </body> 
</html>

如果用户被重定向到此处,它应该显示文本。但我确信它来到这个页面,因为当我删除代码的php部分时,它显示了html标签内的文本。我认为问题出在$_SESSION代码段。它不验证用户吗?这是我被重定向到索引页面而不列出注销页面内容的原因吗?

我用于记录的索引页面就是这个。

<?php
    session_start();
    $mess="";

    if(isset($_POST["submit"])&&$_POST["submit"]=="Sign in") {
        //conncet to the database
        require_once("./dbcon/user.php");
        include("./dbcon/dbcon.php"); //database connection function

        $user=$_POST["uname"];
        $password=md5($_POST["password"]);
        //retriving data from db
        $query = "SELECT user_name FROM user_info WHERE user_name = '$user' AND password ='$password'";
        $result=mysql_query($query);

        while($row=mysql_fetch_array($result)) {
            $name=$row["0"];
        }

        if(mysql_affected_rows()==0) {
            $mess = "<font color=purple size=2><b>Wrong username or password.<br>Please try again.</b></font>";

        } else {
            $_SESSION["uname"]=$name;
            header("Location:./user/user1.php");
            exit;
        }
    }
?>

<html>
    <!-- html form -->
</html>

在这种情况下,我是否需要将index.php页面包含在logoff.php页面中,因为在index.php页面中创建了SESSION变量?这是原因还是其他? 谢谢!

2 个答案:

答案 0 :(得分:1)

答案就在那一行,并且是一个功能,而不是一个错误:

header("Location:../index.php");

这是重定向服务器端,因此您的用户永远不会看到页面正文,因为他只收到此标题,告诉浏览器转到该URL。

而不是这样做,你应该使用带有setTimeout()的javascript重定向功能,或者使用在这种情况下我真正指出的元刷新:

<meta http-equiv="refresh" content="10;URL=yourindexpage.php" />

请注意上面行中的10,它表示重定向发生前的延迟(以秒为单位)。

答案 1 :(得分:0)

你可以这样做

<?php
    session_start();
    if (isset($_SESSION["uname"])) {
        unset($_SESSION["uname"]);
    }
    ?>

    <html>
        <head>
            <title>Logged Off</title>
        </head>
        <body>
            <br><br>
            <div align="">
                <h2>You are now logged off</h2>
                &nbsp;&nbsp;&nbsp;
                <a href="../index.php">home</a></div>
        </body> 
    </html>
相关问题