PHP 5.5密码哈希API比较2个password_hash()变量的正确方法

用户名

我正在设置注册表格,并使用了密码哈希API,从我所读的内容中,这目前是保护密码的最佳方法。

我的表格是

    <form action="register.php" method="post">
        <div class="fluid reg_firstname">
            <label for="first-name">First Name</label>
            <input name="first-name" type="text" style="width:90%;">
        </div>

        <div class="fluid reg_lastname">
            <label for="last-name">Last Name</label>
            <input name="last-name" type="text" style="width:90%;">
        </div>

        <div class="fluid reg_email">
            <label for="email">Email</label>
            <input name="email" type="text" style="width:50%;">
        </div>

        <div class="fluid reg_password">
            <label for="create-password">Create Password</label>
            <input name="create-password" type="password" style="width:70%;">
        </div>
        <div class="fluid reg_password">
            <label for="confirm-password">Confirm Password</label>
            <input name="confirm-password" type="password" style="width:70%;">
        </div>

        <div class="fluid reg_agreement">
        <p>
        By clicking 'Submit' I agree that:
        </p>
        <ul>
            <li>I accept the User Agreement- opens in a new window or tab.</li>
            <li>I give consent to the processing of my data- opens in a new window or tab.</li>
            <li>I may receive communications from SLF and I understand that I can change my notification preferences at any time in My Account.</li>
            <li>I am at least 18 years old.</li>
        </ul>
        </div>

        <div class="fluid reg_submit">
            <input name="step1" type="submit" value="Submit">
        </div>
    </form>

所以一旦按下提交按钮,我就在表单中添加一些验证

<?php if(isset($_POST['step1']))
{
    #RETRIEVE VARIBLES
    $first = mysqli_real_escape_string($db,$_POST['first-name']);
    $last = mysqli_real_escape_string($db,$_POST['last-name']);
    $email = mysqli_real_escape_string($db,$_POST['email']);
    $password1 = password_hash($_POST['create-password'], PASSWORD_DEFAULT);
    $password2 = password_hash($_POST['confirm-password'], PASSWORD_DEFAULT);


    #VALIDATION CHECKS

    if($first == "")
    {
        $error[] = "Please Enter First Name";
    }
    if(strlen($first) < 2 OR strlen($first) > 16)
    {
        $error[] = "Name between 2 and 16 chars long";
    }
    if(!ctype_alnum ( $first ))
    {
        $error[] = "Letters Only Please";   
    }       

    if($last == "")
    {
        $error[] = "Please Enter Last Name";
    }
    if(strlen($last) < 2 OR strlen($last) > 16)
    {
        $error[] = "Surname between 2 and 16 chars long";
    }
    if(!ctype_alnum ( $last ))
    {
        $error[] = "Letters Only Please";   
    }

    if($email == "")
    {
        $error[] = "Please Enter Vaild Email";
    }
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) 
    {
        $error[] = "Invalid email format";
    }

    if($password1 == "")
    {
        $error[] = "Please enter a valid password";
    }   

    if($password1 <> $password2)
    {
        $error[] = "Passwords Dont Match";
    }


    if(isset($error) && (count($error) >0))
    {
        echo "<pre>";
        print_r($error);
        echo "</pre>";
    }

    echo "step one complete<br />";
    echo $password1."<br />".$password2;
}?>

我遇到的麻烦是我的密码检查

if($password1 <> $password2)
{
    $error[] = "Passwords Dont Match";
} 

我正在检查两个变量是否匹配,但是我正在猜测,因为我已经向它们添加了password_hash,它正在检查哈希值,而不是用户输入的实际值?我将如何纠正它,以便它检查实际数据,而不是哈希值(永远不会匹配)?

感谢任何帮助!

干杯

降落

如果要测试原始数据,那为什么不仅仅实际测试原始数据呢?

if($_POST['create-password'] <> $_POST['confirm-password'])
{
    $error[] = "Passwords Dont Match";
}

我想念什么吗?

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将md5密码哈希转换为PHP 5.5 password_hash()

来自分类Dev

(PHP 5 <5.5.0)的password_hash()的替代方法是什么?

来自分类Dev

PHP password_hash()+ password_verify()今天(2016年5月)安全吗?

来自分类常见问题

如何使用PHP的password_hash哈希和验证密码

来自分类Dev

PHP password_hash检查两个哈希

来自分类Dev

PHP password_hash():密码哈希在系统之间可移植吗?

来自分类Dev

使用CryptoJS对哈希密码进行安全处理,然后使用php password_hash()

来自分类Dev

PHP password_hash():密码哈希在系统之间可移植吗?

来自分类Dev

VSCode与PHP5

来自分类Dev

过滤php 5输入

来自分类Dev

PHP 5登录表单

来自分类常见问题

PHP无法使用password_hash()/ password_verify()使用正确的密码登录

来自分类Dev

PHP MD5(MD5)哈希

来自分类Dev

PHP MD5(MD5)哈希

来自分类Dev

PHP crypt()-返回的md5哈希

来自分类Dev

如何使用php的password_hash()方法。

来自分类Dev

PHP password_hash始终包含哈希键

来自分类Dev

无法安装php5-mysql或php5-mysqlnd

来自分类Dev

Debian:php和php5

来自分类Dev

PHP5-显示错误

来自分类Dev

Laravel 5中的PHP Soapclient

来自分类Dev

编辑php5.conf

来自分类Dev

PHP 5中的聊天支持

来自分类Dev

php5 $ _SESSION安全

来自分类Dev

在PHP函数内部使用变量(Laravel 5)

来自分类Dev

用5个php变量制作字符串

来自分类Dev

PHP每行排序5个数字

来自分类Dev

从 md5 更改为 password_hash

来自分类Dev

PHP-HTML5 API上传损坏