2016-07-10 6 views
0

ログインシステムmd5がユーザー名をハッシュし、パスワードがパスワードをハッシュします。したがって、ユーザー名に基づいて行をフェッチできませんか?私のクライアントは、私がbase64encodeする電子メールアドレスを入力します。私は失われたパスワード変更オプションを提供します。しかし、同じタイプのハッシュを使用してフィールドを更新しても、電子メールフィールドを識別子として使用すると、新しいパスワードは間違っていますか? 以下は私のUPDATEのサンプルですが、説明のためにハードコードされています(これはPSでも動作しません)。Password_hashテーブルの更新後に正しくない

$em = '[email protected]'; 
$em1 = base64_encode($em); 
$ps = 'some password'; 
$password_hash = password_hash($ps, PASSWORD_BCRYPT); 
$qu = "UPADTE table SET field = '$password_hash' WHERE email = '$em1'"; 
$res = mysqli_query($link, $qu); 

は、ユーザが存在するかどうかを確認し、それらを積極的にアカウントの所有者として自分自身を識別するための電子メールを送信した後、自分のコードを含むように質問を編集します。ここに最終的なプロセッサページがあります。

if(EMPTY($_POST[psw1])) { 
echo "New password must be supplied"; } 
elseif(EMPTY($_POST[psw2])) { 
echo "Repeat password must be entered"; } 
elseif($_POST[psw1] != $_POST[psw2]) { 
echo "Passwords entered do not match"; 
} elseif(EMPTY($_POST[eu])) { 
echo "Essential data is missing in order to complete this process."; 
} 
elseif (strlen($_POST['psw1']) < 6) { 
echo "Password must be at least six characters in length"; 
    } 
elseif (preg_replace("/[^a-zA-Z0-9]/", "", $_POST['psw1']) !=  $_POST['psw1']) { 
echo "Password may only contain letters and numbers"; 
    } 
elseif(!EMPTY($_POST[psw1]) && !EMPTY($_POST[psw2]) && !EMPTY($_POST[eu]) && $_POST[pw1] == $_POST[pw2]) { 

include "conn.php"; 
echo "$_POST[eu]<br />"; 
$eu = $_POST[eu]; 
$pdw = password_hash($_POST[pw1], PASSWORD_BCRYPT); 

$sq = mysqli_query($link, "UPDATE str1 SET pf = '$pdw', cu_pw_status = '2' WHERE cu_type = '$eu'"); 
echo "Your password has been changed, you may now login <a href='login2.php'>Login</a>"; 
} else { 

echo "エラーが発生しました。サイト管理者に連絡してください"; }

+0

こんにちは、これは参照ためだった、ないテーブルは、STR1と呼ばれている列またはフィールドがPFと呼ばれています。パスワードは更新されていますが、間違っていますか? – Szue

答えて

1
  1. ユーザーテーブルに「フィールド」列があるかどうかを確認してください。疑いがあるようだ。
  2. 更新文字列を確認してください。テーブル名が欠落するようになりました。あなたが更新する前に、ユーザーがある場合
  3. チェック:

    $exists = mysqli_query("SELECT id FROM users WHERE email='$em1'); 
    
    if (!is_empty($exists)) { 
    
        mysqli_query("UPDATE TABLE users SET password = '$ps' WHERE id='$exists'); 
    
        echo 'updated' . "\n"; 
    
    } else { 
    
        echo 'no user with such email hash' . "\n"; 
    } 
    
+0

こんにちは、私はすでにユーザーが存在することを確認し、電子メールを送信し、確認済みの電子メールからコールバック識別子を受け取りました。その後、私はパスワードを変更しますが、ここでコードは動作しません。 – Szue

+0

実際の作業コードを掲載できますか?これはオブジェクトキーの周りに 'EMPTY($ _ POST [psw1])'を引用していないという理由だけでは機能しません。 –

+0

「新しいパスワードは間違っている」と言っても意味がありません。更新されている場合は、パスワードを確認するログイン機能に問題があります。 –

関連する問題