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 :

connexion et enregistrer souci d'enregistrement bdd


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    chomeur
    Inscrit en
    Juillet 2014
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 128
    Points : 0
    Points
    0
    Par défaut connexion et enregistrer souci d'enregistrement bdd
    bonjour j'ai fais 2 page

    donc voilà la page connexion

    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
     
     
    <?php
    session_start();
    $titre="Connexion";
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
    echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Connexion';
     
     
    echo '<h1>Connexion</h1>';
    //if ($id!=0) erreur(ERR_IS_CO);
     
    if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
    {
    	echo '<form method="post" action="connexion.php">
    	<fieldset>
    	<legend>Connexion</legend>
    	<p>
    	<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
    	<label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
    	</p>
    	</fieldset>
    	<p><input type="submit" value="Connexion" /></p></form>
    	<a href="./register.php">Pas encore inscrit ?</a>
    	 
    	</div>
    	</body>
    	</html>';
    }
     
    //On reprend la suite du code
    else
    {
        $message='';
        if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ
        {
            $message = '<p>une erreur s\'est produite pendant votre identification.
    	Vous devez remplir tous les champs</p>
    	<p>Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
        }
        else //On check le mot de passe
        {
            $query=$db->prepare('SELECT membre_mdp, membre_id, membre_rang, membre_pseudo
            FROM forum_membres WHERE membre_pseudo = :pseudo');
            $query->bindValue(':pseudo',$_POST['pseudo'], PDO::PARAM_STR);
            $query->execute();
            $data=$query->fetch();
    	if ($data['membre_mdp'] == md5($_POST['password'])) // Acces OK !
    	{
    	    $_SESSION['pseudo'] = $data['membre_pseudo'];
    	    $_SESSION['level'] = $data['membre_rang'];
    	    $_SESSION['id'] = $data['membre_id'];
    	    $message = '<p>Bienvenue '.$data['membre_pseudo'].', 
    			vous êtes maintenant connecté!</p>
    			<p>Cliquez <a href="./index.php">ici</a> 
    			pour revenir à la page d accueil</p>';  
    	}
    	else // Acces pas OK !
    	{
    	    $message = '<p>Une erreur s\'est produite 
    	    pendant votre identification.<br /> Le mot de passe ou le pseudo 
                entré n\'est pas correcte.</p><p>Cliquez <a href="./connexion.php">ici</a> 
    	    pour revenir à la page précédente
    	    <br /><br />Cliquez <a href="./index.php">ici</a> 
    	    pour revenir à la page d accueil</p>';
    	}
        $query->CloseCursor();
        }
        echo $message.'</div></body></html>';
     
    }
    ?>

    j'ai commenter ligne 11 sinon, j'ai cette phrase

    Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté.

    car j'ai mis dans la page

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    <?php
    define('VISITEUR',1);
    define('INSCRIT',2);
    define('MODO',3);
    define('ADMIN',4);
    define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
    ?>


    et ma pas enregistrer

    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
    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
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
     
     
     
    <?php
    session_start();
    $titre="Enregistrement";
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
    echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Enregistrement';
     
    ///if ($id!=0) erreur(ERR_IS_CO);
     
    if (empty($_POST['pseudo'])) // Si on la variable est vide, on peut considérer qu'on est sur la page de formulaire
    {
    	echo '<h1>Inscription 1/2</h1>';
    	echo '<form method="post" action="register.php" enctype="multipart/form-data">
    	<fieldset><legend>Identifiants</legend>
    	<label for="pseudo">* Pseudo :</label>  <input name="pseudo" type="text" id="pseudo" /> (le pseudo doit contenir entre 3 et 15 caractères)<br />
    	<label for="password">* Mot de Passe :</label><input type="password" name="password" id="password" /><br />
    	<label for="confirm">* Confirmer le mot de passe :</label><input type="password" name="confirm" id="confirm" />
    	</fieldset>
    	<fieldset><legend>Contacts</legend>
    	<label for="email">* Votre adresse Mail :</label><input type="text" name="email" id="email" /><br />
    	<label for="msn">Votre adresse MSN :</label><input type="text" name="msn" id="msn" /><br />
    	<label for="website">Votre site web :</label><input type="text" name="website" id="website" />
    	</fieldset>
    	<fieldset><legend>Informations supplémentaires</legend>
    	<label for="localisation">Localisation :</label><input type="text" name="localisation" id="localisation" />
    	</fieldset>
    	<fieldset><legend>Profil sur le forum</legend>
    	<label for="avatar">Choisissez votre avatar :</label><input type="file" name="avatar" id="avatar" />(Taille max : 10Ko<br />
    	<label for="signature">Signature :</label><textarea cols="40" rows="4" name="signature" id="signature">La signature est limitée à 200 caractères</textarea>
    	</fieldset>
    	<p>Les champs précédés d un * sont obligatoires</p>
    	<p><input type="submit" value="S\'inscrire" /></p></form>
    	</div>
    	</body>
    	</html>';
     
     
    } //Fin de la partie formulaire
     
    else //On est dans le cas traitement
    {
        $pseudo_erreur1 = NULL;
        $pseudo_erreur2 = NULL;
        $mdp_erreur = NULL;
        $email_erreur1 = NULL;
        $email_erreur2 = NULL;
        $msn_erreur = NULL;
        $signature_erreur = NULL;
        $avatar_erreur = NULL;
        $avatar_erreur1 = NULL;
        $avatar_erreur2 = NULL;
        $avatar_erreur3 = NULL;
     
     
      //On récupère les variables
        $i = 0;
        $temps = time(); 
        $pseudo=$_POST['pseudo'];
        $signature = $_POST['signature'];
        $email = $_POST['email'];
        $msn = $_POST['msn'];
        $website = $_POST['website'];
        $localisation = $_POST['localisation'];
        $pass = md5($_POST['password']);
        $confirm = md5($_POST['confirm']);
     
        //Vérification du pseudo
        $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
        $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
        $query->execute();
        $pseudo_free=($query->fetchColumn()==0)?1:0;
        $query->CloseCursor();
        if(!$pseudo_free)
        {
            $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
            $i++;
        }
     
        if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
        {
            $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
            $i++;
        }
     
        //Vérification du mdp
        if ($pass != $confirm || empty($confirm) || empty($pass))
        {
            $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
            $i++;
        }	
     
     
    $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
    $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
    $query->execute();
    $pseudo_free=($query->fetchColumn()==0)?1:0;	
     
     
     
        //Vérification de l'adresse email
     
        //Il faut que l'adresse email n'ait jamais été utilisée
        $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_email =:mail');
        $query->bindValue(':mail',$email, PDO::PARAM_STR);
        $query->execute();
        $mail_free=($query->fetchColumn()==0)?1:0;
        $query->CloseCursor();
     
        if(!$mail_free)
        {
            $email_erreur1 = "Votre adresse email est déjà utilisée par un membre";
            $i++;
        }
        //On vérifie la forme maintenant
        if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $email) || empty($email))
        {
            $email_erreur2 = "Votre adresse E-Mail n'a pas un format valide";
            $i++;
        }
        //Vérification de l'adresse MSN
        if (!preg_match("#^[a-zA-Z0-9._-]+@[a-zA-Z0-9._-]{2,}\.[a-z]{2,4}$#", $msn) && !empty($msn))
        {
            $msn_erreur = "Votre adresse MSN n'a pas un format valide";
            $i++;
        }
        //Vérification de la signature
        if (strlen($signature) > 200)
        {
            $signature_erreur = "Votre signature est trop longue";
            $i++;
        }
     
     
     
        //Vérification de l'avatar :
        if (!empty($_FILES['avatar']['size']))
        {
            //On définit les variables :
            $maxsize = 10024; //Poid de l'image
            $maxwidth = 100; //Largeur de l'image
            $maxheight = 100; //Longueur de l'image
            $extensions_valides = array( 'jpg' , 'jpeg' , 'gif' , 'png', 'bmp' ); //Liste des extensions valides
     
            if ($_FILES['avatar']['error'] > 0)
            {
                    $avatar_erreur = "Erreur lors du transfert de l'avatar : ";
            }
            if ($_FILES['avatar']['size'] > $maxsize)
            {
                    $i++;
                    $avatar_erreur1 = "Le fichier est trop gros : (<strong>".$_FILES['avatar']['size']." Octets</strong>    contre <strong>".$maxsize." Octets</strong>)";
            }
     
            $image_sizes = getimagesize($_FILES['avatar']['tmp_name']);
            if ($image_sizes[0] > $maxwidth OR $image_sizes[1] > $maxheight)
            {
                    $i++;
                    $avatar_erreur2 = "Image trop large ou trop longue : 
                    (<strong>".$image_sizes[0]."x".$image_sizes[1]."</strong> contre <strong>".$maxwidth."x".$maxheight."</strong>)";
            }
     
            $extension_upload = strtolower(substr(  strrchr($_FILES['avatar']['name'], '.')  ,1));
            if (!in_array($extension_upload,$extensions_valides) )
            {
                    $i++;
                    $avatar_erreur3 = "Extension de l'avatar incorrecte";
            }
        }
     
     
     
     
     
       if ($i==0)
       {
    	echo'<h1>Inscription terminée</h1>';
            echo'<p>Bienvenue '.stripslashes(htmlspecialchars($_POST['pseudo'])).' vous êtes maintenant inscrit sur le forum</p>
    	<p>Cliquez <a href="./index.php">ici</a> pour revenir à la page d accueil</p>';
     
            //La ligne suivante sera commentée plus bas
    	$nomavatar=(!empty($_FILES['avatar']['size']))?move_avatar($_FILES['avatar']):''; 
     
            $query=$db->prepare('INSERT INTO forum_membres (membre_pseudo, membre_mdp, membre_email,             
            membre_msn, membre_siteweb, membre_avatar,
            membre_signature, membre_localisation, membre_inscrit, 
            membre_derniere_visite)
            VALUES (:pseudo, :pass, :email, :msn, :website, :nomavatar, :signature, :localisation, :temps, :temps)');
    	$query->bindValue(':pseudo', $pseudo, PDO::PARAM_STR);
    	$query->bindValue(':pass', $pass, PDO::PARAM_INT);
    	$query->bindValue(':email', $email, PDO::PARAM_STR);
    	$query->bindValue(':msn', $msn, PDO::PARAM_STR);
    	$query->bindValue(':website', $website, PDO::PARAM_STR);
    	$query->bindValue(':nomavatar', $nomavatar, PDO::PARAM_STR);
    	$query->bindValue(':signature', $signature, PDO::PARAM_STR);
    	$query->bindValue(':localisation', $localisation, PDO::PARAM_STR);
    	$query->bindValue(':temps', $temps, PDO::PARAM_INT);
            $query->execute();
     
    	//Et on définit les variables de sessions
            $_SESSION['pseudo'] = $pseudo;
            $_SESSION['id'] = $db->lastInsertId(); ;
            $_SESSION['level'] = 2;
            $query->CloseCursor();
        }
        else
        {
            echo'<h1>Inscription interrompue</h1>';
            echo'<p>Une ou plusieurs erreurs se sont produites pendant l incription</p>';
            echo'<p>'.$i.' erreur(s)</p>';
            echo'<p>'.$pseudo_erreur1.'</p>';
            echo'<p>'.$pseudo_erreur2.'</p>';
            echo'<p>'.$mdp_erreur.'</p>';
            echo'<p>'.$email_erreur1.'</p>';
            echo'<p>'.$email_erreur2.'</p>';
            echo'<p>'.$msn_erreur.'</p>';
            echo'<p>'.$signature_erreur.'</p>';
            echo'<p>'.$avatar_erreur.'</p>';
            echo'<p>'.$avatar_erreur1.'</p>';
            echo'<p>'.$avatar_erreur2.'</p>';
            echo'<p>'.$avatar_erreur3.'</p>';
     
            echo'<p>Cliquez <a href="./register.php">ici</a> pour recommencer</p>';
        }
    }
    ?>
    </div>
    </body>
    </html>


    j'ai la même erreur j'ai du commenter ligne 9 sinon j'ai toujours cette phrase

    Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté



    et j'ai voulu essayer de m'enregistrer afin de voir voir si ca fonctionnait.

    il me dit bien cette phrase


    Bienvenue pseudo vous êtes maintenant inscrit sur le forum

    Cliquez ici pour revenir à la page d accueil
    mais le souci, il ne s'affiche pas le pseudo dans ma base sql

    car j'ai cette erreur parmis dautres lol


    Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'membre_post' doesn't have a default value in /var/www/legtux.org/users/site/www/V1/forum-tester/register.php:198 Stack trace: #0 /var/www/legtux.org/users/site/www/V1/forum-tester/register.php(198): PDOStatement->execute() #1 {main} thrown in /var/www/legtux.org/users/site/www/V1/forum-tester/register.php on line 198
    j'ai tenter de rajouter membre_post mais ca n'a rien fait toujours erreur et impossible d'afficher le pseudo sur la base donnée

    merci de votre aide et de votre soutient

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    J'ai jeté un oeil au traitement de l'inscription.
    Plusieurs remarques :
    • tu devrais le faire en 2 temps. D'abord un INSERT avec les données obligatoires, ensuite un UPDATE avec les données facultatives (moins importantes : avatar,...)
    • pour le mot de passe, remplace md5() par password_hash() / puis pour vérifier password_verify()
    • $pseudo_erreur1, $pseudo_erreur2, $mdp_erreur, $email_erreur1,.... Au lieu d'avoir plusieurs variable, une seule suffit (un array) : $error['pseudo'], $error['mdp'], $error['email'],...
    • $i est généralement utilisé pour de l'incrémentation( for($i=...; $i++) ). Utilise plutôt $error (l'array ci-dessus : if(empty($error)){ OK } ).


    Quant au message d'erreur,... il suffit de le lire, et de le comprendre.
    • Field 'membre_post' doesn't have a default value
    • register.php
    • line 198

    Puisqu'on ne trouve pas de 'membre_post' dans tes codes, regarde dans la structure de ta table SQL.
    Dernière modification par Invité ; 22/04/2019 à 17h21.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    chomeur
    Inscrit en
    Juillet 2014
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 128
    Points : 0
    Points
    0
    Par défaut
    merci

    il y a surement un truc qui cloche

    merci de ton aide

  4. #4
    Invité
    Invité(e)
    Par défaut
    OK.

    1- Est-ce qu'au moins, tu COMPRENDS le code ?

    ET QUEL est TON objectif ?
    Créer un forum ??

    2- J'ai parcouru rapidement le tuto.
    Il y aurait encore beaucoup à dire *... Mais bon.

    *
    • vérification de l'email
    • "adresse MSN" ??
    • extension de l'avatar
    • ...

    Houlà... j'ai regardé un peu les autres pages du tuto :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
    ...
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    Le doctype date de Mathusalem, et tout est en iso-8859-1 (idem pour la base de données).

  5. #5
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($id!=0) erreur(ERR_IS_CO);
    Il faudrait regarder dans les fichiers inclus avant, pour savoir où et comment est défini $id.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
    Donc, ici :
    Ici on veut s'assurer que le visiteur qui arrive sur cette page n'est pas déjà connecté, c'est pour ça qu'on vérifie la valeur de la variable $id (je rappelle qu'elle contient 0 si le visiteur n'est pas connecté, l'id du membre sinon).
    Or, je n'ai vu de $id nulle part !


    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ( empty($id) ) erreur(ERR_IS_CO);
    Dernière modification par Invité ; 22/04/2019 à 13h13.

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    chomeur
    Inscrit en
    Juillet 2014
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 128
    Points : 0
    Points
    0
    Par défaut
    mon objectif pour l'instant c'est juste m'enregistrer et se connecter. tout simplement pas de plus ni d’amélioration, je verais après plus tard

    on va se concentrer juste sur 2 page connexion et inscription pour qu'il puisse enregistrer à ma bse donnée

    je t'explique point par point ceux qu'il ne va pas (enfin ceux que j'ai pu voir come ereur

    le premier points :

    j'ai mis ce code comme indiqué sur l e tuto

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($id!=0) erreur(ERR_IS_CO);

    et ce code qui est sur la page constante

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?php
    define('VISITEUR',1);
    define('INSCRIT',2);
    define('MODO',3);
    define('ADMIN',4);
    define('ERR_IS_CO','Vous ne pouvez pas accéder à cette page si vous n\'êtes pas connecté');
    ?>

    il me dit dans la page

    Vous ne pouvez pas accéder à cette page si vous n'êtes pas connecté

    ensuite j'ai juste mis des /// sur cete ligne le if (juste pour voir l'erreur qu'il m'indique

    on passe aux 2 ème points arès que j'ai commenté le if afin quil disparait cette ligne

    là je met mon pseudo, , mot de pass et l'email

    il me dit bien

    Bienvenue tester vous êtes maintenant inscrit sur le forum

    Cliquez ici pour revenir à la page d accueil
    ensuite je regarde dans la base donné , mais il ne s'affiche pas

    mas sur la page il me met cette erreur

    Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1364 Field 'membre_post' doesn't have a default value in /var/www/legtux.org/users/site/www/V1/forum-tester/register.php:190 Stack trace: #0 /var/www/legtux.org/users/site/www/V1/forum-tester/register.php(190): PDOStatement->execute() #1 {main} thrown in /var/www/legtux.org/users/site/www/V1/forum-tester/register.php on line 190
    l'ereur que je comprends il dit que membre_post hors j'ai bien cette membre_post dans ma base sql

    et après on verras les erreurs après avoir résolu ces 2 points là

    merci

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    chomeur
    Inscrit en
    Juillet 2014
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 128
    Points : 0
    Points
    0
    Par défaut
    pour la page enregistrer un membre ca marche , car j'ai supprimer des lignes et j'ai laissé juste pseudo mdp et email.

    là il m'inserre bien mon mail et pseudo dans la base donnée

    et je verrais pour ajouter des lignes en plus au fure à mesure, je verrais ca après.


    maintenant, j'ai voulu me connecter afin de voir si ca fonctionne

    voilà ma page connection

    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
    <?php
    session_start();
    $titre="Connexion";
    include("includes/identifiants.php");
    include("includes/debut.php");
    include("includes/menu.php");
    echo '<p><i>Vous êtes ici</i> : <a href="./index.php">Index du forum</a> --> Connexion';
     
     
     
    echo '<h1>Connexion</h1>';
    if ( empty($id) ) erreur(ERR_IS_CO);
     
     
    if (!isset($_POST['pseudo'])) //On est dans la page de formulaire
    {
    	echo '<form method="post" action="connexion.php">
    	<fieldset>
    	<legend>Connexion</legend>
    	<p>
    	<label for="pseudo">Pseudo :</label><input name="pseudo" type="text" id="pseudo" /><br />
    	<label for="password">Mot de Passe :</label><input type="password" name="password" id="password" />
    	</p>
    	</fieldset>
    	<p><input type="submit" value="Connexion" /></p></form>
    	<a href="./register.php">Pas encore inscrit ?</a>
    	 
    	</div>
    	</body>
    	</html>';
    }
     
     
    //On reprend la suite du code
    else
    {
        $message='';
        if (empty($_POST['pseudo']) || empty($_POST['password']) ) //Oublie d'un champ
        {
            $message = '<p>une erreur s\'est produite pendant votre identification.
    	Vous devez remplir tous les champs</p>
    	<p>Cliquez <a href="./connexion.php">ici</a> pour revenir</p>';
        }
        else //On check le mot de passe
        {
            $query=$db->prepare('SELECT membre_mdp, membre_id, membre_rang, membre_pseudo
            FROM forum_membres WHERE membre_pseudo = :pseudo');
            $query->bindValue(':pseudo',$_POST['pseudo'], PDO::PARAM_STR);
            $query->execute();
            $data=$query->fetch();
    	if ($data['membre_mdp'] == md5($_POST['password'])) // Acces OK !
    	{
    	    $_SESSION['pseudo'] = $data['membre_pseudo'];
    	    $_SESSION['level'] = $data['membre_rang'];
    	    $_SESSION['id'] = $data['membre_id'];
    	    $message = '<p>Bienvenue '.$data['membre_pseudo'].', 
    			vous êtes maintenant connecté!</p>
    			<p>Cliquez <a href="./index.php">ici</a> 
    			pour revenir à la page d accueil</p>';  
    	}
    	else // Acces pas OK !
    	{
    	    $message = '<p>Une erreur s\'est produite 
    	    pendant votre identification.<br /> Le mot de passe ou le pseudo 
                entré n\'est pas correcte.</p><p>Cliquez <a href="./connexion.php">ici</a> 
    	    pour revenir à la page précédente
    	    <br /><br />Cliquez <a href="./index.php">ici</a> 
    	    pour revenir à la page d accueil</p>';
    	}
        $query->CloseCursor();
        }
        echo $message.'</div></body></html>';
     
    }
    ?>

    il me dit cette erreur

    Une erreur s'est produite pendant votre identification.
    Le mot de passe ou le pseudo entré n'est pas correcte.

    Cliquez ici pour revenir à la page précédente

    Cliquez ici pour revenir à la page d accueil
    pour temps j'ai bien mis le même mdp et pseudo

    merci de ton aide

  8. #8
    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 : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Au secours ! un mot de passe en MD5 Mots de passe sécurisés avec PHP 5.5
    Bon, on va vérifier les éléments de base : est-ce que le mot de passe en base est bien haché (tu as une chaine du genre "5473e3f141e0328ce87dac9366e0aace") ?
    Ajoute des debug dans le code, pour savoir quelle condition ton script passe.

    Au passage, ton script ne gère pas le cas où le pseudo est incorrect. Il faudrait ajouter une condition sur $data lors de la récupération. Du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($data !== false && $data['membre_mdp'] == md5($_POST['password']))
    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]

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    chomeur
    Inscrit en
    Juillet 2014
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 128
    Points : 0
    Points
    0
    Par défaut
    en faite c'est dans le tuto

    j'ai mis ca pour le pseudfo et mdp sur la page enregistrement

    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
        //Vérification du pseudo
        $query=$db->prepare('SELECT COUNT(*) AS nbr FROM forum_membres WHERE membre_pseudo =:pseudo');
        $query->bindValue(':pseudo',$pseudo, PDO::PARAM_STR);
        $query->execute();
        $pseudo_free=($query->fetchColumn()==0)?1:0;
        $query->CloseCursor();
        if(!$pseudo_free)
        {
            $pseudo_erreur1 = "Votre pseudo est déjà utilisé par un membre";
            $i++;
        }
     
        if (strlen($pseudo) < 3 || strlen($pseudo) > 15)
        {
            $pseudo_erreur2 = "Votre pseudo est soit trop grand, soit trop petit";
            $i++;
        }
     
        //Vérification du mdp
        if ($pass != $confirm || empty($confirm) || empty($pass))
        {
            $mdp_erreur = "Votre mot de passe et votre confirmation diffèrent, ou sont vides";
            $i++;
        }

    et quand je voit dans la base donner il me met 8 (et pas 5473e3f141e0328ce87dac9366e0aace)

    j'ai juste repris le code sur le tuto

    merci

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    voici des corrections à faire.

    1- dans le fichier register.php (inscription) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        $pass = md5($_POST['password']);
        $confirm = md5($_POST['confirm']);
    (lignes 12-13) à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        $pass = $_POST['password']; // en clair
        $confirm = $_POST['confirm']; // en clair

    2- dans le fichier register.php, à l'insertion en BDD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$query->bindValue(':pass', $pass, PDO::PARAM_INT);
    (ligne 17) à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	$query->bindValue(':pass', password_hash($pass, PASSWORD_BCRYPT), PDO::PARAM_STR);


    3- dans le fichier connexion.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	if ($data['membre_mdp'] == md5($_POST['password'])) // Acces OK !
    (ligne 19) à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	if ( password_verify($_POST['password'], $data['membre_mdp']) ) // Acces OK !


    4- DANS la base de données, table `forum_membres` :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      `membre_mdp` varchar(32) ...
    (ligne 42) à remplacer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      `membre_mdp` varchar(60) ...
    En effet :
    password_hash()
    PASSWORD_BCRYPT - Utilisation de l'algorithme CRYPT_BLOWFISH pour créer la clé de hachage.
    Ceci va créer une clé de hachage standard crypt() utilisant l'identifiant "$2y$".
    Le résultat sera toujours une chaîne de 60 caractères, ou FALSE si une erreur survient.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    chomeur
    Inscrit en
    Juillet 2014
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 128
    Points : 0
    Points
    0
    Par défaut
    merci, là je vais revoir le code et je vais commenté à chaque ligne afin que je puise mieux comprendre.

    Peut-être que je vais revenir pour te poser des questions.

    car j'ai tester demettre un nouveau topic il me dit veuillez se connecter hors je me suis bien connecter

    je vais essayer de le faire le maximum que je peux

    a moins qu'il me dit que je suis bien connecter mais en faite je ne suis pas connecter

    il faut que je voit ceux que je peux faire sinon je reviendrais te poser la question

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

Discussions similaires

  1. [MySQL] dernier enregistrement bdd
    Par franfr57 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 30/04/2007, 20h39
  2. [MySQL] Affectation de date à enregistrement BDD
    Par geyser dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 22/01/2007, 15h21
  3. Connection à un enregistrement (BDD)
    Par elabbassi dans le forum Access
    Réponses: 8
    Dernier message: 22/12/2006, 19h38
  4. créer bouton pour enregistrer BDD sur une page
    Par guimauve dans le forum Access
    Réponses: 3
    Dernier message: 11/07/2006, 11h01
  5. [VB6] Supprimer un enregistrement bdd access
    Par floran30 dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 19/06/2006, 15h24

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