PHP在member.php页面会话输出"隐含用户名"在login.php中工作,但在member.


php on member.php page session output "the implied username " worked in login.php but is not displaying in member.php

关于member.php页面会话输出"the implied username "的问题在login.php中工作,但在member.php中不显示

<html>
<form action="login.php" method="POST">
    Username: <input type="text" name="username"><p>
    Password: <input type="password" name="password">
              <input type="submit" name="submit" value="Login">
</form>
<a href='register'.php>Register Now</a>
</html

以上代码是index . html文件

<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
if ($username&&$password)
    {
        $connect = mysql_connect("127.0.0.1","root","") or die ("Could not connect `to     database");
        mysql_selectdb("login") or die ("could not find database");
        $query = mysql_query("select * FROM users WHERE username='$username'");
        $numrows = mysql_num_rows($query);
        if($numrows !=0)
    {
    while ($row = mysql_fetch_assoc($query))
    {
        $dbusername = $row['username'];
        $dbpassword = $row['password'];
    }
    if ($username==$dbusername&&$password==$dbpassword)
    {
    echo $_Session['username']="$dbusername  ";
    echo ",  Login successful. <a href='member.php'>Click here to enter the Members area  
</a>";


    }
    else
        echo "Incorrect password";
    }
    else
        die ("That username does not exists");
    }
    else
        die ("Please enter a username and password");
?>  

上面的代码是login.php,在登录页面上它显示"username"登录成功和点击这里进入成员区的链接。

<?php
session_start();
if ($_SESSION['username'] = '$dbusername')
    {
  echo "Welcome, ".$_SESSION['username']."<br><<a href='logout.php'>Click here</a> to logout!<br>Click<a href='changepassword.php'> here</a> to change your password!";
    }
else
     die("You must be logged in to see this page");

以上代码来自member.php页面

下面是显示输出:

欢迎,美元dbusername

点击这里登出!点击这里更改密码!

我的问题是它应该这样读:

欢迎,约翰尼按此登出!点击这里更改密码!

一个解决方案将是伟大的!

从哪里开始?好吧,这不是一个安全的登录脚本。首先,您以原始形式将密码存储在数据库中,没有进行加密。接下来,检查会话变量是否存在并不是查看用户是否登录的正确方法。您必须在用户每次更改页面时检查用户凭据,最好重新生成会话id。

$dbusername在第二页上没有值。当您使用=号时,您正在将$_SESSION['username']重置为$dbusername

:

if ($_SESSION['username']) 

if (isset($_SESSION['username']))

从这里开始散列密码

请不要在新代码中使用mysql_*函数。它们不再被维护,并被正式弃用。见红框?学习预处理语句,并使用PDO或MySQLi——本文将帮助您决定使用哪一种。如果你选择PDO,这里有一个很好的教程。