Notes:PHP - Comparer hachage avec base de données ne fonctionne pas
- Je suis encore assez nouveau pour php
- Ce formulaire de connexion semble fonctionner parfaitement bien si je ne Hash pas le mot de passe.
- J'ai essayé md5, sha256 et maintenant je l'ai laissé à sha1. Aucun de ces travaux.
- J'ai d'abord utilisé
echo sha1("password");
pour trouver ce que le hachage de mon mot de passe serait, j'ai ensuite copié ce hachage et je l'ai collé manuellement avec phpMyAdmin. Je ne suis pas sûr si c'est ce que le problème est ou non.
Anyways Voici le code:
<?php
session_start();
require("config.php");
if(isset($_POST['submit'])) {
$username = mysql_real_escape_string($_POST['username']);
$password = sha1(mysql_real_escape_string($_POST['password']));
$loginsql = "SELECT * FROM login WHERE username = '" . $username .
"' AND password = '" . $password . "'";
$loginresult = mysql_query($loginsql);
$loginnumrows = mysql_num_rows($loginresult);
if($loginnumrows == 1) {
$loginrow = mysql_fetch_assoc($loginresult);
session_register("USERNAME");
session_register("USERID");
$_SESSION['USERNAME'] = $loginrow['username'];
$_SESSION['USERID'] = $loginrow['id'];
header("Location: " . $config_basedir . "controlpanel.php");
}
else{
echo "<p>Incorrect Login, please try again!</p>";
}
}
else{
}
?>
Je ne suis pas trop sûr où aller avec cela. Je suis sûr que mon code pourrait être plus efficace mais comme je l'ai mentionné dans les notes, cela fonctionne quand je n'ai pas le mot de passe. Merci pour la lecture.
Comment est configuré le mot de passe dans votre base de données? –
Vous ne devriez pas utiliser mysql_real_escape_string jusqu'à ce que les données soient envoyées à la base de données.Plus précisément, 'sha1 (mysql_real_escape_string ($ _ POST ['mot de passe']))' 'devrait être' mysql_real_escape_string (sha1 ($ _ POST ['mot de passe'])); Nous ne pouvons pas non plus voir comment le mot de passe * stocké est haché, donc nous ne pouvons pas vraiment vous aider. Essayez de sélectionner l'enregistrement et 'var_dump' votre mot de passe. Comparez cela avec la valeur affichée sur le serveur. Ce sont des étapes de débogage de base que vous devriez apprendre à suivre. – meagar
Avez-vous essayé '$ password = sha1 ($ _ POST ['mot de passe']);'? Pas besoin de mysql_real_escape_string ici. – aletzo