2016-05-02 13 views
1

私はPHPにちょっと新しいので、まだ学習段階です。 私はここでいくつかの良い答えを得ることができ、誰かが改善のヒントを持っていることを願っています。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ファイルを使用してデータベースに接続する方法です。 ここにサーバー名は表示されませんが、どのように接続するのかがわかります。

私が欲しいのは、データベースからパスワードとユーザー名を取得して変更するフォームです。

はい、ここではノルウェー語ですが、それはエコーだけのことです。

私の問題:私は、ユーザー名、パスワード、新しいパスワードで書くと、私は(!$結果)場合からメッセージを取得している場合(!$ SQLの場合)からパスワードを入力して確認したが、それはだとき

しません変更パスワード。 ユーザー名が存在せず、パスワードが変更されたと表示されます。

誰も私が見ることができない問題を参照してください?

私は改善できるように、このスクリプトに関する肯定的および否定的なコメントを期待しています。

ありがとうございます!

+1

どのPHPバージョンをお使いですか? mysql_queryは5.5.0以降で廃止され、PHP 7では削除されました。少なくともmysqli_queryの使用を検討するか、またはPDOに切り替えることをお勧めします(推奨)。 – Paul

+0

また、 '$ result'をデバッグしましたか?どのようなエラーメッセージが記録されましたか? – Paul

+0

私は最新のPHPを使用していると誤解されていない場合。 mysqliは通常、私たちが使用しているものです。 私は$結果をデバッグしようとしていません。それ、どうやったら出来るの? – nikon01

答えて

0
<?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に変更する必要があります。

関連する問題