Problème session php

Résolu
nico3009 Messages postés 103 Statut Membre -  
giheller Messages postés 1892 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

n'étant pas du tout informaticien, j'ai appris à me servir du php grâce à des forums et des tutos. J'ai donc beaucoup de lacunes.
J'essaie de créer des sessions sur mon site mais je bloque en écrivant le code de vérification qui identifie l'utilisateur.
Voici mon code :

<?php

session_start();
$pseudoOK = false;

if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) ) {

extract($_POST);

$hostname = "*****";
$user = "*****";
$password = "*****";
$nom_base_donnees = "*****";

mysql_connect($hostname, $user, $password) or die(mysql_error());
mysql_select_db($nom_base_donnees);

$sql = "SELECT nom, prenom, pseudo, email FROM joueurs WHERE pseudo = '".addslashes($pseudo)."'";
$req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);

if (mysql_num_rows($req) > 0) {
$data = mysql_fetch_assoc($req);

if ($mdp == $data['mdp']) {
$pseudoOK = true;
}
}
}

if ($pseudoOK) {
$_SESSION['nom'] = $data['nom'];
$_SESSION['prenom'] = $data['prenom'];
$_SESSION['pseudo'] = $data['pseudo'];
$_SESSION['email'] = $data['email'];

header("Location: index3.php") ;
}
else {
header("Location: index2.htm") ;
}
?>

J'ai pompé des morceaux sur plusieurs tutos et je pense ne pas tout mettre dans le bon ordre en fait.

Merci de me donner un coup de main ;o)
Configuration: Windows 2000 Internet Explorer 6.0

