mysql_query没有返回密码

时间:2017-05-11 23:12:23

标签: php mysql

为什么我没有使用此代码在页面上显示我的密码?

我正在尝试制作设置页面,以便我可以更改密码。

我没有任何错误;它什么都不做。

<html>
    <head>
        <title>Settings</title>
        <link rel="stylesheet" href="/static/bootstrap.css">
        <link rel="stylesheet" href="/static/firstindex.css">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="favicon.png" rel="icon"/>
        </head>
    <?php 
    session_start(); //starts the session
    $user = $_SESSION['user'];
    $result = mysql_query("SELECT password FROM users WHERE user_id='$user'");
    if(isset($_SESSION['user']) && $_SESSION['user']){
        echo"
        <body>
        <h1>Edit Profile</h1>
        <p>Hello $user</p>
        <p>Password $result</p>
    <form action='settings.php' method='post' class='form1'>
        <input class='form-control' placeholder='Old Password' type='password' name='password' required='required' /> <br/>
      <input class='form-control' placeholder='New Password' type='password' name='newpassword' /> <br/>
      <input class='form-control' placeholder='New Password' type='password' name='confirmnewpassword' /> <br/>
      <input type='hidden' name='night' value='0'/>
      <p><input type='checkbox' name='night' value='1'/> Turn on night theme for account</p>
      <input type='submit' class='btn btn-info' value='Change Settings'/>
    </form>
    ";
    }
    else {
        Print '<script>window.location.assign("login.php");</script>';
    }
    ?>
    <?php
if($_SERVER["REQUEST_METHOD"] == "POST"){
  $password = mysql_real_escape_string($_POST['password']);
  $newPassword = mysql_real_escape_string($_POST['newpassword']);
  $confirmNewPassword = mysql_real_escape_string($_POST['confirmnewpassword']);
  $nightTheme =(int)mysql_real_escape_string($_POST['night']);
  mysql_connect("localhost", "root","") or die(mysql_error()); //Connect to server
  mysql_select_db("mvstudio") or die("Cannot connect to database"); //Connect to database
  $result = mysql_query("SELECT password FROM users WHERE user_id='$user'");
  $bool = true;
  echo "$result";
}
?>
    </body>
</html>

2 个答案:

答案 0 :(得分:2)

首先,不推荐使用mysql_ *,切换到mysqli_ *或PDO。

其次,你不应该以明文存储密码,这是一个主要的安全问题,即使你需要在某些时候(例如在密码管理系统中)访问它们,它们也需要安全地进行哈希处理。至少要加密。

第三,$result包含一个mysql响应资源,而不是一个字符串。您需要这样做才能将其转换为关联数组:

$result = mysql_query("SELECT password FROM users WHERE user_id='$user'");
$password = mysql_fetch_assoc($result);
$password = $password['password'];

$password现在包含密码。

最后,除非您在执行查询之前建立MySQL连接,否则之前的工作将无法正常工作,目前您的连接是在执行查询后进行的。

答案 1 :(得分:1)

session_start()应该在任何输出之前,通常在你的php文件的第一行,如:

<?php session_start(); //starts the session ?>
<html>
    <head>
        <title>Settings</title>
        <link rel="stylesheet" href="/static/bootstrap.css">
        <link rel="stylesheet" href="/static/firstindex.css">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link href="favicon.png" rel="icon"/>
        </head>
    <?php /* your remaining php code */

和@Enstage建议一样,从现在开始至少使用mysqli_