Php登录不使用密码\u验证(Android)
由于密码验证实现,我的登录文件有一些问题。该文件在没有密码验证的情况下运行正常 下面是我的登录文件:Php登录不使用密码\u验证(Android),php,password-encryption,password-hash,Php,Password Encryption,Password Hash,由于密码验证实现,我的登录文件有一些问题。该文件在没有密码验证的情况下运行正常 下面是我的登录文件: <?php include 'config.inc.php'; // Innitialize Variable $result=''; $username = $_POST['username']; $userpassword = $_POST['password']; // Query database for row ex
<?php
include 'config.inc.php';
// Innitialize Variable
$result='';
$username = $_POST['username'];
$userpassword = $_POST['password'];
// Query database for row exist or not
$sql = 'SELECT password FROM user WHERE email = :username';
$stmt = $connection->prepare($sql);
$stmt->bindParam(':username', $username, PDO::PARAM_STR);
$stmt->bindParam(':userpassword', $userpassword, PDO::PARAM_STR);
$stmt->execute();
// $row = mysqli_fetch_array($stmt);
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (password_verify($userpassword, $row['password'])) {
$result="true";
} else {
$result="false";
}
// send result back to android
echo $result;
?>
以下是我的注册文件(运行良好),供参考:
<?php
include 'config.inc.php';
// Check whether username or password is set from android
if(isset($_POST['user']) && isset($_POST['email']) && isset($_POST['password']))
{
// Innitialize Variable
$result='';
$user = $_POST['user'];
$email = $_POST['email'];
$password = $_POST['password'];
// Encryption of password
$options = [
'cost' => 12,
];
$password = password_hash($password, PASSWORD_BCRYPT, $options);
// Query database for row exist or not
$sql = 'INSERT INTO user VALUES (NULL, :user, :email, :password, 0, 1, 1)';
$stmt = $connection->prepare($sql);
$stmt->bindParam(':user', $user, PDO::PARAM_STR);
$stmt->bindParam(':email', $email, PDO::PARAM_STR);
$stmt->bindParam(':password', $password, PDO::PARAM_STR);
$stmt->execute();
if($stmt->rowCount())
{
$result="true";
}
elseif(!$stmt->rowCount())
{
$result="false";
}
// send result back to android
echo $result;
}
?>
谢谢你的支持
Oliver1>请检查密码字段的数据库是否为哈希格式的值插入 2> 然后对您的登录页面进行sql查询检查 3> 如果密码是插入哈希格式值,则必须使用
php哈希函数来选择您的帖子密码看来,
$row['password']
没有哈希。如果您已经在此处绑定了$stmt->bindParam(':password',$password,PDO::PARAM_STR),也可以查看手册
那么再次验证的目的是什么?将:userpassword
绑定到登录选择时不应该出现错误吗?谢谢您的输入$行['password']在数据库中散列。哈希是在注册文件中创建的。谢谢Mario,取出了:userpassword的bind语句,但仍然没有得到积极的反馈