基本上我需要添加到這個代碼在login.php
以匹配register.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)的影響。你需要展示你如何存儲密碼(我希望你的意思是「哈希」,你從不**存儲原始明文密碼)以及你如何進行加密/散列/比較。 –
從數據庫中拉出散列'SELECT pword FROM users WHERE email =?'然後與'password_verify($ userSubmittedPassword,$ hashFromDatabase)進行比較'並且@MarcB避開了,使用預準備語句進行查詢,而不是字符串插值 – Steve
散列是存儲在數據庫中,而不是純文本密碼,對嗎? – pmahomme