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

PHP & Base de données Discussion :

Vérification de conditions pour la creation d'un utilisateur en php/sql


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Webdesigner
    Inscrit en
    Janvier 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webdesigner

    Informations forums :
    Inscription : Janvier 2019
    Messages : 6
    Par défaut Vérification de conditions pour la creation d'un utilisateur en php/sql
    Bonjour, j'ai créer un formulaire afin de pouvoir enregistrer un utilisateur dans la base données en mettant en place
    des vérifications (si l’émail n'est pas déjà présent dans la base de donnée et si les deux mots de passe sont identiques) avant l'insertion de l'utilisateur dans la base de données. mais lorsque je créer un utilisateur aucune condition n'est vérifier
    et l'utilisateur est insérer dans la base de données avec le message 'votre compte a été créer avec success'.... je ne vois pas ce qui empêche les conditions...

    VOICI L’AFFICHAGE, la BASE DE DONNÉES SQL et le code html/php ci-dessous:

    Nom : Screenshot_2019-01-20 Screenshot.png
Affichages : 361
Taille : 15,3 Ko

    Nom : Screenshot_2019-01-19 localhost MySQL formation_members users phpMyAdmin 4 8 3.png
Affichages : 403
Taille : 102,6 Ko

    Code php : 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
     
    <?php
     
    require('src/connection.php');
     
    if (isset($_POST['pseudo']) && isset($_POST['email']) && isset($_POST['password']) && isset($_POST['password2'])) {
     
    	$pseudo 	= $_POST['pseudo'];
    	$email 		= $_POST['email'];
    	$password 	= $_POST['password'];
    	$password2 	= $_POST['password2'];
     
     
    // TEST MOT DE PASSE IDENTIQUE INCRIPTION
     
    if ($password != $password2) { 
     
    		header('location: ../?error=1&pass=1'); // redirige l'utilisateur avec un message derreur dans l'url
    }
     
    // TEST POUR SAVOIR SI LE MAIL EST DEJA PRESENT DANS LA BASE DE DONNEE
     
     
    $req = $db->prepare('SELECT count (*) as numberEmail FROM users WHERE email = ?');// LA VALEUR COUNT (*) COMPTE LE NOMBRE DE LIGNE
    $req->execute(array($email)); // on execute l'email inserer
     
    while ($email_verification = $req->fetch()){
    	if ($email_verification['numberEmail'] !=0) {
     
    		header ('location: ../?error=1&email=1');
    	}
    }
    //HASS SECURITE
    $password2 = sha1($email).time();
    $password2 = sha1($password2).time().time();
     
    //CRYPTAGE MOT DE PASSE 
     
    $password = "aq1".sha1($password."12857")."34";
     
    	// ENVOI DE LA REQUETE 
    $req = $db->prepare('INSERT INTO users(pseudo,email,password,password2) VALUES(?,?,?,?)');
    $req->execute(array($pseudo,$email,$password,$password2));
     
     
    header('location: ../?success=1');
     
    }
    ?>
    <!doctype html>
    <html>
     
    <head>
    <meta charset="utf-8"/>
    <link rel="stylesheet" type="text/css" href="style.css"/>
    </head>
     
    <body>
     
     
    		<h1>Inscription</h1>
    			<p>Bienvenue sur mon site pour en voir plus inscrivez-vous. Sinon <a href="connection.php">Connectez-vous</a></p>
    			<?php
    				if(isset($_GET['error'])) { // SI IL EXISTE UNE ERREURE
    						if(isset($_GET['pass'])){ // SI CETTE ERREURE EST LIEE AU MOT DE PASSE 
    						echo '<p id="error">La confirmation du mot de passe ne correspond pas au mot de passe taper</p></br>';
    							}
    							else if (isset($_GET['email'])){ // S'IL EXISTE UNE ERREURE SUR LE MAIL
    								echo '<p id="error"> Cet email est deja utiliser </p>';
    								}
    								}
    				Else if (isset($_GET['success'])){
    						echo '<p id="success">Votre compte a ete creer avec succees</p>';
    				}
     
     
    			?>
     
    				<legend> Coordonnées d'inscription </legend><br>
     
    				<form method="POST" action="index.php">
    				<fieldset>
    					<table>
    						<tr>
    							<td><label>Pseudo :</label></td>
    							<td><input type="text" name="pseudo" placeholder="Ex: Herve" required /></td>
    						</tr>
    						<tr>
    							<td><label>Email :</label></td>
    							<td><input type="email" name="email" placeholder="Ex: Herve.dupont@gmail.com" required /></td>
    						</tr>
    							<tr>
    							<td><label>Mot de passe :</label></td>
    							<td><input type="password" name="password" placeholder="Ex: *******" required /></td>
    						</tr>
    						<tr>
    							<td><label>Confirmer le mot de passe :</label></td>
    							<td><input type="password" name="password2" placeholder="Ex: *******" required /></td>
    						</tr>
    					</table><br>
    							<button type="submit">Inscription</button>
    				</fieldset>	
    				</form>
     
     
    </body>
     
    <footer>
    </footer>
     
    </html>

  2. #2
    Membre Expert
    Avatar de badaze
    Homme Profil pro
    Chef de projets info
    Inscrit en
    Septembre 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets info
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 412
    Par défaut
    Tu devrais éditer ton message et enlever =php dans [ /CODE=php]. Comme ça ton code sera plus lisible.

    A quoi sert de sauvegarder le second mot de passe ? On le saisit pour contrôler la saisie du premier. Cela ne sert à rien donc de le sauvegarder surtout qu'ils sont différents dans la base de donnée !
    Pour crypter tes mots de passes tu utilises la fonction time qui change tout le temps. Je ne suis pas spécialiste (donc je peux me tromper) mais lors d'une saisie du mot de passe plus tard dans le temps tu ne retrouveras jamais les conditions de time qui te permettront de contrôler le mot de passe. Pour qu'on puisse faire une comparaison il faut que les valeurs soient invariantes. Dans ton cas c'est comme si 2 valait 2 maintenant et une autre valeur plus tard.

    Ne le prends pas mal mais tu fais pas mal de fautes de grammaires et d'orthographe. Des er à la place de é par exemple.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Je plussoie badaze sur le fait qu'on ne mémorise pas le 2e mot de passe, il sert juste à vérifier que l'utilisateur n'a pas fait de faute de frappe en créant son mot de passe.

    Je pense que ce que dms-mrk essaye de faire, c'est saler son mot de passe.

    Pour ça, il faut une chaine de salage (de préférence aléatoire), le mot de passe à encoder et une fonction de hachage (de préférence en évitant md5 et sha1, qui sont à peu près aussi sûres qu'une passoire)

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $salt = bin2hex(random_bytes(64));
    $hash = hash('sha256', $salt.$password);
     
    $req = $db->prepare('INSERT INTO users(pseudo,email,password,salt) VALUES(?,?,?,?)');
    $req->execute(array($pseudo,$email,$hash,$salt));
    Et pour tester le mot de passe lors du login, il faut aller chercher le hash et le salt en base à partir du login et appliquer la même opération dessus avant la comparaison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $hashAVerifier = hash('sha256', $saltBase.$passwordRecu);
     
    if ($hashAVerifier == $hashBase) {
        // youpi ! le mot de passe est correct
    }
    A noter que personnellement, je ne suis pas une experte sécurité : je n'ai donc aucune idée de quel hachage utiliser, ni comment faire un salt aléatoire correct, du coup je vais plutôt utiliser un outil tout fait comme les fonctions de mot de passe.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

Discussions similaires

  1. [SP-2010] Workflow Condition pour vérification
    Par Kevin0363 dans le forum SharePoint
    Réponses: 4
    Dernier message: 22/04/2011, 15h39
  2. OpenSSL/OpenLDAP Problème pour la création de certificat
    Par shaun_the_sheep dans le forum Réseau
    Réponses: 4
    Dernier message: 07/10/2005, 13h36
  3. Condition pour l'affichage d'une boite de message
    Par Virgile59 dans le forum Access
    Réponses: 19
    Dernier message: 05/10/2005, 14h22
  4. Probleme pour la creation de fichier ini
    Par ewertheimer dans le forum Langage
    Réponses: 3
    Dernier message: 02/09/2005, 20h04
  5. Pb pour la creation d'une bd
    Par Lebowsky dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 22/08/2004, 14h13

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