2016-05-19 1 views
0

をハッシュに「塩」を結合した後、私は正しいと正常に動作している次のコードを持ってログインできませんMySQLデータベースに入力されたとき、それはソルト値を作成します。..は、アルゴリズムのPHP/MySQLの

問題I私が直面しているのは、塩漬けの値を使ってログインしようとするときに、何かが私のコードから抜けている(このポストのコードの2番目のビットはログインである)問題を引き起こすものです。

$result = $conn->prepare("INSERT INTO members (name, username, email, salt, password, age, gender, gender_of_dogs) VALUES (:name, :username, :email, :salt, :password, :age, :gender, :gender_of_dogs)"); 
$result->bindParam(':name', $value1); 
$result->bindParam(':username', $value2); 
$result->bindParam(':email', $value3); 
$result->bindParam(':salt', $salt); 
$result->bindParam(':password', $hashedPassword); 
$result->bindParam(':age', $value5); 
$result->bindParam(':gender', $value6); 
$result->bindParam(':gender_of_dogs', $value7); 

$value1 = $_POST['name']; 
$value2 = $_POST['username']; 
$value3 = $_POST['email']; 

$salt = uniqid('', true); 

$value4 = $_POST['password']; 
$value5 = $_POST['age']; 
$value6 = $_POST['gender']; 
$value7 = implode(',', $_POST['gender_of_dogs']); 

$hashedPassword = md5($salt.$value4); 
$result->execute(); 

echo "<h2>Thank you for registering, <br> You will now be redirected to the homepage...</h2>"; 
header("refresh:5; url=../index.php"); 

以下はログインしようとしたときのコードです.MySQLデータベースの固有のsalt値を取得していないため、ログインできません。
(少なくとも私はそれが問題だと思います。)

include('../db_connect.inc'); 

$username = $_POST['username']; 
$password = $_POST['password']; 
$salt = $_POST['salt']; 
$hashedPassword = md5($salt.$password); 

$query = $conn->prepare("Select * from dog_parks.members where username = :username_login and password = :password_login "); 
$query->bindParam(':username_login', $username); 
$query->bindParam(':password_login', $hashedPassword); 
$query->execute(); 
$count = $query->rowCount(); 
$row = $query->fetch(); 

if ($count > 0) { 
    session_start(); 
    $_SESSION['id'] = $row['username']; 

    header('location:home.php'); 
} 

エラーメッセージは悪いです
Error message received

+3

に追加own__パスワードハッシュを__rollいけないしてください。 PHPは['password_hash()'](http://php.net/manual/en/function.password-hash.php) と['password_verify()'](http://php.net/manual/エン/ function.password-verify.php)(私は一日 あなたのサイトを使用すると、ここでいくつかの[パスワードについて良いアイデア]あるかもしれませんが、それらを使用してくださいhttps://www.owasp.org/index.php/Password_Storage_Cheat_Sheet ) – RiggsFolly

+1

そして、あなたのパンを通りの真ん中に落とすのと同じように、あなたの塩をPOSTしないでください! – RiggsFolly

+0

エラー '$ _POST [' salt '] 'が設定されていないため、入力フィールドの名前を確認してください。あなたが提供するツールを使用している場合 – chris85

答えて

0

$query->bindParam(':username_login', $username); を受けました。それは、このように変更する必要があり

(':username', $value2); 

elseケース

+0

全く無関係私は恐れている – RiggsFolly

関連する問題