【问题标题】:Change in PHP code of password from MD5 to WordPress password encryption将密码的 PHP 代码从 MD5 更改为 WordPress 密码加密
【发布时间】:2017-09-27 01:12:27
【问题描述】:

如何修改我的代码以将我的密码从 MD5 更改为 WordPress 密码,例如 $P$B?因为我的应用程序用户注册信息发送给 wp-users。现在我无法使用用户在 Wordpress 的 Woocommerce 网站中注册的信息登录我的应用程序。我是因为密码才找到的。

我知道如果我想用我的应用程序连接密码,我只需要在localhost中将密码重置为MD5,但是因为我不知道我的用户密码,所以我不能使用这种方法,所以我打算这样做用户在我的应用程序中注册他们的帐户,发送给 wp-users 的密码将与 WordPress 相同。我在 PHP 代码中的密码加密关键字是这一行:

$user_pass = md5($user_pass);

下面是我的代码:

<?php 

class DbOperations{

    private $con; 

    function __construct(){

        require_once dirname(__FILE__).'/DbConnect.php';

        $db = new DbConnect();

        $this->con = $db->connect();

    }

    /*CRUD -> C -> CREATE */

    public function createUser($user_login, $user_pass,$user_email){
        if($this->isUserExist($user_login,$user_email)){
            return 0; 
        }else{
            $user_pass = md5($user_pass);
            $stmt = $this->con->prepare("INSERT INTO `wp_users` (`ID`, `user_login`, `user_pass`,`user_email`) VALUES (NULL, ?, ?, ?);");
            $stmt->bind_param("sss",$user_login,$user_pass,$user_email);

            if($stmt->execute()){
                return 1; 
            }else{
                return 2; 
            }
        }
    }

    public function userLogin($user_login, $user_pass){
        $user_pass = md5($user_pass);
        $stmt = $this->con->prepare("SELECT ID FROM wp_users WHERE user_login = ? AND user_pass = ?");
        $stmt->bind_param("ss",$user_login,$user_pass);
        $stmt->execute();
        $stmt->store_result(); 
        return $stmt->num_rows > 0; 
    }

    public function getUserByUsername($user_login){
        $stmt = $this->con->prepare("SELECT * FROM wp_users WHERE user_login = ?");
        $stmt->bind_param("s",$user_login);
        $stmt->execute();
        return $stmt->get_result()->fetch_assoc();
    }


    private function isUserExist($user_login, $user_email){
        $stmt = $this->con->prepare("SELECT ID FROM wp_users WHERE user_login = ? OR user_email = ?");
        $stmt->bind_param("ss", $user_login, $user_email);
        $stmt->execute(); 
        $stmt->store_result(); 
        return $stmt->num_rows > 0; 
    }

}
?>

【问题讨论】:

  • 如果有其他答案,请在此评论,目前仍未找到解决方案

标签: php wordpress localhost


【解决方案1】:

创建密码:

$plain_password="string";

$wp_hasher = new PasswordHash(16, true);   
$password = $wp_hasher->HashPassword($plain_password);

$password 现在类似于存储在 wordpress 数据库中的密码。

检查密码:

$wp_hasher = new PasswordHash(16, true);
if($wp_hasher->CheckPassword($password, $user_pass)) {
            //statement
} else {
           //statement
}

您需要包含PasswordHash 类。可在此处获得: https://github.com/WordPress/WordPress/blob/master/wp-includes/class-phpass.php

【讨论】:

  • 这段代码只是替换了 $user_pass = md5($user_pass); ?
  • 我可以知道创建密码并检查密码代码写在哪里吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 2021-07-03
  • 2020-11-06
  • 2021-07-19
  • 2015-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多