Comment utiliser un utilisateur et mot de passe Wordpress pour se connecter en php

Comment utiliser un utilisateur et mot de passe Wordpress pour se connecter en php

2019-05-10 Niveau: Avancé

J'ai eu un projet à faire ou les gens devaient se connecter pour entrer sur un site sécurisé, mais je devais me servir des utilisateurs et mots de passe d'une base de données de Wordpress déjà existante.

 

Comme il est impossible de voir les mots de passe en question dans la base de données j'ai trouvé la façon de faire suivante.

 

1. Localiser le fichier class-phpass.php de Wordpress

Ce fichier se retrouve dans le répertoire wp-includes, c'est lui qui va nous permettre de comparer notre mot de passe à celui de Wordpress.

 

2. Connecter vous à la BD de Wordpress

Créer le fichier db_connect.inc.php

<?php
$connwp=mysqli_connect("localhost","utilisateur","mot-de-passe","nom-de-la-base-de-données");
if (mysqli_connect_errno()) {
	echo "Failed to connect:" . mysqli_connect_error();
}

mysqli_set_charset($conn, 'utf8');

?>

 

3. Comparer les mots de passe, du formulaire et la base de données de WP

<?php

require_once ('db_connect.inc.php');

require_once 'wp-includes/class-phpass.php';

$result = mysqli_query($connwp,"SELECT user_email, user_pass FROM wp_users WHERE wp_users.user_email ='".$courriel."' " )
or die("SELECT Error: ".mysqli_error($connwp));

while($rows=mysqli_fetch_array($result)) {

$wp_hasher = new PasswordHash(8, TRUE);

$password_hashed = $rows['user_pass'];
$password_form = $password;

if($wp_hasher->CheckPassword($password_form, $password_hashed)) {
    echo "Oui, ça marche";
} else {
    echo "Non, mauvais mot de passe";
}
}
//cest fait
?>

 

J'explique le code:

 

Nous incluons le fichier de connection à la base de données.

require_once ('db_connect.inc.php');

 

Nous incluons aussi le fameux fichier class-phpass.php.

require_once 'wp-includes/class-phpass.php';

 

On recherche le mot de passe encrypté dans user_pass avec le courriel de l'usager.

$result = mysqli_query($connwp,"SELECT user_email, user_pass FROM wp_users WHERE wp_users.user_email ='".$courriel."' " )
or die("SELECT Error: ".mysqli_error($connwp));

 

Dans un loop on crée un hachage à partir de texte brut. Le hash est toujours unique

while($rows=mysqli_fetch_array($result)) {

$wp_hasher = new PasswordHash(8, TRUE);

 

On déclare nos 2 variables,  $password_hashed est le mot de passe de la base de données et $password_form est celui du formulaire.

$password_hashed = $rows['user_pass'];
$password_form = $password;

 

Si les mots de passe sont égals alors "Oui, ça marche" et si non 'Non, mauvais mot de passe".

if($wp_hasher->CheckPassword($password_form, $password_hashed)) {
    echo "Oui, ça marche";
} else {
    echo "Non, mauvais mot de passe";
}
}

 

Done!


Laissez nous un commentaire