我对PHP有点陌生,所以我仍处于学习阶段。
我希望我能在这里得到一些好的答案,也许有人对改进有一些建议。

我知道事情可能是错的,但是我仍然在学习。

我现在想做的是为我的网站准备一个简单的“更改密码”表格。

<?php
include '../config.php';
$connection = mysqli_connect($servername, $username, $password, $dbname);
if ($connection->connect_error){
    die("Connection failed: " . $conn->connect_error);
} else {
    echo "Connected successfully";
}
if(isset($_POST['submit']) && $_POST['submit'] = "submit"){
    $username = mysql_real_escape_string($connection, $_POST['username']);
    $password = md5($connection, $_POST['password']);
    $newpassword = md5($connection, $_POST['newpassword']);
    $confirmnewpassword = md5($connection, $_POST['confirmnewpassword']);
    $result = mysql_query("SELECT password FROM users WHERE username='$username'");
    if(!$result) {
         echo "The username does not exist!";
     }
     else if($password != mysql_result($result, 0)){
          echo "The password is not correct!";
     }
     if($newpassword === $confirmnewpassword) {
          $sql = mysql_query("UPDATE users SET password = '$newpassword' WHERE username = '$username'");
      }
      if(!$sql) {
          echo "Password has been changed!";
      }else{
        echo "Passwords do not match!";
     }
}
?>
<form name="newprwd" action="" method="post">
    username :<input type="text" name="username" value=""><br>
    Passord :<input type="password" name="password" value=""><br>
    Nytt passord :<input type="password" name="newpassword" value=""><br>
    Bekreft Passord :<input type="password" name="confirmnewpassword" value=""><br>
    <input type="submit" name="submit" value="Endre passord"><br>
</form>


这是我的change-pw.php文件中的代码。

$servername = "*****";
$username = "****";
$password = "***";
$dbname = "***";


这就是我使用config.php文件连接到数据库的方式。
我在这里没有显示服务器名称,但是您会看到我如何连接服务器的图片。

我想要的是从数据库获取密码和用户名并进行更改的表单。

是的,我知道这里是一些挪威语单词,但这仅用于回声。

我的问题:

当我输入用户名,密码,新密码和确认密码时,我从if(!$ result)和if(!$ sql)收到消息,但不会更改密码。
它表示用户名不存在,并且密码已更改。

有人看到我看不到的问题吗?

我希望对此脚本有正面和负面的评论,以便我可以改进。

谢谢!

最佳答案

<?php
    $result = mysql_query("SELECT password FROM users WHERE username='$username'");
    if($row = mysql_fetch_row($result)) {
        if($password != $row[0]) {
            echo "The password is not correct!";
        }
        elseif($newpassword === $confirmnewpassword) {
            $sql = mysql_query("UPDATE users SET password = '$newpassword' WHERE username = '$username'");
        }else{
            echo "Passwords do not match!";
        }
    }else{
        echo "The username does not exist!";
    }

?>


这仅对PHP 5.x有效。对于PHP 7,您需要更改为mysqli或PDO。

关于php - 用PHP更改密码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36977351/

10-12 00:08
查看更多