Mots de passe php

Fermé
roland999 Messages postés 32 Date d'inscription dimanche 27 octobre 2013 Statut Membre Dernière intervention 18 février 2014 - Modifié par pijaku le 22/01/2014 à 15:48
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 22 janv. 2014 à 17:14
salut voici mon code php
<?php
// on teste si le visiteur a soumis le formulaire
if (isset($_POST['inscription']) && $_POST['inscription'] == 'Inscription') {
 // on teste l'existence de nos variables. On teste également si elles ne sont pas vides
 if ((isset($_POST['nom']) && !empty($_POST['nom'])) && (isset($_POST['prenoms']) && !empty($_POST['prenoms'])) && (isset($_POST['login']) && !empty($_POST['login'])) && (isset($_POST['pass']) && !empty($_POST['pass'])) && (isset($_POST['pass_confirm']) && !empty($_POST['pass_confirm']))) {
 // on teste les deux mots de passe
 if ($_POST['pass'] != $_POST['pass_confirm']) {
  $erreur = htmlentities('Les 2 mots de passe sont différents.');
 }
 else {
  $base = mysql_connect ('localhost', 'root', '');
  mysql_select_db ('gestiondecheque', $base);

  // on recherche si ce login est déjà utilisé par un autre membre
  $sql = 'SELECT count(*) FROM utilisateur WHERE login="'.mysql_real_escape_string($_POST['login']).'"';
  $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  $data = mysql_fetch_array($req);

  if ($data[0] == 0) {
  $sql = 'INSERT INTO utilisateur VALUES("","'.$_POST['nom'].'","'.$_POST['prenoms'].'","'.mysql_real_escape_string($_POST['login']).'", "'.mysql_real_escape_string(md5($_POST['pass'])).'")';
  mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());

  session_start();
  $_SESSION['login'] = $_POST['login'];
  header('Location: index.php');
  exit();
  }
  else {
  $erreur = htmlentities('Un membre possède déjà ce login.');
  }
 }
 }
 else {
 $erreur = htmlentities('Vous avez oublié de remplir tout les champs.');
 }
}
?>


et je veux ajouter qu'il faut un minimum de 6 caractere pour que le mots de passe soit valider aider moi

2 réponses

ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 1 566
22 janv. 2014 à 15:33
Salut,

si tu veux avoir de l'aide, il vaudrait mieux que tu penses à utiliser les balises de code qui vont rendre ton code plus lisible...

Mis à part ça, quel est le soucis ? La fonction strlen compte le nombre de caractère d'une chaine, c'est une des premières fonctions qu'on apprend quand on débute le php.
0
roland999 Messages postés 32 Date d'inscription dimanche 27 octobre 2013 Statut Membre Dernière intervention 18 février 2014
22 janv. 2014 à 15:38
oui je le sais mais comment l integrer a mon code c'est ce que je demande
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié par [Dal] le 22/01/2014 à 17:21
Es-tu sûr que c'est "ton code" pour poser une question pareille.

Tu crées une nouvelle condition à l'exécution de ton code présent dans les accolades internes qui traitent les données validées.

Un
if (strlen($_POST['pass']) > 5)
devrait suffire.

Autrement, tu peux pousser un peu plus la validation, tu pourrais vérifier que le mot de passe comporte :

- de 6 à 25 caractères (ou une autre limite)
- une lettre minuscule au moins
- une lettre majuscule au moins
- un chiffre au moins

Tu peux alors faire comme cela :

// code en lignes 1 à 10
if (preg_match(/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{6,25}$/, $_POST['pass'])) {
// code en lignes 11 à 30
} else {
   $erreur = htmlentities('Le mot de passe doit comporter de 5 à 25 caractères, au moins une majuscule et une minuscule, et au moins un chiffre.');
}
// code en lignes 31 à 37


Si cela ne te plait pas met ton strlen à la place du preg_match.


Dal
0