基本的にはどのような私はregister.php
で作成されたハッシュと一致するようにlogin.php
にこのコードを追加する必要があります:PHPのパスワードハッシュとマッチアップの問題
login.phpを
if (isset($_POST['Login'])) {
$username = $_POST['email'];
$store_password = $_POST['pword'];
check($username, $store_password);
}
function check($username, $pword){
$conn = mysqli_connect('localhost', 'root', 'root', 'Registrar');
$check = "SELECT * FROM Users WHERE email='$username'";
$check_q = mysqli_query($conn, $check) or die("<div class='loginmsg'>Error on checking Username<div>");
if (mysqli_num_rows($check_q) == 1) {
login($username, $pword);
}
else{
echo "<div id='loginmsg'>Wrong Email or Password</div>";
}
}
function login($username, $pword){
$conn = mysqli_connect('localhost', 'root', 'root', 'Registrar');
$login = "SELECT * FROM Users WHERE email='$username' and pword='$pword'";
$login_q = mysqli_query($conn, $login) or die('Error on checking Username and Password');
if (mysqli_num_rows($login_q) == 1){
header('Location: account.php');
echo"<div id='loginmsg'> Logged in as $username </div>";
$_SESSION['username'] = $username;
}
else {
echo "<div id='loginmsg'>Wrong Password </div>";
}
}
へ
:register.php
register.phpにパスワードハッシュが一致
$uname = $_POST['uname']; $email = $_POST['email']; $pword = $_POST['pword']; $store_password = password_hash('pword', PASSWORD_BCRYPT, array('cost' => 10));
ご協力いただければ幸いです。
あなたは[SQLインジェクション攻撃]に対して脆弱である(http://bobby-tables.com)。そして、パスワードをどのように保存しているかを示す必要があります(私はあなたがハッシュを意味することを願っています。**生のクリアテキストパスワードを保存しないでください)、そしてあなたがcryping/hashing/comparisonを行う方法。 –
データベースからのハッシュをプルします 'SELECT pword FROM users WHERE email =?'次に 'password_verify($ userSubmittedPassword、$ hashFromDatabase)'と比較してください@MarcBは、文字列補間ではなくクエリにプリペアドステートメントを使用します – Steve
ハッシュはプレーンテキストのパスワードではなく、データベースに格納されていますか? – pmahomme