首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >会话管理:在标题中显示用户名时出现问题

问会话管理:在标题中显示用户名时出现问题
EN

Stack Overflow用户
提问于 2010-05-03 21:04:10
回答 1查看 1.3K关注 0票数 0

我正在为我的网站没有任何安全简单的登录和注销模块工作。我在windows xp机器上使用wamp。我正在创建会话,当用户提交登录信息时,它将重定向到一个process.php文件,该文件创建会话变量并启动会话。现在,如果登录成功,用户将被重定向到欢迎页面,其中包含一个头文件(显示涉及登录注销帮助选项的头文件),问题是当用户成功登录时,头文件没有将登录链接更改为注销。下面的代码来自启动登录的process.php。

代码语言:javascript
复制
$username = $_POST['username'];
        $password = $_POST['password'];

        //echo "{$username}:{$password}";
        $connection = mysql_connect("localhost","root","");
        if(!$connection)
        {
            die("Database Connection Failed".mysql_error());
        }
        $db_select = mysql_select_db("tester",$connection);
        if(!$db_select)
        {
            die("Database Selection Failed".mysql_error());
        }
        $result = mysql_query("SELECT * FROM user",$connection);
        if(!$result)
        {
            die("Database Selection Failed".mysql_error());
        }


        $q = "SELECT * FROM user " ."WHERE Name='".$username."' AND Password='".$password. "' ";
         // Run query
         $r = mysql_query($q);

         if ( $obj = @mysql_fetch_object($r) )
        {
            session_start();
            // Login good, create session variables
            $_SESSION["valid_id"] = session_id();
            $_SESSION["valid_user"] = $_POST["username"];
            $_SESSION["valid_time"] = time();

            Header('Location: welcome.php');

以下代码来自welcome.php中包含的header.php

代码语言:javascript
复制
    </div>

    <div id = "userdetail">

        <?php

        if(isset($_SESSION["valid_user"]))
        {
            echo($_SESSION["valid_user"]." " ); 
             echo("<a href=logout.php>Logout</a>"); 

        }
        else
        {
            echo("<a href = login.php>Sign In</a>");
        }

        ?>

              | Help |  Search      

            <input type = "text" name = "searchbox" value = "" />
    </div>
</div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-03 21:12:16

您必须在每次调用的页面上调用start_session()。这应该始终是您在页面中进行的第一个调用。

注销时呼叫session_destroy。

此外,还应清除$_SESSION变量

代码语言:javascript
复制
$_SESSION = array();

一个编程技巧:使用像smarty 这样的模板引擎从php代码中拆分显示内容你的代码包含一个sql注入错误,请参阅我在你的帖子上的评论。

您还应该使用散列密码,并且不要忘记盐。不要将明文密码存储到数据库中。

SQL injection

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2758181

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档