gpt4 book ai didi

php - 无法识别数据库 PHP MYSQLi 中的密码

转载 作者:可可西里 更新时间:2023-11-01 00:19:43 25 4
gpt4 key购买 nike

我有一个注册表单,允许用户创建用户名和密码,然后将其存储在数据库中。

<?php
//values to be inserted in database table
//session_start();
include('connect.php');

//Fixed cost of 10 to fit server req
//Random salt to be added to the pass
$options = [
'cost' => 10,
'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM),
];

$email = $_POST['email'];
$password= password_hash($_POST['password'], PASSWORD_BCRYPT, $options);
$username= $_POST['username'];

$query = "INSERT INTO users (username, email, password) VALUES(?, ?, ?)";
$statement = $mysqli->prepare($query);

//bind parameters for markers, where (s = string, i = integer, d = double, b = blob)
$statement->bind_param('sss', $username, $email, $password);

if($statement->execute()){
print 'Success! ID of last inserted record is : ' .$statement->insert_id .'<br />';
}else{
die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
$statement->close();
?>

这是我的脚本,用于检查用户输入的用户名和密码是否存在。

<?php
include 'connect.php';
if ( !isset($_POST['username'], $_POST['password']) ) {
// Could not get the data that should have been sent.
die ('Username and/or password does not exist!');
}
// Prepare our SQL
if ($stmt = $mysqli->prepare('SELECT password FROM users WHERE username = ?')) {
// Bind parameters (s = string, i = int, b = blob, etc), hash the password using the PHP password_hash function.
$stmt->bind_param('s', $_POST['username']);
$stmt->execute();
$stmt->store_result();
// Store the result so we can check if the account exists in the database.
if ($stmt->num_rows > 0) {
$stmt->bind_result($password);
$stmt->fetch();
// Account exists, now we verify the password.
if (password_verify($_POST['password'], $password)) {
// Verification success! User has loggedin!
echo 'You have logged in!';
} else {
echo 'Incorrect username and/or password!';
}
} else {
echo 'Incorrect username blar password!';
}
$stmt->close();
} else {
echo 'Could not prepare statement!';
}
?>

它输出不正确的用户名和/或密码,所以我假设问题出在我在注册系统中对密码进行哈希处理的方式,或者它是否只是找不到我正在寻找的详细信息。

HTML 格式:

<div class="logmod__heading">
<span class="logmod__heading-subtitle">Enter your username and password <strong>to sign in</strong></span>
</div>
<div class="logmod__form">
<form accept-charset="utf-8" action="loggedIn.php" method='POST' class="simform">
<div class="sminputs">
<div class="input full">
<label class="string optional" for="user-name">Username*</label>
<input class="string optional" maxlength="255" id="user-email" placeholder="username" type="username" name='username' size="100" />
</div>
</div>
<div class="sminputs">
<div class="input full">
<label class="string optional" for="user-pw">Password *</label>
<input class="string optional" maxlength="255" id="user-pw" placeholder="Password" type="password" name='password' size="100" />
<span class="hide-password">Show</span>
</div>
</div>
<div class="simform__actions">
<input class="sumbit" name="commit" type="submit" value="Log In" />
<span class="simform__actions-sidetext"><a class="special" role="link" href="#">Forgot your password?<br>Click here</a></span>
</div>
</form>
</div>

最佳答案

type="username" 不是有效的表单元素类型。

将其更改为 type="text"

但是,我确实在前面的评论中提到过这一点:

type="username" use type="text" – Fred -ii- 20 mins ago

Comment link...

  • 我说的是“使用”而不是“尝试”;-)

您可能认为“用户名”类型是 HTML5 语法;它不是。

要查看有效的 HTML5 输入类型列表,请引用以下链接:

摘自 W3.org 页面:

输入元素是一个多用途元素,用于表示输入控件。input 元素的详细信息在以下部分中描述:

  • 输入类型=文本
  • 输入类型=密码
  • 输入类型=复选框
  • 输入类型= radio
  • 输入类型=按钮
  • 输入类型=提交
  • 输入类型=重置
  • 输入类型=文件
  • 输入类型=隐藏
  • 输入类型=图片
  • 输入类型=日期时间新的
  • 输入类型=datetime-local 新
  • 输入类型=日期新的
  • 输入类型=月新
  • 输入类型=时间新的
  • 输入类型=week NEW
  • 输入类型=数字新
  • 输入类型=范围新
  • 输入类型=电子邮件新
  • 输入类型=url 新的
  • 输入类型=搜索新
  • 输入类型=tel 新
  • 输入类型=颜色新

关于使用 varchar(60) 作为您的密码列的旁注,并从 password_hash() 中提取手册:

PASSWORD_DEFAULT - 使用 bcrypt 算法(自 PHP 5.5.0 起默认)。请注意,此常量旨在随着新的和更强大的算法添加到 PHP 中而随时间变化。因此,使用此标识符的结果长度可能会随时间变化。因此,建议将结果存储在可以扩展到超过 60 个字符(255 个字符是一个不错的选择)的数据库列中。

关于php - 无法识别数据库 PHP MYSQLi 中的密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32741535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com