내 웹 사이트에 로그인하기 전에 누군가의 비밀번호와 사용자 이름을 확인하려고합니다. 암호는 모두 password_hash($password1, PASSWORD_BCRYPT);
에 저장됩니다. 내가 잘못하고있는 것에 대해서는 확실하지 않습니다. 현재 내가 입력 한 내용에 상관없이 항상 잘못된 것으로 표시됩니다. 기존 비밀번호에 password_verify 사용
<?php
require 'privstuff/dbinfo.php';
$username = $_POST["username"];
$password1 = $_POST["password1"];
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
if(mysqli_connect_errno()) {
echo "Connection Failed. Please send an email to [email protected] regarding this problem.";
exit();
}
if ($stmt = $mysqli->prepare("SELECT `username`, `password` FROM `accounts` WHERE username = ? AND password = ?")) {
$result = mysqli_query($mysqli,"SELECT `password` FROM `accounts` WHERE username = $username");
$stmt->bind_param("ss", $username, password_verify($password1, $result);
$stmt->execute();
$stmt->store_result();
if ($stmt->num_rows) {
echo("Success");
}
else {
echo("Incorrect");
}
}
$mysqli->close();
?>
이이 문제를 해결 다르게해야 register.php
<?php
require 'privstuff/dbinfo.php';
$firstname = $_POST["firstname"];
$password1 = $_POST["password1"];
$email = $_POST["email"];
$ip = $_SERVER['REMOTE_ADDR'];
$username = $_POST["username"];
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
if(mysqli_connect_errno()) {
echo "Connection Failed. Please send an email to [email protected] regarding this problem.";
exit();
}
if ($stmt = $mysqli->prepare("INSERT INTO `accounts`(`firstname`, `username`, `password`, `email`, `ip`) VALUES (?,?,?,?,?)")) {
$db_pw = password_hash($password1, PASSWORD_BCRYPT);
$stmt->bind_param("sssss", $firstname, $username, $db_pw, $email, $ip);
$stmt->execute();
if ($stmt->affected_rows > 0) {
echo "Account successfuly created";
}
$stmt->close();
}
$stmt->close();
$mysqli->close();
?>
'console.log ("Success");'는 자바 스크립트입니다 ... PHP 코드에서 무엇을하고 있습니까? ;) 또한 암호가 해시 된 버전에 저장되어 있다면'$ _POST' 변수를 사용하여 데이터베이스에서 암호를'SELECT '할 수 없습니다. –
데이터베이스의'password' 열에 저장된 내용과 그곳에 어떻게 도달 했습니까? – duskwuff
Lmao woops. 나는 그걸 진짜 빨리 던졌다. 무시해! – DanMossa