当我尝试使用password_hashpassword_verify ,似乎一直都返回false。

这是我的代码。

<-----Login page---->
<?php 

require_once '../../includes/initialize.php';

if($session->is_logged_in()){

    redirect_to("index.php");
}



if (isset($_POST['submit'])){

    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
//Check database to see if username/password exist.

    $found_user = User::authenticate($username, $password);

    if ($found_user) {      
        $session->login($found_user);
        log_action('Login', "{$found_user->username} logged in.");
        redirect_to("index.php");
    }else{

    $message = "Username/Password combination incorrect.";

    }


}else{

    $username = "";
    $password = "";
}

?>

<---Create New Admin Page-->
<?php 

require_once '../../includes/initialize.php';


if(!$session->is_logged_in()){redirect_to("login.php");}

?>

<?php  

        if(isset($_POST['submit'])){
            $required_fields = array("first_name", "last_name", "username", "password", "confirm_password");
            validate_presences($required_fields);

            if (empty($errors)) {
                $first_name = trim($_POST['first_name']);
                $last_name = trim($_POST['last_name']);
                $username = trim($_POST['username']);
                $password = trim($_POST['password']);
          $confirm_password= trim($_POST['confirm_password']);

            if ($password != $confirm_password) {
                $message = "Passwords does not match!";
            }else{

          $hashed_password = password_hash($password, PASSWORD_BCRYPT, ['cost' => 10]);
            $user = new User();
            $user->first_name = $first_name;
            $user->last_name = $last_name;
            $user->username = $username;
            $user->password = $hashed_password;

            if($user->create()){
                $session->message("Admin {$user->username} created successfully.");
                redirect_to('manage_admins.php');
            }else {
                $message = "Admin can't be created!";
            }
        }

        }
    }else{
        $first_name = "";
        $last_name = "";
        $username = "";
    }


?>

<------User Object Page ----->
<?php 

require_once (LIB_PATH.DS.'database.php');

class User extends DatabaseObject{

protected static $table_name = "users";
protected static $db_fields = array('id', 'username', 'password', 'first_name', 'last_name');
public $id;
public $username;
public $password;
public $first_name;
public $last_name;


public function full_name(){
    if(isset($this->first_name) && isset($this->last_name)){

        return $this->first_name." ".$this->last_name;
    }else{

        return "";
    }
}


public static function authenticate($username="", $password=""){

    global $database;
    $username = $database->escape_value($username);
    $password = $database->escape_value($password);

    $sql = "SELECT * FROM users WHERE username = '{$username}' LIMIT 1";
    $result_array = self::find_by_sql($sql);
    $admin = !empty($result_array) ? array_shift($result_array) : false;
    if ($admin) {
      //Found Admin Now check password
      if (password_verify($password, $admin->password)) {
        return $admin;

      }else {
        return false;
      }

    }  

}


}



?> 

  ask by Fahadi Muhumuza translate from so

本文未有回复,本站智能推荐:

1回复

基于PHP会话的登录系统安全性

我正在使用SESSIONs实现一个简单的登录系统。 我应该检查用户的每个数据(id,电子邮件,全名<<我只有这些),还是仅检查id还是检查会话是否存在? 谢谢! 如果您有更好的解决方案,请告诉我= P
1回复

使用PHP的Google+登录

我有点困惑。 我正在尝试提供一个简单的Google身份验证登录。 我想通过客户端流程使用Google推荐的方法: https : //developers.google.com/+/web/signin/add-button 如果使用此方法,当用户在页面之间移动时如何保持登录状态。
2回复

来自Wikibooks的PHP登录系统:被信任吗?

有人在Wikibooks上阅读过PHP用户认证系统的描述吗? http://en.wikibooks.org/wiki/PHP_Programming/User_login_systems 好吗? 安全? 正确?
6回复

如何创建一个非常简单的用户名 - 用PHP登录密码?

的index.php 的login.php 所以,因为我还在学习PHP,所以我现在想要解决一些问题: 我怎么得到它所以我可以重新加载index.php并显示'你好'? 如何让login.php在成功的身份验证时自动加载index.php,这样我才能得到它“hel
4回复

创建PHP登录页面的最佳方法是什么?

我是PHP的新手,我正在寻找一些关于如何在PHP中实现身份验证的最佳实践。 我是Adobe的传播者,当人们使用Flex / Flash登录屏幕时,其中一件令我烦恼的事情就是。 所以我想做一个关于使用HTML / PHP登录页面的博客文章/示例,然后将会话信息传递给Flex-after-已
1回复

PHP:一种保留登录信息的安全方法

阅读完此及所有相关问题后,我仍然遇到问题。 我正在尝试使用“记住我”功能来实现登录表单。 早些时候我一直在使用cookie(其中仅包含一个经过哈希处理的用户名,没有密码)来验证用户是否已经登录,但是我读到它不太安全,因此我决定只保留会话。 一开始,一切都会按需进行: 但是,如果
1回复

如何使用php在类似应用程序中对用户进行身份验证

您好,有两个应用程序,每个用户的数据库都不同。 我已经使用sesions实现了登录功能,但是在这两个应用程序代码中都这样 应用程式1: ` ` 应用程式2: ` ` 上面方法的问题是,即使用户登录到myapp1中,如果两个应用程序中都存在用户ID,
1回复

password_verify使用password_hash错误在登录时将用户存储在会话中

我在使用password_hash时遇到问题,当我登录时,我想让用户登录Session,但是当我使用密码验证时,它不起作用,ECHO不返回任何内容。 我该如何解决? 谢谢这是我的代码: 当我不使用password_verify时,此代码可以正常工作。