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 :

probleme de session_start [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Par défaut probleme de session_start
    Bonsoir ,
    Je suis en train de coder un formulaire d'inscription sur mon index.php qui renvoi sur membre.php , mais le probleme est que je n'arrive pas a garder la session ouverte , quand j'arrive sur membre .php les données normalement envoyées ne sont pas la , je vous met mes 2 codes :

    En vous remerciant :

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
    
    <body>
    <?php
    /* il faut demarrer la session*/
    session_start();
    
    if (empty($_SESSION['id'])) //les membres connecte ne peuvent pas s'inscrire
    {
    /* il faut que toutes les variables du formulaires existent*/
    if(isset($_POST['pseudo']) && isset($_POST['mdp']) && isset($_POST['email']))
    {
    /*il faut que tous les champs soient renseignes*/
    if($_POST['pseudo']!="" && $_POST['mdp']!="" && $_POST['email']!="")
    {
    /*connexion a la BDD*/
    try
    {
    $bdd = new PDO('mysql:host=localhost;dbname=formulaire', 'root', '');
    }
    catch (Exception $e)
    {
    die('Erreur : ' . $e->getMessage());
    }
    
    /* on teste l'adresse email, si c'est bon, on continue, sinon, on affiche un message d'erreur*/
    if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}.[a-z]{2,4}$#", $_POST['email']))
    {
    /*on verifie si un membre ne possede pas deja le meme pseudo*/
    $req = $bdd->prepare('SELECT id FROM membre WHERE pseudo = :pseudo');
    $req->execute(array('pseudo'=> $_POST['pseudo']));
    $nb_resultats_recherche_membre=$req->fetch();
    
    if(!$nb_resultats_recherche_membre) /*si il n'y a pas de resultat*/
    {
    /*on crypte le mot de passe*/
    $mdp = sha1($_POST['mdp']);
    
    /*Si le pseudo est libre et l'email valide, alors on enregistre le nouveau membre*/
    $req=$bdd->prepare('INSERT INTO membre(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())');
    $req->execute(array('pseudo'=>$_POST['pseudo'], 'pass'=>$mdp, 'email'=>$_POST['email']));
    
    /* on demarre la session */
    session_start();
    
    /* on cree les variables de session du membre qui lui serviront pendant sa session*/
    $_SESSION['id']= $resultat['id'];
    $_SESSION['pseudo']= $pseudo;
    $_SESSION['mail']= $resultat['email'];
    
    
    header('Location: membre.php');
    }
    else
    {
    echo "Un membre possede deja ce pseudo";
    }	
    }
    else
    {
    echo "Votre adresse email n'est pas valide";
    }
    }
    else
    {
    echo "Il faut remplir tous les champs"; 
    }
    }
    else
    {
    echo "Une erreur s'est produite";
    }
    }
    else
    {
    echo "Vous n'avez pas le droit d'acceder a cette page";
    }
    ?>
    </body>
    </html>
    
    et
    
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
    
    <body>
    <?php
    session_start();
    echo "page membre";
    ?>
    <?php
    echo 'id : ',$_SESSION['id'],'
    
    mail : ',$_SESSION['mail'],'
    
    <form action="logout.php" method="post">
    <input type="submit" value="logout"/>
    </form>';
    ?>
    </body>
    </html>

  2. #2
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    salut,

    tu dois mettre tes session_start() avant TOUT code html c'est pour ça que ça te met une erreur...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Par défaut
    J'ai pas de code html avant mon session_start , par contre ca ne me donne pas d'erreur c'est juste que mes champs sont vides dans membre.php

  4. #4
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    si tu as ça:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    hors du bloc de php c'est comme si tu faisais des "echo" dedans en fait donc ça empêche session_start() d'initialiser la session

    les erreurs ne s'affichent que si tu les autorise à le faire...
    les sessions c'est comme les headers ça se démarre au tout début de ton code

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Par défaut
    Tu le metterais ou session_start toi ? Dans d'autre de mes pages cela fonctionne bien comme ca

  6. #6
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    mets un:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php session_start()?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    comme ça rien n'est avant lui...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Par défaut
    Il doit y avoir autre chose , avec mon 1er session_start pas de probleme ca enregistre bien dans la bdd , par contre la session n'enregistre pas les variables de session indiqué en rouge

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    il n'est pas superflu de lire la doc : session_start();

    UN SEUL session_start() par page, en tout début de fichier, comme indiqué par ericd69.

  9. #9
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    dans ton 2ème bout de code après le "et" tu as le même problème...

    outilise bien # dans les icones ou les [code ][/code] équivalent pour englober tes bouts de code et les séparer... sinon ça rend la lecture super difficile...

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Par défaut
    Ok j'ai modifié mon code comme indiqué , mais j'ai toujours le meme probleme , pas de données envoyé sur ma page membre.php

    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
    <?php session_start()?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
    
    <body>
    <?php
    /* il faut demarrer la session*/
    
     
    if (empty($_SESSION['id'])) //les membres connecte ne peuvent pas s'inscrire
    {
        /* il faut que toutes les variables du formulaires existent*/
        if(isset($_POST['pseudo']) && isset($_POST['mdp']) && isset($_POST['email']))
        {
            /*il faut que tous les champs soient renseignes*/
            if($_POST['pseudo']!="" && $_POST['mdp']!="" && $_POST['email']!="")
            {
                /*connexion a la BDD*/
                try
                {
                    $bdd = new PDO('mysql:host=localhost;dbname=formulaire', 'root', '');
                }
                catch (Exception $e)
                {
    	        die('Erreur : ' . $e->getMessage());
                }
     
                /* on teste l'adresse email, si c'est bon, on continue, sinon, on affiche un message d'erreur*/
                if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}.[a-z]{2,4}$#", $_POST['email']))
                {
                    /*on verifie si un membre ne possede pas deja le meme pseudo*/
                    $req = $bdd->prepare('SELECT id FROM membre WHERE pseudo = :pseudo');
    	        $req->execute(array('pseudo'=> $_POST['pseudo']));
    	        $nb_resultats_recherche_membre=$req->fetch();
     
                    if(!$nb_resultats_recherche_membre) /*si il n'y a pas de resultat*/
                    {
                        /*on crypte le mot de passe*/
                        $mdp = sha1($_POST['mdp']);
     
                        /*Si le pseudo est libre et l'email valide, alors on enregistre le nouveau membre*/
                        $req=$bdd->prepare('INSERT INTO membre(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())');
                        $req->execute(array('pseudo'=>$_POST['pseudo'], 'pass'=>$mdp, 'email'=>$_POST['email']));
    				
    				
    			/* on demarre la session */
                   
     
                   /* on cree les variables de session du membre qui lui serviront pendant sa session*/
                   $_SESSION['id']= $resultat['id'];
    	       $_SESSION['pseudo']= $pseudo;
    	       $_SESSION['mail']= $resultat['email'];
    					
     
                        header('Location: membre.php');
    					
                    }
                    else
                    {
                        echo "Un membre possede deja ce pseudo";
                    }	
                }
                else
                {
                    echo "Votre adresse email n'est pas valide";
                }
            }
            else
            {
               echo "Il faut remplir tous les champs"; 
            }
        }
        else
        {
            echo "Une erreur s'est produite";
        }
    }
    else
    {
         echo "Vous n'avez pas le droit d'acceder a cette page";
    }
    ?>
    </body>
    </html>
    et
    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
    <?php session_start()?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
     
    <body>
    <?php
    echo "page membre";
    ?>
    <?php
    echo  'id : ',$_SESSION['id'],'<br />
         mail : ',$_SESSION['mail'],'<br />
    <form action="logout.php" method="post">
    <input type="submit" value="logout"/>
    </form>';
    ?>
    <?php
    echo '<form action="index.php" method="post">
    <input type="submit" value="acceuille"/>
    </form>';
    ?>
    </body>
    </html>

  11. #11
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    maintenant faut que tu testes ce que tu récupères à chaque étapes dans ton premier code pour voir ce que tu affectes réellement dans tes différentes variables dont celles de session...

    ça dépend aussi de ce que tu récupères de ta bd et ça y a que toi qui peut tester

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Par défaut
    Je voudrais recuperer l'id et le mail dans membre.php , il n'y a pas de probleme, ils s'enregistrent bien dans la bdd , mais ne s'affichent pas dans le echo de membre.php , j'ai un champs vide , je desespere , je bloque dessus depuis 2 jours

  13. #13
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    tu as bien la redirection?

    si oui ferme la session avant elle avec :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    session_write_close();
    ça écrira les données dans la session effectivement avant que la redirection opère

  14. #14
    Invité
    Invité(e)
    Par défaut
    1/ Sais-tu que la concatenation en PHP se fait avec des points (pas des virgules) ?

    2/ mets des echo ... de tes sessions partout dans le code, et trouve où ça coince.
    Il faut savoir si elles sont correctement creees, et où elles se vident...
    Dernière modification par Invité ; 13/08/2013 à 23h57.

  15. #15
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    la concaténation en php se fait bien avec un "." jreaux...

    j'ai l'impression que tu nous fais une petite confusion avec un autre langage ou que tu as voulu dire le contraire

    je viens de de voir en effet que tu utilises des virgules pour concaténer certaines expression

  16. #16
    Invité
    Invité(e)
    Par défaut
    oups !
    j'ai écrit le contraire, sans me relire... (corrigé)
    (je suis sur smartphone : c'est ecrit petit ! )
    -> http://php.net/manual/fr/function.echo.php

    Il s'agit des lignes 14-15 du 2ème code.

  17. #17
    Membre Expert
    Avatar de ericd69
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2011
    Messages
    1 919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 919
    Billets dans le blog
    1
    Par défaut
    hors d'une liste de paramètres d'une fonction l'opérateur "," renvoie ce qui est à gauche si c'est non null ou ce qui est à droite, d'où le faite qu'il n'y ait pas d'erreurs...

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Par défaut
    Ok ,
    j'ai remplacer les $resultat par des $post , et ca fonctionne pour les données qui ont était rentré dans le formulaire , par contre je ne sais pas comment récupérer l'id du membre qui se connecte (vu qu'il ne le rentre pas dans le formulaire) ???

    je remet le code a jour :

    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
    <?php session_start()?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
    
    <body>
    <?php
    /* il faut demarrer la session*/
    
     
    if (empty($_SESSION['id'])) //les membres connecte ne peuvent pas s'inscrire
    {
        /* il faut que toutes les variables du formulaires existent*/
        if(isset($_POST['pseudo']) && isset($_POST['mdp']) && isset($_POST['email']))
        {
            /*il faut que tous les champs soient renseignes*/
            if($_POST['pseudo']!="" && $_POST['mdp']!="" && $_POST['email']!="")
            {
                /*connexion a la BDD*/
                try
                {
                    $bdd = new PDO('mysql:host=localhost;dbname=formulaire', 'root', '');
                }
                catch (Exception $e)
                {
    	        die('Erreur : ' . $e->getMessage());
                }
     
                /* on teste l'adresse email, si c'est bon, on continue, sinon, on affiche un message d'erreur*/
                if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}.[a-z]{2,4}$#", $_POST['email']))
                {
                    /*on verifie si un membre ne possede pas deja le meme pseudo*/
                    $req = $bdd->prepare('SELECT id FROM membre WHERE pseudo = :pseudo');
    	        $req->execute(array('pseudo'=> $_POST['pseudo']));
    	        $nb_resultats_recherche_membre=$req->fetch();
     
                    if(!$nb_resultats_recherche_membre) /*si il n'y a pas de resultat*/
                    {
                        /*on crypte le mot de passe*/
                        $mdp = sha1($_POST['mdp']);
     
                        /*Si le pseudo est libre et l'email valide, alors on enregistre le nouveau membre*/
                        $req=$bdd->prepare('INSERT INTO membre(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())');
                        $req->execute(array('pseudo'=>$_POST['pseudo'], 'pass'=>$mdp, 'email'=>$_POST['email']));
    				
    				
    			/* on demarre la session */
                   
     
                   /* on cree les variables de session du membre qui lui serviront pendant sa session*/
                   $_SESSION['id']= ???????;
    	       $_SESSION['pseudo']= $_POST['pseudo'];
    	       $_SESSION['mail']= $_POST['email'];
    					
     
                        header('Location: membre.php');
    					
                    }
                    else
                    {
                        echo "Un membre possede deja ce pseudo";
                    }	
                }
                else
                {
                    echo "Votre adresse email n'est pas valide";
                }
            }
            else
            {
               echo "Il faut remplir tous les champs"; 
            }
        }
        else
        {
            echo "Une erreur s'est produite";
        }
    }
    else
    {
         echo "Vous n'avez pas le droit d'acceder a cette page";
    }
    ?>
    </body>
    </html>

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tomtom59110 Voir le message
    ... je ne sais pas comment récupérer l'id du membre qui se connecte
    Depuis la base de données.
    C'est celui qui correspond aux login et pass fournis.

  20. #20
    Membre averti
    Profil pro
    Inscrit en
    Août 2013
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2013
    Messages : 17
    Par défaut
    J'ai modifier comme ca , mais ca marche pas :

    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
    <?php session_start()?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Document sans titre</title>
    </head>
    
    <body>
    <?php
    /* il faut demarrer la session*/
    
     
    if (empty($_SESSION['id'])) //les membres connecte ne peuvent pas s'inscrire
    {
        /* il faut que toutes les variables du formulaires existent*/
        if(isset($_POST['pseudo']) && isset($_POST['mdp']) && isset($_POST['email']))
        {
            /*il faut que tous les champs soient renseignes*/
            if($_POST['pseudo']!="" && $_POST['mdp']!="" && $_POST['email']!="")
            {
                /*connexion a la BDD*/
                try
                {
                    $bdd = new PDO('mysql:host=localhost;dbname=formulaire', 'root', '');
                }
                catch (Exception $e)
                {
    	        die('Erreur : ' . $e->getMessage());
                }
     
                /* on teste l'adresse email, si c'est bon, on continue, sinon, on affiche un message d'erreur*/
                if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}.[a-z]{2,4}$#", $_POST['email']))
                {
                    /*on verifie si un membre ne possede pas deja le meme pseudo*/
                    $req = $bdd->prepare('SELECT id FROM membre WHERE pseudo = :pseudo');
    	        $req->execute(array('pseudo'=> $_POST['pseudo']));
    	        $nb_resultats_recherche_membre=$req->fetch();
     
                    if(!$nb_resultats_recherche_membre) /*si il n'y a pas de resultat*/
                    {
                        /*on crypte le mot de passe*/
                        $mdp = sha1($_POST['mdp']);
     
                        /*Si le pseudo est libre et l'email valide, alors on enregistre le nouveau membre*/
                        $req=$bdd->prepare('INSERT INTO membre(pseudo, pass, email, date_inscription) VALUES(:pseudo, :pass, :email, CURDATE())');
                        $req->execute(array('pseudo'=>$_POST['pseudo'], 'pass'=>$mdp, 'email'=>$_POST['email']));
    				
    				
    			
                   $reponse = mysql_query("SELECT id FROM membre WHERE pseudo='" . $_POST['pseudo'] . "'"); // Requête SQL
    while ($donnees = mysql_fetch_array($reponse) )
    
     
                   /* on cree les variables de session du membre qui lui serviront pendant sa session*/
                   $_SESSION['id']= $donnees['id'];
    	       $_SESSION['pseudo']= $_POST['pseudo'];
    	       $_SESSION['mail']= $_POST['email'];
    					
     
                        header('Location: membre.php');
    					
                    }
                    else
                    {
                        echo "Un membre possede deja ce pseudo";
                    }	
                }
                else
                {
                    echo "Votre adresse email n'est pas valide";
                }
            }
            else
            {
               echo "Il faut remplir tous les champs"; 
            }
        }
        else
        {
            echo "Une erreur s'est produite";
        }
    }
    else
    {
         echo "Vous n'avez pas le droit d'acceder a cette page";
    }
    ?>
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/07/2012, 16h30
  2. Session_start et probleme de mémoire
    Par steinfield dans le forum Langage
    Réponses: 1
    Dernier message: 17/06/2010, 20h30
  3. [MySQL] probleme dans session_start()
    Par yucef83 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/05/2009, 11h46
  4. probleme avec session_start
    Par Lenaick dans le forum Langage
    Réponses: 2
    Dernier message: 24/03/2009, 11h02
  5. probleme avec la fonction session_start()
    Par lauraincis dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 22/01/2009, 11h46

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