php – PasswordHash检查并登录

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – PasswordHash检查并登录脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用PHPmysql,我正在尝试使用htML表单创建一个简单注册登录页面.

到目前为止,我已经创建了一个注册表单,其中包含用户信息,如姓名,邮件和密码.

为了安全地存储密码,我使用了PHPass,它使用散列函数来加密和存储我的数据库表中的密码.

到目前为止,我已经能够获取用户提交的密码,运行散列函数并将密码存储到我的表中.

我现在遇到的问题是如何创建一个单独的HTML表单(登录),该表单接收用户的电子邮件和密码,根据存储在表中的哈希密码检查密码,以便将用户签入他们的帐户.

要保存我的密码:

require 'PHPass/PasswordHash.PHP'; 

$user_password = ($_POST['password']);   

// Create a secure password 
$hasher = new PasswordHash(10,false); 
$user_password_hashed = $hasher->HashPassword($user_password);

然后,使用SQL查询

$core_customer_insert = "INSERT INTO core_customer_information(Firstname,lastname,email,password,activation_code,activated) VALUES ( 
                '".$conn->real_escaPE_string($first_name)."','".$conn->real_escape_string($last_name)."','".$conn->real_escape_string($email)."','".$conn->real_escape_string($user_password_hashed)."','".$conn->real_escape_string($code)."','0')";

我将所需的信息保存到表格中.

然后我创建了一个新的.PHP文件,其中包含用于登录用户的脚本.

用于登录的HTML:

<form action="sign-in-script.PHP" method="POST"> 
    <table style="width:100%"> 
        <tr> 
            <th><input type="text" name="email" required placeholder="Email" /></th>
            <th><input type="password" name="password" required placeholder="Password" /></th>
            <th> <input class="button" id="sign-in-show" type="submIT" value="Sign in" name="submit" /> </th>
        </tr>
    </table>
</form>

然后我的sign-in-script.PHP使用POST获取电子邮件地址和密码:

$email = $_POST['email']; 
$user_password = $_POST['password'];

然后我创建了一个SQL查询来检查电子邮件和密码是否与我表中存储的行匹配:

SELECT * From core_customer_information WHERE email='".$email."' AND password='".$user_password."' LIMIT 1

我无法理解的问题是,目前,我的查询是检查db表中的密码是否与用作$_POST的密码匹配,但显然不会返回任何结果,因为它不是’与安全存储的密码的哈希版本相同.

我不完全确定我应该检查表格中给出的密码与db表上的散列版本.

使用的PHP库:
PHPass

如果有人可以解释我将用来解决我的问题的过程,我将不胜感激.

在此先感谢,对不起,问题是如此之大.我试图尽我所能解释.

@H_502_63@解决方法
我建议从查询删除AND子句,并在稍后阶段检查密码.像这样:

$query = MysqLi_query($your_connection,"SELECT username,password From users WHERE username = '$username'");

    $result = MysqLi_fetch_assoc($query);

    if (MysqLi_affected_rows($your_connection) == 1) {
        if (password_verify($password,$result['password'])) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }

编辑:上面使用5.5 password_verify来检查存储在数据库表中的哈希($result [‘password’])是否与提供的密码匹配($password)

http://php.net/manual/en/function.password-hash.php

脚本宝典总结

以上是脚本宝典为你收集整理的php – PasswordHash检查并登录全部内容,希望文章能够帮你解决php – PasswordHash检查并登录所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。