1

次のフォームに入力すると、データベースのパスワードを変更するコードのセクションに取り組んでいます。

<html>
     <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Password Change</title>
     </head>
    <body>
    <h1>Change Password</h1>
   <form method="POST" action="password_change.php">
    <table>
    <tr>
   <td>Enter your UserName</td>
    <td><input type="username" size="10" name="username"></td>
    </tr>
    <tr>
    <td>Enter your existing password:</td>
    <td><input type="password" size="10" name="password"></td>
    </tr>
  <tr>
    <td>Enter your new password:</td>
    <td><input type="password" size="10" name="newpassword"></td>
    </tr>
    <tr>
   <td>Re-enter your new password:</td>
   <td><input type="password" size="10" name="confirmnewpassword"></td>
    </tr>
    </table>
    <p><input type="submit" value="Update Password">
    </form>
   <p><a href="home.php">Home</a>
   <p><a href="logout.php">Logout</a>
   </body>
    </html>  

そしてPHP:

 <?php
session_start();
include 'dbconfig.php';

$username = $_POST['username'];
        $password = $_POST['password'];
        $newpassword = $_POST['newpassword'];
        $confirmnewpassword = $_POST['confirmnewpassword'];
        $result = mysql_query("SELECT password FROM user_info WHERE 
user_id='$username'");
        if(!$result)
        {
        echo "The username you entered does not exist";
        }
        else if($password!= mysql_result($result, 0))
        {
        echo "You entered an incorrect password";
        }
        if($newpassword=$confirmnewpassword)
        $sql=mysql_query("UPDATE user_info SET password='$newpassword' where 

 user_id='$username'");
        if($sql)
        {
        echo "Congratulations You have successfully changed your password";
        }
       else
        {
       echo "Passwords do not match";
       }
      ?>

現在私が抱えている問題は、送信ボタンを送信すると、このコードの読み取り専用ページに移動することです。

助言がありますか?

4

4 に答える 4

8

一見すると、あなたが犯したいくつかの大きな間違いを理解できます。

比較する場合は、使用する必要があります

$newpassword == $confirmnewpassword

そしてそうではない

$newpassword=$confirmnewpassword

次に、if..elseif... ループ形式を使用する場合は、

if (condition)
  {
  //code to be executed if condition is true;
  }
else if (condition)
  {
 // code to be executed if condition is true;
 }
else
  {
  //code to be executed if condition is false;
 } 

そのようなループの1つでelse部分を見逃しているようです。構文を修正して再試行してください...

于 2013-03-19T21:05:11.810 に答える
0

最初にテーブルを選択し、パスワードが正しいことを確認し、正しい場合はパスワードを更新します。それ以外の場合はエラーメッセージを表示します。古いパスワードがパスワードを更新するために一致する場合は、パスワードを更新するだけです....、 クラッカーワールド

 $old_password=$_POST['old_password'];
$new_password=$_POST['new_password'];
$con_password=$_POST['con_password'];
$chg_pwd=mysql_query("select * from users where id='1'");
$chg_pwd1=mysql_fetch_array($chg_pwd);
$data_pwd=$chg_pwd1['password'];
if($data_pwd==$old_password){
if($new_password==$con_password){
$update_pwd=mysql_query("update users set password='$new_password' where id='1'");
$change_pwd_error="Update Sucessfully !!!";
}
else{
$change_pwd_error="Your new and Retype Password is not match !!!";
}
}
else
{
$change_pwd_error="Your old password is wrong !!!";
}}
于 2014-01-29T10:45:31.580 に答える
-1

スクリプトを見た後、パスワード比較条件で「==」を使用していないことがわかりました。

if($newpassword=$confirmnewpassword)

これは間違っています。あなたは、私が言いたいことを指摘している上記のビルジュ・シャーの答えを受け入れました.

これとは別に、暗号化方法を使用していないことがわかりました。これは非常に間違っています。誰でもデータベースからパスワードをハッキングできます。

パスワードを暗号化および復号化するには、Password_verify() およびPassword_hash()関数を使用する必要があります。これらの暗号化と復号化は、現在最も安全であると考えられています。今日では誰でも md5 アルゴリズムを復号化できるため、md5 暗号化を使用しないでください。

ここでは、PHP で 1 つのチュートリアルChange password code を作成しました。上記のすべてのトピックを取り上げました。このチュートリアルがお役に立てば幸いです。

乾杯、

于 2015-11-08T13:49:49.260 に答える