J'utilise actuellement la PHP suivante pour sélectionner des mots de passe en texte de ma base de données, utilisez BCRYPT pour les hacher, puis mettez-les sur le tableau:
PHP: P>
$select = "SELECT Password FROM Login"; $result = $conn->query($select); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "Password: " . $row["Password"]. "<br>"; $hashed_password = password_hash($row["Password"], PASSWORD_DEFAULT); $sql = "UPDATE login SET Password='$hashed_password' "; mysqli_query($conn,$sql); echo " Succesfully Updated. <br>"; } } else { echo "0 results"; }
3 Réponses :
Vous utilisez le script i suggère p> $ sql = "Mettre à jour le jeu de paramètres de connexion = '$ hashed_password'"; code> qui manque le
où code> clause, définitivement toutes les données de Votre table n'aura que 1 type de mot de passe haché
Dans votre requête, vous obtenez tous les mots de passe, mais vous n'obtenez pas la clé primaire de chaque ligne. Comment saurez-vous quelle ligne à mettre à jour? Vous devez également obtenir la clé primaire pour la table et utiliser cela pour mettre à jour la ligne.
supposant que votre table a une ligne nommée «ID» qui est la clé primaire. EM> P> < Pré> xxx pré> Vous voudrez peut-être envisager de trouver un moyen de savoir si le mot de passe est déjà mis à jour et ne mettez à jour que ces lignes non mises à jour. P> p>
Pour mettre à jour, nous devons utiliser une clause WHERE. Dans votre code, il n'y a pas de clause où. il devrait être comme p>