33 réponses

  • 1
  • 2
  1. moderno31 Messages postés 900 Statut Membre 92
     
    Hello
    Avant de te répondre, peut--tu me décrire viteuf ton process ?
    Dans l'ordre quel est le premier problème que tu as quand tu exécutes ?
    0
  2. nico3009 Messages postés 103 Statut Membre 1
     
    Je viens de résoudre mon problème en fait. J'ai simplifié la chose :

    <?php

    if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) )
    {
    $pseudo = $_POST["pseudo"] ;
    $mdp = md5($_POST["mdp"]) ;

    $hostname = "*****";
    $user = "*****";
    $password = "*****";
    $nom_base_donnees = "*****";

    mysql_connect($hostname, $user, $password) or die(mysql_error());
    mysql_select_db($nom_base_donnees);

    $sql = "SELECT * FROM joueurs WHERE pseudo = '".$pseudo."' AND mdp = '".$mdp."'";

    $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
    $result = mysql_fetch_object($req) ;

    if(is_object($result))
    {
    session_start();

    $_SESSION['nom'] = $data['nom'];
    $_SESSION['prenom'] = $data['prenom'];
    $_SESSION['pseudo'] = $data['pseudo'];
    $_SESSION['email'] = $data['email'];

    header("Location: index3.php") ;
    }
    else {
    header("Location: index4.htm") ;
    }
    }
    ?>

    Et maintenant je cherche comment afficher les données mises en session : (j'ai un message d'erreur pour l'instant)

    <?php

    session_start();

    echo "Bienvenue $_SESSION['pseudo']";
    echo "Votre Nom : $_SESSION['nom']";
    echo "Votre prénom : $_SESSION['prenom']";
    echo "Votre email : $_SESSION['email']";

    echo '<a href="*******"> Déconnexion</a>';
    ?>
    0
  3. moderno31 Messages postés 900 Statut Membre 92
     
    c koi le message d'erreur ?
    0
  4. nico3009 Messages postés 103 Statut Membre 1
     
    J'avais un problème de syntaxe. Je suis aller sur le site de phpdébutant pour corriger ça, ce qui donne :

    echo 'Bienvenue ',$_SESSION['pseudo'],'<br />
    Nom : ',$_SESSION['nom'],'<br />
    Prénom : ',$_SESSION['prenom'],'<br />
    Email : ',$_SESSION['email'],'<br />';

    mais je n'ai que le pseudo qui s'affiche.

    Pourtant si j'ai bien compris le principe, il faut mettre les données en session, ensuite démarrer chaque page avec "session start" pour pouvoir les appeler?
    Je ne comprends pas pourquoi il ne m'affiche que le pseudo alors que dans mon code (ci dessus) j'ai bien mis en session également le nom, prénom et email.

    Merci de ton aide en tous cas.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. moderno31 Messages postés 900 Statut Membre 92
     
    Pourtant si j'ai bien compris le principe, il faut mettre les données en session, ensuite démarrer chaque page avec "session start" pour pouvoir les appeler? (oui, vrai)

    Je ne suis pas sur que tout soit juste la dedans
    echo 'Bienvenue ',$_SESSION['pseudo'],'<br />
    Nom : ',$_SESSION['nom'],'<br />
    Prénom : ',$_SESSION['prenom'],'<br />
    Email : ',$_SESSION['email'],'<br />';

    A condition que tes variables de session soient justes :

    echo("Bienvenue, ".$_SESSION['pseudo']."<br />
    Nom : ".$_SESSION['nom']."<br />
    Prénom : ".$_SESSION['prenom']."<br />
    Email : ".$_SESSION['email']."'<br />);

    Sinon

    echo("Bienvenue, ".$_SESSION['pseudo']."<br />");
    echo("Nom : ".$_SESSION['nom']."<br />");
    echo("Prénom : ".$_SESSION['prenom']."<br />");
    echo("Email : ".$_SESSION['email']."'<br />");

    N'hésite pas à tout tester pas à pas
    0
  7. nico3009 Messages postés 103 Statut Membre 1
     
    Bonjour,

    j'ai testé les 2 méthodes. Pour la 1ere il y a un problème de " apparement que je n'arrive pas à résoudre.

    Pour la seconde, je n'obtiens pas les données de session. Seulement ceci :

    Bienvenue,
    Nom :
    Prénom :
    Email :

    Je cherche de mon côté dès que j'ai un moment

    Merci
    0
  8. nico3009 Messages postés 103 Statut Membre 1
     
    Bon j'ai testé autrement.
    Je n'ai demandé à afficher seulement le pseudo comme ceci :
    <?php
    session_start();
    echo 'Bienvenue : ' , $_SESSION['pseudo'] , '<br /> ';
    echo '<a href="http://.....htm"> Déconnexion</a>';
    ?>

    Ca marche impec.
    Par contre quand je remplace 'pseudo' par 'prenom', je n'ai plus rien.
    Ca doit venir de mon code de vérification où je met mes variables en session. Je le remet ici car je ne vois pas l'erreur que j'ai faite.

    <?php
    if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) )
    {
    $pseudo = $_POST["pseudo"] ;
    $mdp = md5($_POST["mdp"]) ;

    $hostname = "";
    $user = "";
    $password = "";
    $nom_base_donnees = "";

    mysql_connect($hostname, $user, $password) or die(mysql_error());
    mysql_select_db($nom_base_donnees);

    $sql = "SELECT nom, prenom, pseudo, email FROM joueurs WHERE pseudo = '".$pseudo."' AND mdp = '".$mdp."'";

    $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
    $result = mysql_fetch_object($req) ;

    if(is_object($result))
    {
    session_start();

    $_SESSION['nom'] = $data['nom'];
    $_SESSION['prenom'] = $data['prenom'];
    $_SESSION['pseudo'] = $data['pseudo'];
    $_SESSION['email'] = $data['email'];

    header("Location: index3.php") ;
    }
    else {
    header("Location: index4.htm") ;
    }
    }
    ?>
    0
  9. giheller Messages postés 1892 Date d'inscription   Statut Membre Dernière intervention   146
     
    Par contre quand je remplace 'pseudo' par 'prenom', je n'ai plus rien.


    verifie là ou tu mets prenom et pseudo
    et là où tu affiches
    0
  10. nico3009 Messages postés 103 Statut Membre 1
     
    Non ca a l'air bon pourtant.
    Soit j'ai quelque chose qui n'est pas à la bonne place, soit il manque qualque chose.
    Je pensais peut etre à regader du côté de $data. Je n'y connais pas grand chose donc je m'aide beaucoup de tutos pour avancer et ce n'est pas évident.
    0
  11. giheller Messages postés 1892 Date d'inscription   Statut Membre Dernière intervention   146
     
    n'ayant pas le dormulaire on ne sait pas ce qu'il passe

    J-L
    0
  12. nico3009 Messages postés 103 Statut Membre 1
     
    Voici le formulaire : (index2.htm)

    <html>
    <head>
    <title>Connexion au site</title>
    </head>
    <body>
    <form method="post" action="verifpseudo.php">
    <table border="0" width="400" align="center">
    <tr>
    <td width="200"><b>Pseudo</b></td>
    <td width="200">
    <input type="text" name="pseudo">
    </td>
    </tr>
    <tr>
    <td width="200"><b>Mot de passe<b></td>
    <td width="200">
    <input type="password" name="mdp">
    </td>
    </tr>
    <tr>
    <td colspan="2">
    <input type="submit" name="submit" value="Se connecter">
    </td>
    </tr>
    </table>
    </form>
    </body>
    </html>

    Le code de vérif : (verifpseudo.php)

    ?php

    if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) )
    {
    $pseudo = $_POST["pseudo"] ;
    $mdp = md5($_POST["mdp"]) ;

    $hostname = "";
    $user = "";
    $password = "";
    $nom_base_donnees = "";

    mysql_connect($hostname, $user, $password) or die(mysql_error());
    mysql_select_db($nom_base_donnees);

    $sql = "SELECT * FROM joueurs WHERE pseudo = '".$pseudo."' AND mdp = '".$mdp."'";

    $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
    $result = mysql_fetch_object($req) ;

    if(is_object($result))
    {
    session_start();
    {
    $_SESSION['nom'] = $data['nom'];
    $_SESSION['prenom'] = $data['prenom'];
    $_SESSION['pseudo'] = $data['pseudo'];
    $_SESSION['email'] = $data['email'];
    }
    header("Location: index3.php") ;
    }
    else {
    echo '<p>Pseudo ou mot de passe incorrect. Veuillez réessayer.</p>';
    include('index2.htm');
    exit;

    }
    }
    ?>

    et la page affichée (index3.php)

    <?php

    session_start();

    echo 'Bienvenue ',$_SESSION['pseudo'],'<br />
    Nom : ',$_SESSION['nom'],'<br />
    Prénom : ',$_SESSION['prenom'],'<br />
    Email : ',$_SESSION['email'],'<br />';

    echo '<a href="http://***/deconnexion.php"> Déconnexion</a>';

    ?>
    0
  13. nico3009 Messages postés 103 Statut Membre 1
     
    Voici le formulaire : (index2.htm)

    <html>
    <head>
    <title>Connexion au site</title>
    </head>
    <body>
    <form method="post" action="verifpseudo.php">
    <table border="0" width="400" align="center">
    <tr>
    <td width="200"><b>Pseudo</b></td>
    <td width="200">
    <input type="text" name="pseudo">
    </td>
    </tr>
    <tr>
    <td width="200"><b>Mot de passe<b></td>
    <td width="200">
    <input type="password" name="mdp">
    </td>
    </tr>
    <tr>
    <td colspan="2">
    <input type="submit" name="submit" value="Se connecter">
    </td>
    </tr>
    </table>
    </form>
    </body>
    </html>

    Le code de vérif : (verifpseudo.php)

    <?php

    if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) )
    {
    $pseudo = $_POST["pseudo"] ;
    $mdp = md5($_POST["mdp"]) ;

    $hostname = "";
    $user = "";
    $password = "";
    $nom_base_donnees = "";

    mysql_connect($hostname, $user, $password) or die(mysql_error());
    mysql_select_db($nom_base_donnees);

    $sql = "SELECT * FROM joueurs WHERE pseudo = '".$pseudo."' AND mdp = '".$mdp."'";

    $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
    $result = mysql_fetch_object($req) ;

    if(is_object($result))
    {
    session_start();
    {
    $_SESSION['nom'] = $data['nom'];
    $_SESSION['prenom'] = $data['prenom'];
    $_SESSION['pseudo'] = $data['pseudo'];
    $_SESSION['email'] = $data['email'];
    }
    header("Location: index3.php") ;
    }
    else {
    echo '<p>Pseudo ou mot de passe incorrect. Veuillez réessayer.</p>';
    include('index2.htm');
    exit;

    }
    }
    ?>

    et la page affichée (index3.php)

    <?php

    session_start();

    echo 'Bienvenue ',$_SESSION['pseudo'],'<br />
    Nom : ',$_SESSION['nom'],'<br />
    Prénom : ',$_SESSION['prenom'],'<br />
    Email : ',$_SESSION['email'],'<br />';

    echo '<a href="http://***/deconnexion.php"> Déconnexion</a>';

    ?>
    0
  14. giheller Messages postés 1892 Date d'inscription   Statut Membre Dernière intervention   146
     
    je te suggère de rajouter la ligne en gras pour voir ce que tu reçois du formulaire; cela peut nous aiguiller

    Le code de vérif : (verifpseudo.php)

    <?php
    echo "<pre>";print_r($_POST);echo "</pre>";
    if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) )
    {
    $pseudo = $_POST["pseudo"] ;
    $mdp = md5($_POST["mdp"]) ;
    0
  15. nico3009 Messages postés 103 Statut Membre 1
     
    Je reçois ça :

    Array
    (
    )
    0
  16. giheller Messages postés 1892 Date d'inscription   Statut Membre Dernière intervention   146
     
    Bonjour,

    ce qui veut dire que le formulaire ne renvoit RIEN
    où sont renseignées les zones qui "alimentent" $_POST ?
    0
  17. nico3009 Messages postés 103 Statut Membre 1
     
    Je ne comprends pas bien ta question.
    Dans le formulaire, l'utilisateur entre son pseudo et mdp. Ca va vérifier dans la table "joueurs" si ils concordent bien et je veux faire afficher les autres variables concernant ce pseudo (nom, prenom, email) qui sont affichées dans la table.
    Je ne pense pas que c'est ce que tu me demandes. Je suis désolé, j'ai un pu de mal.
    0
  18. giheller Messages postés 1892 Date d'inscription   Statut Membre Dernière intervention   146
     
    --si le résultat de ce que je t'ai demandé de faire (echo "<pre>";print_r($_POST);echo "</pre>"; ) est vide d'après ta réponse, cela veut dire que $_POST est vide.

    donc pour pister ton souci, tu ajoutes

    if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) )
    {
    $pseudo = $_POST["pseudo"] ;
    $mdp = md5($_POST["mdp"]) ;
    echo "je passe ici<br>";

    }
    et dans le else de ce if tu mets
    echo "je passe par là<br>";

    J-L
    0
  19. nico3009 Messages postés 103 Statut Membre 1
     
    Il me répond je passe par là.
    Ca voudrait dire que :
    if ( isset($_POST) && (!empty($_POST['pseudo'])) && (!empty($_POST['mdp'])) )
    ne retourne rien??

    Il me semblait que ça voulait dire que "si le pseudo envoyé n'est pas vide et si le mdp envoyé n'est pas vide" ...
    0
  20. giheller Messages postés 1892 Date d'inscription   Statut Membre Dernière intervention   146
     
    $_POST['pseudo'] n'est pas vide : il n'existe pas.

    détaillons les if pour suivre :
    if (isset($_POST)) {
    echo "<pre>";print_r($_POST);echo "</pre>";

    else {
    echo "$ POST n'existe pas";
    }

    J-L
    0
  • 1
  • 2