簡體   English   中英

將密碼的 PHP 代碼從 MD5 更改為 WordPress 密碼加密

[英]Change in PHP code of password from MD5 to WordPress password encryption

如何修改我的代碼以將我的密碼從 MD5 更改為 $P$B 之類的 WordPress 密碼? 因為我的應用程序用戶注冊信息發送給 wp-users。 現在我無法使用用戶在 Wordpress 的 Woocommerce 網站上注冊的信息登錄我的應用程序。 我發現是因為密碼。

我知道如果我想將密碼與我的應用程序連接,我只需要在本地主機中將密碼重置為 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; 
    }

}
?>

創建密碼:

$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM