IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Cryptage password pour login


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut Cryptage password pour login
    Alors voilà mon soucis. Si avec le formulaire register.php avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="password" name"motDePasse" size="20" maxsize="20" />
    La personne qui vient s'enregistrer insère donc un mot de passe crypté dans la colonne pass de la table Membre.

    Mais là impossible de se connecter avec le mot de passe et cette page (erreur=Le nom de login 'mary' existe déjà mais notre mot de passe n'est correct. Essayer encore une fois.) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    <?php
    session_start();
    session_register('auth');
    session_register('nomLogin');
     
    $user="xxx";
    $host="localhost";
    $password="xxx";
    $database="xxx";
     
    $nomChamp=array ("nomMembre"=>"Utilisateur", "mpasse"=>"Mot de passe", "nomsociete"=>"Nom de la société", "rue"=>"Rue", "ville"=>"Ville", "cp"=>"Code postal", "canton"=>"Canton", "presidentnom"=>"Nom du président", "presidentprenom"=>"Prénom du président", "ruecourrier"=>"Rue (courrier)", "villecourrier"=>"Ville (courrier)", "cpcourrier"=>"Code postal (courrier)", "telephone"=>"Téléphone", "email"=>"E-mail", "adresseweb"=>"Adresse Internet", "cantoncourrier"=>"Canton (courrier)", "F300"=>"F300", "P50"=>"P50", "P25"=>"P25","P10"=>"P10","C50"=>"C50","C10"=>"C10", "presentation"=>"Présentation");
     
    //
    function AfficherErreur ($texteMsg)
    {global $do,$nomMembre, $newpass, $nomsociete, $rue, $ville, $cp, $canton, $presidentnom, $presidentprenom, $ruecourrier, $villecourrier, $cpcourrier, $telephone, $email, $adresseweb, $cantoncourrier, $F300, $P50, $P25, $P10, $C50, $C10, $presentation;
    unset($do);
    $message_new=$texteMsg;
    include("register.php");
    exit();
    } 
    //
     
    //--------------------------------------------------------------------
     
    switch (@$do)
    {case "login":
     
    $user="xxx";
    $host="localhost";
    $password="xxx";
    $database="xxx";
     
    $connection =mysql_connect($host, $user, $password) or die ("Connexion impossible au serveur");
    $db=mysql_select_db($database, $connection) or die ("La BD ne peut être selectionnée");
     
            $sql = "SELECT nomLogin FROM Membre WHERE nomLogin='$nomUtilisateur'";
            $result = mysql_query($sql) or die (mysql_error());
            $num = mysql_num_rows($result);
     
            if($num == 1)
            {
                    $sql = "SELECT nomLogin FROM Membre WHERE nomLogin='$nomUtilisateur' AND pass=password('$motDePasse')";
                    $result2 = mysql_query($sql) or die (mysql_error());
                    $num2 = mysql_num_rows($result2);
     
     
               if($num2 > 0)
            {
                    $auth="yes";
                    $aujourdhui = date("Y-m-d h:i:s");
                    $sql = "INSERT INTO Login2 (nomLogin, dateLogin) VALUES ('$nomUtilisateur','$aujourdhui')";
     
                    mysql_query($sql) or die (mysql_error());
                    $nomLogin = $nomUtilisateur;
                    header("Location: member_page.php");
     
            }else
            {
                    $message = "Le nom de login '$nomUtilisateur' existe déjà mais notre mot de passe n'est correct. Essayer encore une fois. <br \>";
                    unset ($do);
                    include("register.php");
            }
    		}elseif($num == 0)
            {
                    $message = "Le nom de login que vous avez saisi n'existe pas. Essayez une fois encore.<br />";
                    unset ($do);
                    include("register.php");
            }
     
    break;
     
    case "new":
     foreach ($HTTP_POST_VARS as $clé => $valeur)
     {switch ($clé)
       {case "nomsociete":
        case "nomMembre":
        case "newpass":
    	case "ville":
    	case "canton":
    	case "villecourrier":
    	case "cantoncourrier":
    	case "presidentnom":
    	case "presidentprenom":
    	case "F300":
    	case "P50":
    	case "P25":
    	case "P10":
    	case "C50":
    	case "C10":
    	case "presentation":	 
    	case "rue":	
    	case "ruecourrier":
    	      $$clé = strip_tags(trim($valeur));
    		  break;
     
    	case "cp":	
    	     if (!ereg("[0-9]{4}", $cp) or strlen($cp) !=4)
    		 {AfficherErreur ("Le code postal n'est pas correct (4 chiffres). Corrigez, svp.");
    		 }break;
     
    	case "cpcourrier":
    	     if (!ereg("[0-9]{4}", $cpcourrier) or strlen($cpcourrier) !=4)
    		 {AfficherErreur ("Le code postal n'est pas correct (4 chiffres). Corrigez, svp.");
    		 }break;
     
    	case "telephone":
    	     if ($valeur == "")break;
     
    	case "email":
    	     if (!ereg("^.+@.+\\..+$",$email))
    		 {AfficherErreur ("L'adresse e-mail n'est pas correcte. Corrigez, svp.");
    		 }
    	case "adresseweb":
    	     if ($valeur == "")break;
    	}
      }
     
    // le nom de login existe-t-il déjà ?
    $user="webmastermary";
    $host="localhost";
    $password="qwertz";
    $database="tircentralenet1";
     
    $connexion= mysql_connect ($host, $user, $password)
    or die ("Connexion au serveur impossible");
     
    $db = mysql_select_db ($database, $connexion)
    or die ("selection de la base impossible");
     
    $sql= "SELECT nomLogin FROM Membre WHERE nomLogin='$nomMembre'";
    $result = mysql_query ($sql) or die ("Impossible d'exécuter la requête");
    $num = mysql_num_rows($result);
    if ($num > 0)
    {AfficherErreur ("$nomMembre est déjà utilisé. Choisissez un autre nom d'utilisateur.");
    }
    else
    {$aujourdhui = date("Y-m-d");
     $sql = "INSERT INTO Membre (nomlogin, creation, mPasse, nomsociete, rue, ville, canton, cp, presidentnom, presidentprenom, ruecourrier, villecourrier, cpcourrier, cantoncourrier, telephone, email, adresseweb, F300, P50, P25, P10, C50, C10, presentation) VALUES
     ('$nomMembre', '$aujourdhui', password('$newpass'), '$nomsociete', '$rue', '$ville', '$canton', '$cp', '$presidentnom', '$presidentprenom', '$ruecourrier', '$villecourrier', '$cpcourrier', '$cantoncourrier', '$telephone', '$email', '$adresseweb', '$F300', '$P50', '$P25', '$P10', '$C50', '$C10', '$presentation')";
     
    if (! mysql_query($sql))
    {echo mysql_errno().":".mysql_error();
    exit;
    }
    $auth="yes";
    $nomUtilisateur = $nomMembre;
    //envoyer un email au nouveau membre
    $message = "un nouveau compte de membre vient d'être créé pour vous. ".
    "Votre nom d'utilisateur et votre mot de passe sont:".
    "\n\n\t$nomMembre\n\t$newpass\n\n".
    "Nous apprécions l'intérêt que nous portez à notre site. Si vous avez des questions à poser vous pouvez envoyer un e-mail à info@swiss-target.ch.";
    $entete="From:membres@swiss-target.ch\r\n";
    $sujet = "Votre nouveau compte à Swiss-Target.ch";
    $mailsend=mail("$email", "$sujet", "$message", "$entete");
    //
    $nomLogin = $nomMembre;
    header ("Location: NouveauMembre.php");
    }
    default:
          include("register.php");
    }
    ?>
    Par contre si l'enlève le cryptage password (input texte tout simplement) dans le formulaire register.php et que j'enlève le password de password('$motDePasse') et password('$newpass') dans la page login.php cela fonctionne correctement si ce n'est que les mots de passe des utilisateurs ne sont pas cryptés..

    Pourquoi cela ne fonctionne t-il pas avec le cryptage ? (en bref, avec le cryptage il ne lit pas la condition if($num2 > 0))


    Page login.php sans le cryptage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    <?php
    session_start();
    session_register('auth');
    session_register('nomLogin');
     
    $user="xxx";
    $host="localhost";
    $password="xxx";
    $database="xxx";
     
    $nomChamp=array ("nomMembre"=>"Utilisateur", "mpasse"=>"Mot de passe", "nomsociete"=>"Nom de la société", "rue"=>"Rue", "ville"=>"Ville", "cp"=>"Code postal", "canton"=>"Canton", "presidentnom"=>"Nom du président", "presidentprenom"=>"Prénom du président", "ruecourrier"=>"Rue (courrier)", "villecourrier"=>"Ville (courrier)", "cpcourrier"=>"Code postal (courrier)", "telephone"=>"Téléphone", "email"=>"E-mail", "adresseweb"=>"Adresse Internet", "cantoncourrier"=>"Canton (courrier)", "F300"=>"F300", "P50"=>"P50", "P25"=>"P25","P10"=>"P10","C50"=>"C50","C10"=>"C10", "presentation"=>"Présentation");
     
    //
    function AfficherErreur ($texteMsg)
    {global $do,$nomMembre, $newpass, $nomsociete, $rue, $ville, $cp, $canton, $presidentnom, $presidentprenom, $ruecourrier, $villecourrier, $cpcourrier, $telephone, $email, $adresseweb, $cantoncourrier, $F300, $P50, $P25, $P10, $C50, $C10, $presentation;
    unset($do);
    $message_new=$texteMsg;
    include("register.php");
    exit();
    } 
    //
     
    //--------------------------------------------------------------------
     
    switch (@$do)
    {case "login":
     
    $user="xxx";
    $host="localhost";
    $password="xxx";
    $database="xxx";
     
    $connection =mysql_connect($host, $user, $password) or die ("Connexion impossible au serveur");
    $db=mysql_select_db($database, $connection) or die ("La BD ne peut être selectionnée");
     
            $sql = "SELECT nomLogin FROM Membre WHERE nomLogin='$nomUtilisateur'";
            $result = mysql_query($sql) or die (mysql_error());
            $num = mysql_num_rows($result);
     
            if($num == 1)
            {
                    $sql = "SELECT nomLogin FROM Membre WHERE nomLogin='$nomUtilisateur' AND pass='$motDePasse'";
                    $result2 = mysql_query($sql) or die (mysql_error());
                    $num2 = mysql_num_rows($result2);
     
     
               if($num2 > 0)
            {
                    $auth="yes";
                    $aujourdhui = date("Y-m-d h:i:s");
                    $sql = "INSERT INTO Login2 (nomLogin, dateLogin) VALUES ('$nomUtilisateur','$aujourdhui')";
     
                    mysql_query($sql) or die (mysql_error());
                    $nomLogin = $nomUtilisateur;
                    header("Location: member_page.php");
     
            }else
            {
                    $message = "Le nom de login '$nomUtilisateur' existe déjà mais notre mot de passe n'est correct. Essayer encore une fois. <br \>";
                    unset ($do);
                    include("register.php");
            }
    		}elseif($num == 0)
            {
                    $message = "Le nom de login que vous avez saisi n'existe pas. Essayez une fois encore.<br />";
                    unset ($do);
                    include("register.php");
            }
     
    break;
     
    case "new":
     foreach ($HTTP_POST_VARS as $clé => $valeur)
     {switch ($clé)
       {case "nomsociete":
        case "nomMembre":
        case "newpass":
    	case "ville":
    	case "canton":
    	case "villecourrier":
    	case "cantoncourrier":
    	case "presidentnom":
    	case "presidentprenom":
    	case "F300":
    	case "P50":
    	case "P25":
    	case "P10":
    	case "C50":
    	case "C10":
    	case "presentation":	 
    	case "rue":	
    	case "ruecourrier":
    	      $$clé = strip_tags(trim($valeur));
    		  break;
     
    	case "cp":	
    	     if (!ereg("[0-9]{4}", $cp) or strlen($cp) !=4)
    		 {AfficherErreur ("Le code postal n'est pas correct (4 chiffres). Corrigez, svp.");
    		 }break;
     
    	case "cpcourrier":
    	     if (!ereg("[0-9]{4}", $cpcourrier) or strlen($cpcourrier) !=4)
    		 {AfficherErreur ("Le code postal n'est pas correct (4 chiffres). Corrigez, svp.");
    		 }break;
     
    	case "telephone":
    	     if ($valeur == "")break;
     
    	case "email":
    	     if (!ereg("^.+@.+\\..+$",$email))
    		 {AfficherErreur ("L'adresse e-mail n'est pas correcte. Corrigez, svp.");
    		 }
    	case "adresseweb":
    	     if ($valeur == "")break;
    	}
      }
     
    // le nom de login existe-t-il déjà ?
    $user="webmastermary";
    $host="localhost";
    $password="qwertz";
    $database="tircentralenet1";
     
    $connexion= mysql_connect ($host, $user, $password)
    or die ("Connexion au serveur impossible");
     
    $db = mysql_select_db ($database, $connexion)
    or die ("selection de la base impossible");
     
    $sql= "SELECT nomLogin FROM Membre WHERE nomLogin='$nomMembre'";
    $result = mysql_query ($sql) or die ("Impossible d'exécuter la requête");
    $num = mysql_num_rows($result);
    if ($num > 0)
    {AfficherErreur ("$nomMembre est déjà utilisé. Choisissez un autre nom d'utilisateur.");
    }
    else
    {$aujourdhui = date("Y-m-d");
     $sql = "INSERT INTO Membre (nomlogin, creation, mPasse, nomsociete, rue, ville, canton, cp, presidentnom, presidentprenom, ruecourrier, villecourrier, cpcourrier, cantoncourrier, telephone, email, adresseweb, F300, P50, P25, P10, C50, C10, presentation) VALUES
     ('$nomMembre', '$aujourdhui', '$newpass', '$nomsociete', '$rue', '$ville', '$canton', '$cp', '$presidentnom', '$presidentprenom', '$ruecourrier', '$villecourrier', '$cpcourrier', '$cantoncourrier', '$telephone', '$email', '$adresseweb', '$F300', '$P50', '$P25', '$P10', '$C50', '$C10', '$presentation')";
     
    if (! mysql_query($sql))
    {echo mysql_errno().":".mysql_error();
    exit;
    }
    $auth="yes";
    $nomUtilisateur = $nomMembre;
    //envoyer un email au nouveau membre
    $message = "un nouveau compte de membre vient d'être créé pour vous. ".
    "Votre nom d'utilisateur et votre mot de passe sont:".
    "\n\n\t$nomMembre\n\t$newpass\n\n".
    "Nous apprécions l'intérêt que nous portez à notre site. Si vous avez des questions à poser vous pouvez envoyer un e-mail à info@swiss-target.ch.";
    $entete="From:membres@swiss-target.ch\r\n";
    $sujet = "Votre nouveau compte à Swiss-Target.ch";
    $mailsend=mail("$email", "$sujet", "$message", "$entete");
    //
    $nomLogin = $nomMembre;
    header ("Location: NouveauMembre.php");
    }
    default:
          include("register.php");
    }
    ?>
    Merci d'avance !

    Mary

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je suppose que ca ne fonctionne pas parce que ton champ est mal dimensionné.
    Mais de toute facon la fonction password() sert aux mots de passe mysql.
    Pour ton application utilise plutot un hashage avec SHA1()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    merci !

    mal dimensionné comment ?
    le cryptage password fonctionne car dans la table mysql il était bien crypté.
    Je connais pas ta deuxième solution...

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    password() sert aux mots de passe des comptes Mysql.
    Utilise SHA1() exactement comme tu utilises password() actuellement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juillet 2010
    Messages : 88
    Par défaut
    ah ok ! j'ai remplacé.
    Le problème c'est que j'avais mis char(10) au password au lieu de mettre un VARCHAR(255).

    Maintenant j'ai une fonction mail pour que les utilisateurs puissent retrouver leur mot de passe. J'ai donc '.$ligne['pass'].' pour l'afficher. C'est cepandant ce qui est crypté qui s'affiche. Comment puis-je afficher le nom crypté ?

    merci !

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    VARCHAR(255) ne servait à rien non plus puisque un champ password() fait 16 caracteres.

    SHA1 est un hashage, il n'est pas reversible.

    N'hésite pas a consulter la documentation, tout ce que je te dis depuis le début y est :
    http://dev.mysql.com/doc/refman/5.0/...functions.html
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. login et password pour acceder a workstation avec wsx
    Par princessedior dans le forum Virtualisation
    Réponses: 1
    Dernier message: 10/04/2015, 13h29
  2. [AC-2003] Login et Password pour accéder à un formulaire
    Par ROUSSIGNE dans le forum Access
    Réponses: 6
    Dernier message: 26/02/2014, 17h58
  3. Réponses: 5
    Dernier message: 16/03/2011, 22h41
  4. login et password pour afficher rapport
    Par benjeddi dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 16/06/2008, 20h38
  5. Réponses: 8
    Dernier message: 20/07/2006, 01h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo