Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 顺序(连续)新密码与旧密码验证_Php - Fatal编程技术网

Php 顺序(连续)新密码与旧密码验证

Php 顺序(连续)新密码与旧密码验证,php,Php,当我想更改新密码时,如何验证顺序字符串/int? 例如: old pass: mypassword1 new pass: mypassword2 然后它将返回false,但如果是这样的话 old pass: mypassword1 new pass: mypassword3 然后它将返回真值 我只为新密码尝试了regEx方法 提前感谢。因为您正在处理密码,所以您不应该能够与以前的密码进行比较(它应该被安全地散列,因此不可逆)。PHP有一些关于这个主题的优秀阅读材料 作为替代方案,您可以生成已

当我想更改新密码时,如何验证顺序字符串/int? 例如:

old pass: mypassword1
new pass: mypassword2
然后它将返回false,但如果是这样的话

old pass: mypassword1
new pass: mypassword3
然后它将返回真值

我只为新密码尝试了regEx方法


提前感谢。

因为您正在处理密码,所以您不应该能够与以前的密码进行比较(它应该被安全地散列,因此不可逆)。PHP有一些关于这个主题的优秀阅读材料

作为替代方案,您可以生成已知密码的变体,以破坏验证规则,然后查看这些变体是否匹配

假设您正在使用密码功能:

$hash = password_hash($password, PASSWORD_DEFAULT);
// AND....
password_verify($password, $hash);
变化可能如下所示:

$pwd = 'word1';
$num = substr($pwd,-1);
$invalid = false;
$phrase = substr($pwd, 0, -1);
foreach([$num++, $num--] as $variation) {
    if(password_verify($phrase.$variation, $hash)) {
        // password matches, the user is just incrementing the digit.
        $invalid = true;
    }
}
因此,如果
$invalid
为真,则密码将违反您的验证规则

这不是一个简单的方法。它只与您生成无效密码变体的能力相同。

尝试以下方法:

<?php
$oldpass = 'mypassword1';
$newpass = 'mypassword2';
preg_match('/^([^\d]+)([\d]*?)$/', $oldpass, $match);
$string = $match[1];
$number = $match[2] + 1;
$string .= $number;
$valid = $newpass === $string ? false : true;
var_dump($valid);
?>


If(end\u number\u of_previous+1==end\u number\u of_current){return false;}否则{return true;}
。请告诉我们您尝试了什么,以便我们可以帮助解决具体问题…@FirstOne我尝试了regEx,但它仅用于新密码。您是否尝试过将新旧密码与正则表达式进行比较?:)密码的顺序部分是否总是添加到密码末尾的数字?您可以共享Regex代码吗???@Dinidu是的,大多数情况下,更改密码模块都需要此代码。它需要从html表单中输入旧密码和新密码。表单将新旧数据发布到函数中,而不是一些散列密码。所以,这不是我想要的。无论如何,谢谢你的回答。:)