Comment crypter un mot de passe dans WordPress en utilisant WordPress sel?
Je veux crypter le mot de passe envoyé dans la base de données, avec le standard de WordPress sel, tout comme WordPress est-il lorsque vous créez un nouvel utilisateur. Je sais que je peux trouver mon sel dans l'wp-config.php. Donc je n'ai pas besoin de générer le sel; j'ai juste besoin de crypter le mot de passe.
De sorte que lorsque je créer mypassword0, ce qui est envoyé à la base de données est la chaîne de texte chiffré par mon WordPress sel.
Voici mon code d'origine qui fonctionne. (merci Yadav Chetan pour votre aide!) Maintenant j'ai juste besoin d'ajouter le sel à un code de chiffrement.
<?php
if(isset($_POST['submit'])){
$query = "INSERT INTO mytable_one
(user, pass)
VALUES
('".$_POST['user']."', '".$_POST['pass']."')";
$query = "INSERT INTO mytable_two
(fname, lname)
VALUES
('".$_POST['fname']."', '".$_POST['lname']."')";
mysql_query($query);
}else{
?>
<div class="content">
<form method="post">
<div><strong>First Name:</strong><span class="errortext">*</span></div>
<div><input id="first-name" name="fname" type="text" /></div>
<div><strong>Last Name:</strong><span class="errortext">*</span></div>
<div><input id="last-name" name="lname" type="text" /></div>
<div><strong>User:</strong><span class="errortext">*</span></div>
<div><input id="user-login" name="user" type="text" /></div>
<div><strong>Password:</strong><span class="errortext">*</span></div>
<div><input id="user-pass" name="pass" type="text" /></div>
<div><input id="submit-button" value="submit" type="submit" />
</div>
</form>
<?php }?>
Mise à JOUR:
RRikesh m'a suggéré de changer le mysql_* WPDB code. J'ai donc essayé de le changer à wpdb, et aussi j'ai besoin de l'intégrer dans le code des autres. Alors pouvez-vous m'aider à corriger ce code mis à jour?
<?php
if(isset($_POST['submit'])){
$firstname = $_POST['fname'];
$lastname = $_POST['lname'];
$username = $_POST['user'];
$password = $_POST['pass'];
$wpdb->query(
$wpdb->prepare(
"INSERT INTO mytable_one
(user, pass) VALUES (%s, %s)",
$username,
wp_hash_password($password)
)
);
$wpdb->query(
$wpdb->prepare(
"INSERT INTO mytable_two
(fname, lname) VALUES (%s, %s)",
$firstname,
$lastname,
)
);
}else{
?>
<div class="content">
<form method="post">
<div><strong>First Name:</strong><span class="errortext">*</span></div>
<div><input id="first-name" name="fname" type="text" /></div>
<div><strong>Last Name:</strong><span class="errortext">*</span></div>
<div><input id="last-name" name="lname" type="text" /></div>
<div><strong>Username:</strong><span class="errortext">*</span></div>
<div><input id="user-login" name="user" type="text" /></div>
<div>Password:</div>
<div><input id="user-pass" name="pass" type="text" /></div>
<div><input id="submit-button" value="submit" name="submit" type="submit" /></div>
</form>
<?php }?>
UPDATE2
J'ai été incapable d'obtenir le WPDB méthode de travail. cependant, à l'aide de mon dio méthode, j'ai pu a le mot de passe. Voici le code de travail:
<?php
if(isset($_POST['submit'])){
$password = $_POST['user_pass'];
$hash = wp_hash_password('$password');
$query = "INSERT INTO wp_users
(fname, lname, user, pass) VALUES ('".$_POST['fname']."', '".$_POST['lname']."', '".$_POST['user']."', '".$hash."')";
mysql_query($query);
}else{
?>
Peut-être que je devrais ouvrir une nouvelle question au sujet de la WPDB parce que cette question a été sur le hachage du mot de passe, qui est résolu.
$_POST
dans vos requêtes, ou de la mysql_*
fonctions. Utiliser MySQLi ou PDO à la place. Deuxièmement, vous devrez générer de sel, tel qu'il est différent par utilisateur. Aussi, vous voulez stocker le sel avec l'utilisateur.il fonctionne bien pour moi, mais si vous avez une meilleure méthode n'hésitez pas à visiter cette question et de donner une meilleure réponse: stackoverflow.com/questions/16010409/..., Aussi loin que le sel, qui ne répond pas à ma question.
Bien sûr qu'il fonctionne, c'est juste très dangereux. Google pour "SQL injection" et vous allez en savoir plus. Aussi loin que le sel, avez-vous essayé quelque chose?
merci pour l'entrée, j'aimerais entendre votre méthode alternative
Et par la manière, le POSTE est uniquement sur la page d'administration où seulement 2 ou 3 administratif enregistré les utilisateurs auront accès. les visiteurs de la page ne sera jamais voir ou avoir accès à ce code. Toujours dangereux?
OriginalL'auteur | 2013-04-15
Vous devez vous connecter pour publier un commentaire.
Utilisation
wp_hash_password()
de hachage votre mot de passe.Ne pas utiliser
mysql_*
fonctions qu'ils ont été désapprouvées dans PHP 5.5.0, et ont été supprimés en PHP 7.0.0.Utiliser le La Classe WPDB à la place.
J'ai essayé de le faire et modifié mon code de travail à partir de stackoverflow.com/questions/16010409/..., et a ajouté le code que j'ai essayé, à la fin de la question. Pouvez-vous aider à résoudre ce problème?
mise à jour de ma réponse.
wow, c'est tellement plus simple... laissez-moi essayer... la seule chose c'est combien environ pour les deux bases de données distinctes? et je fixe mon truc, j'ai essayé ci-dessus...
j'ai mis à jour mon essayez à nouveau la question en fonction de votre nouveau code, en essayant de les mettre dans des bases de données distinctes
OriginalL'auteur RRikesh
vous devez utiliser bcrypt pour la sécurisation des mots de passe
voici un exemple de classe qui l'utilise pour mes projets.
Je ne vous comprends pas besoin de wordpress, mais c'est une bonne information pour qui veut sécuriser leurs mots de passe.
pourquoi sur la terre, c'est downwoted de toute façon!!!!!
OriginalL'auteur Erdem Ece