|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
VÉRIFICATION DE LOGIN VIA HASH MD5
Information sur la source
Description
Bah voila, dans ma nuit, je me suis posé une question (depuis la source de Coucou d'ailleurs !) : Comment peut-on réussir à ne plus se faire chier entre les addslashes et autres ? Et la, une idée m'est venue : l'utilisation d'un hash. Que ce soit via MD5, SHA-1, ou un moyen de cryptage quelconque, tous les caractères de type ' \ * # risquaient fort bien de disparaitre dans le hash ! Alors, j'ai fais ce bout de code avec du hash MD5, mais il vaut mieux que vous preniez autre chose ( SHA-1 est un peu plus sécurisé du haut de ces 40 bits :p). Voila comment j'ai fais :
Source
- <?php
- function login($login, $password) {
-
- if ( strlen($login) < 4 ) return false; // Si le login est inférieur à 4 charactères, on arrète tout.
-
- $password = md5($password);
- $login = trim($login);
-
- // Le plus important : la commande de query. J'utilise strtolower pour supprimer la casse.
- $query = mysql_query("SELECT COUNT(*) FROM users WHERE MD5(login) = '".md5($login)."' AND password = '".$password."' ");
- $data = mysql_fetch_row($query);
-
- // Si il existe un enregistrement (le login étant unique pour chaque personne), alors c'est bon :)
- return ( $data[0] == 1 ) ? true : false;
-
- }
-
- // Si le formulaire est soumis
- if ( isset($_POST['submit']) ) {
- if ( login($_POST['login'], $_POST['password'] ) { // Si la fonction ci-dessus est TRUE (vrai)
- session_start();
- $_SESSION['logged_in'] = true; // On met ca en session
- header('Location: private.php');
- die(); // Etre sûr que la fin de cette page ne sera pas pris en compte
- } else {
- $warning = 'Le couple login/password que vous avez entrez est incorrect'; // si la fonction renvoit false, on se fait une variable d'erreur
- }
- }
-
- if ( isset($warning) ) { // Test de présence de la variable d'erreur
- echo '<p>'.$warning.'</p>';
- }
-
- // Affichage du formulaire
- ?>
- <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
- <fieldset>
- <legend>Login</legend>
- <label for="login">Login :</label>
- <input type="text" name="login" id="login"/>
- <label for="password">Mot de passe :</label>
- <input type="password" name="password" id="password"/>
- <input type="submit" name="log" value="Se connecter"/>
- </fieldset>
- </form>
<?php
function login($login, $password) {
if ( strlen($login) < 4 ) return false; // Si le login est inférieur à 4 charactères, on arrète tout.
$password = md5($password);
$login = trim($login);
// Le plus important : la commande de query. J'utilise strtolower pour supprimer la casse.
$query = mysql_query("SELECT COUNT(*) FROM users WHERE MD5(login) = '".md5($login)."' AND password = '".$password."' ");
$data = mysql_fetch_row($query);
// Si il existe un enregistrement (le login étant unique pour chaque personne), alors c'est bon :)
return ( $data[0] == 1 ) ? true : false;
}
// Si le formulaire est soumis
if ( isset($_POST['submit']) ) {
if ( login($_POST['login'], $_POST['password'] ) { // Si la fonction ci-dessus est TRUE (vrai)
session_start();
$_SESSION['logged_in'] = true; // On met ca en session
header('Location: private.php');
die(); // Etre sûr que la fin de cette page ne sera pas pris en compte
} else {
$warning = 'Le couple login/password que vous avez entrez est incorrect'; // si la fonction renvoit false, on se fait une variable d'erreur
}
}
if ( isset($warning) ) { // Test de présence de la variable d'erreur
echo '<p>'.$warning.'</p>';
}
// Affichage du formulaire
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<fieldset>
<legend>Login</legend>
<label for="login">Login :</label>
<input type="text" name="login" id="login"/>
<label for="password">Mot de passe :</label>
<input type="password" name="password" id="password"/>
<input type="submit" name="log" value="Se connecter"/>
</fieldset>
</form>
Conclusion
Alors par contre, je n'ai pas eu le temps de le tester, car mon serveur apache connait quelque problème en local chez moi. Je poste quand même la source, si quelqu'un trouve mieux ou alors me dit que ca marche pas, au moins je serais fixé :) voila :) PS : J'ai peut-être fait une erreur de placement etre MD5() et LOWER() et entre md5() et strtolower(). Je sais plus dans quel ordre PHP lit =)
Historique
- 11 octobre 2005 23:04:49 :
- J'ai enlevé le LOWER() et strtolower() vu que d'après Antho, les champs de types VARCHARS sont insensibles à la casse
- 11 octobre 2005 23:12:46 :
- Je re-update vite fait, histoire de montrer un exemple.
Sources du même auteur
Sources de la même categorie
Sources en rapport avec celle ci
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Cryptage Sha [ par adeliz ]
Bonjour.Voila, pour plus de sécurité (et pour ma culture perso :) ), je voudrais savoir comment crypter une phrase... Pour le moment j'arrive à le fai
MD5 - Visualisation du cryptage [ par sebounet62 ]
Bonjour,Je recherche à afficher la valeur d'un MD5.<?php$str = 'pomme';md5($str);echo '$str'?> J'ai tenté de faire ce code mais cela ne fonction
Authentification par challenge MD5 [ par psyjc ]
Bonjour tout le monde,j'ai code un petit script d'authentification login/pass PHP qui fonctionne sur le principe d'un challange par MD5.le code est re
Base de hash MD5 [ par hazkaal ]
Bonjour,Voici une base de hash MD5 que j'ai développé en PHP.On peut : -ajouter un mot dont sa valeur md5 sera ajoutée dans un dictionnaire -rech
securite et cryptage [ par renaud288 ]
Vu le nombre important de demande au sujet de la sécurité de mots de passe transmis, je vais faire un truc général.Bon nombre d'entre vous (les débuta
cryptage [ par huricane ]
Bonjour, J'ai un problème pour crypter de simple mot de passe dans une base de donnée. Je suis sous postgresql et je dispose d'une table utilisateur o
code pour cryptage MD5 en série [ par yaca ]
Bonjour, Je suis débutant essaie de comprendre ce qui se passe dans vos lignes, mais je ne sais encore écrire seul!! Je voudrais crypter MD5 en série
code pour cryptage MD5 en série [ par yaca ]
Bonjour, J'ai une bdd Mysql où j'ai des mots de passe en clair. J'aimerais les coder MD5 en série, mais ne connais pas la programmation. J'ai bien réu
problème avec requete sql et php [ par machmacha ]
bonjour,j'ai une requête simple sur php la voilà:$sql = mysql_query("SELECT * FROM test WHERE login='".$_POST['log
Problème structure de contrôle [ par Allan007 ]
Bonsoir à tous,je suis entrain de créer un espace membre sans l'utilisation de SQL, les informations sont répertorier dans un .txt.J'ai rencontrer un
|
Téléchargements
Logiciels à télécharger sur le même thème :
Comparez les prix Nouvelle version

HTC Touch HD
Entre 25€ et 605€
|