重置密码,数据库更新后登录错误

mp252

我已经在php / silex / twig中建立了一个密码重置系统,该系统可以向用户发送带有唯一令牌的密码重置链接。用户访问confirm-new-password页面后,系统会提示您输入新密码并确认该密码。然后confirm_new_password我有一个功能可以检查密码是否相同,如果密码是更新该特定用户的数据库,然后删除令牌。正如我在数据库中看到的那样,密码更改后一切正常。

但是我的问题是,当用户尝试使用新密码登录时,我的Flash消息出现错误,提示不是这种情况,详细信息是错误的。

当我使用该password_hash函数时,我认为可能与此有关,但是我在将新密码输入数据库之前对新密码进行了哈希处理,并且正在使用password_verify函数中的功能运行检查login

最初,我已经读过这篇文章,以开始帮助构建重置功能,包括帮助生成随机令牌和带有到期时间的一个时间url的其他功能。

之后,我阅读了这篇文章,这有助于我理解我需要传递隐藏的输入,以便可以根据用户重置密码的方式更新post变量。但是重置密码后,似乎无法通过登录问题。

这是我的确认新密码功能

public function confirm_new_password($password1,$password2,$email,$token){

if($password1 === $password2){
        $password1 = mysqli_real_escape_string($this->link,$password1);
        $password1 = password_hash($password1,PASSWORD_BCRYPT);
        $result = mysqli_query($this->link,"update user set password='{$password1}' where email='{$email}' ");
        $result1 = mysqli_query($this->link,"update user set token='' where email = '{$email}' ");
        return true;
}else{
    return false;
}

}

这是树枝模板;

<form class="form-signin" action="/confirm-new-password" method="post">
<h2 class="form-heading">Confirm New Password</h2>
<label for="inputNewPass1" class="sr-only">New Password</label>
<input type="password" id="inputNewPass1" class="form-control" name="pass1" placeholder="New Password" required>
<label for="inputNewPass2" class="sr-only">Re-Type New Password</label>
<input type="password" id="inputNewPass2" class="form-control" name="pass2" placeholder="Re-type New Password" required>
{% if test is defined %}

    <input type="hidden" name="email" value="{{ test.email }}">
    <input type="hidden" name="token" value="{{ test.token }}">
{% endif %}
<div class="spamCheck">
        <label for="inputPostcode" class=sr-only">Postcode</label>
        <input type="text" id="inputPostcode" class="form-control" name="postcode" placeholder="Leave this field blank" />
</div>
<button class="btn btn-lg btn-default btn-block" type="submit">Reset    Password</button>
</form>

这是后控制器代码;

$app->post('/confirm-new-password', function(Request $request) use($app){
$password1 = $app['request']->get('password1');
$password2 = $app['request']->get('password2');
$email       = $app['request']->get('email');
$token       = $app['request']->get('token');

if($app['auth']->confirm_new_password($password1,$password2,$email,$token)){
    return $app->redirect('/login');
}else{
    return $app->redirect('/');
}

});

我应该提及的是,该登录名对其他用户而言运行良好,只是在重置密码后才停止工作。下面是登录功能;

    public function login($email, $password) {
    $email = mysqli_real_escape_string($this->link, $email);

    $result = mysqli_query($this->link, "select email, password,type from user where email = '{$email}'");

    $row = mysqli_fetch_assoc($result);

    if(password_verify($password,$row['password'])){
            $user = array('email' => $row['email'], 'type' => $row['type']);
            $this->session->set('user', $user);
            return true;
        } else {
            return false;
        }

  }

这是登录的后控制器方法;

$app->post('/login', function(Request $request) use($app) {
$email = $app['request']->get('email');
$password = $app['request']->get('password');
$postcode = $app['request']->get('postcode');
$post = array($email,$password,$postcode);
$app['auth']->spamBotCheck($post);
$app['auth']->honeyPotCheck($postcode);

if ($app['auth']->login($email, $password)) {
    $app['session']->getFlashBag()->add('success','Success! You are now logged in.');
    return $app->redirect('/');
} else {
    $app['session']->getFlashBag()->add('error','Error! There was an error with your login details, please try again');
    return $app->redirect('/login');
}
});

我收到Flash错误,说我的登录详细信息有错误

放克四十尼纳

将我的评论转为其他/免费的答案。

除了给出的其他答案;我看到的方式是您正在使用name="pass1"name="pass2"您正在get('password1')get('password2')

  • 他们需要匹配。

错误报告添加到文件顶部,这将有助于发现错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:显示错误仅应在登台时进行,而不应在生产时进行。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

安装后无法登录。数据库显示哈希密码:

来自分类Dev

mlab重置数据库密码

来自分类Dev

我的重置密码密码系统给了我一个数据库错误

来自分类Dev

数据库登录错误

来自分类Dev

随时查询或更新时,始终使用密码登录到同一数据库

来自分类Dev

Log4Net 在错误后未登录数据库,它如何登录文件

来自分类Dev

Locall MySQL数据库登录错误:用户'root'@'localhost'的访问被拒绝(使用密码:是)

来自分类Dev

更新数据库错误

来自分类Dev

如何在OpenShift中更改/重置数据库密码

来自分类Dev

比较数据库中的密码以进行密码更新

来自分类Dev

PHP 登录表单 - MySQL 数据库 - 密码无效

来自分类Dev

Django:Heroku睡眠后数据库突然重置

来自分类Dev

系统重启后气流数据库重置

来自分类Dev

拖放操作后更新数据库

来自分类Dev

交易后如何更新数据库?

来自分类Dev

重置密码后,ubuntu无法登录

来自分类Dev

重置密码后,ubuntu无法登录

来自分类Dev

登录后从mysql数据库中检索数据

来自分类Dev

登录后从数据库中提取各个用户的数据

来自分类Dev

SQL错误后数据库移动

来自分类Dev

插入错误的编码后更新MySQL数据库中的数据

来自分类Dev

Profilegrid 登录/重置密码和错误

来自分类Dev

错误的数据库记录正在更新

来自分类Dev

SQLite数据库更新导致错误

来自分类Dev

更新数据库更新后显示的数据

来自分类Dev

我无法更新数据库中的字母密码

来自分类Dev

创建数据库后如何登录odoo?

来自分类Dev

分离数据库后,SQL Server 2014无法登录

来自分类Dev

用户登录后如何调用Firestore数据库?