Php 你好,世界!实现密码验证
Im进入php并制作一个登录脚本除了 我在signup.php中对Bcrypt中的密码进行了哈希运算,因此我在输入密码使其匹配时遇到问题,因此我研究了VERIFY_密码,但我如何在自己的脚本中实现它? 为了澄清我是否只是以密码的形式从表中复制哈希,但我希望它以正常的输入密码的形式工作, 欢迎输入 login.phpPhp 你好,世界!实现密码验证,php,passwords,Php,Passwords,Im进入php并制作一个登录脚本除了 我在signup.php中对Bcrypt中的密码进行了哈希运算,因此我在输入密码使其匹配时遇到问题,因此我研究了VERIFY_密码,但我如何在自己的脚本中实现它? 为了澄清我是否只是以密码的形式从表中复制哈希,但我希望它以正常的输入密码的形式工作, 欢迎输入 login.php <?php ini_set('display_errors', 'On'); error_reporting(E_ALL | E_STRICT); require 'datab
<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
require 'database.php';
$username = $_POST["username"];
$password = $_POST["password"];
$sql = "SELECT * FROM table2 WHERE username = '".$username."' AND password = '$password'";
$result = $conn->query($sql);
$result->execute();
$count = $result->fetchcolumn();
var_dump($result);///if($result === FALSE) {
if($count == 1 ){
echo"login";
header("location:login4.php");
} else { var_dump($count);
echo"logout";
} // die(mysql_error()); // TODO: better error handling
///}
///while($row = mysql_fetch_array($result))
///{
/// echo $row['username'];
///}
///if(!$row = mysqli_fetch_assoc($result)) {
/// echo "dd";
//else {
// echo "logged in";
?>
<html>
<form action="login3.php" method="post">
<input type="text" name="username">
<input type="password" name="password">
<button type="submit" name="submit">login</button>
</html>
首先,您只需使用WHERE username=。在执行请求时,您不必检查密码 其次,您必须验证密码 最后,您还应该使用准备好的语句,这样更安全 因此,您的代码应该如下所示:提供的代码可能无法按原样使用,但您可以调整它以获得所需的结果,并阅读文档以了解准备好的语句以及密码验证的工作方式:
$sql = "SELECT * FROM table2 WHERE username = :username";
$request = $conn->prepare($sql);
$request->execute([":username" => $_POST["username"]]);
$user = $request->fetchAll()[0];
if(password_verify($_POST["password"], $user->password)){
//user is logged in
}else{
//password is wrong
}
在执行db操作$password=bcrypt$_POST[password]时,您应该对密码进行哈希运算;您不应该将其他哈希算法与and duo混合使用。显式地使用这两个。我在一个新脚本上尝试了ur版本的可能副本,但它返回了致命错误:调用一个成员函数fetch on boolean in,所以我不知道什么都不起作用。