Problème PHP -> Session

Herodion -  
 Herodion -
Bonjour,
Je suis actuellement en pleine création d'un jeu sur internet.
J'ai déjà bien avancé, mais là, je suis bloqué pour un sacré bout de temps si on ne m'aide pas...

Mon problème étant:
J'aimerais que, quand le joueur se connecte, son nom s'affiche dans la sidebar.

DONC!!!
Pour se faire, j'ai vu partout qu'il fallait utiliser des variables de session ($_SESSION).
Ok! mais... aucun tuto essayer jusqu'alors n'a réussi à fonctionner car,
pour que cela marche, il faut récupérer le login qu'entre le joueur au moment de sa connexion dans le formulaire de la page connexion.php. Pour ensuite récupérer cette info sur la page sidebar.php, qui en fait est un include.

Voilà!
Je pense que j'ai bien posé mon problème.
Dans l'attente d'une réponse, je continu à scruter le web pour essayer d'élucider ce mystère.
Configuration: Windows XP
Firefox 3.0.11

36 réponses

  • 1
  • 2
Résumé de la discussion

Le problème décrit consiste à afficher le nom du joueur dans la sidebar au moment de la connexion, en utilisant idéalement une variable de session ($_SESSION), puis à la rendre accessible sur la page sidebar.php. Des conseils pratiques privilégient de passer le login via l’URL avec $_GET, en créant un lien tapage.php?utilisateur=… et en récupérant ensuite $login = $_GET['utilisateur'] pour l’afficher. Cette approche requiert d'utiliser urlencode lors de la construction du lien et un affichage via echo sur la page cible pour restituer le nom du joueur de manière fiable. En cas d'erreurs persistantes, il est nécessaire de vérifier les balises PHP et l’ordre d’exécution des scripts, notamment l’inclusion de sidebar et l’ouverture des sessions.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. le père
     
    Bonjour

    Ben non il n'est pas bien posé ton problème. Je n'ai pas vu où tu as dit que quelque chose ne marchait pas.
    Tu as seulement dit
    pour que cela marche, il faut récupérer le login qu'entre le joueur au moment de sa connexion dans le formulaire de la page connexion.php. Pour ensuite récupérer cette info sur la page sidebar.php, qui en fait est un include.
    Et alors ? Que sidebar.php soit un include ne gêne en rien du tout l'utilisation des variables de session
    0
  2. Herodion
     
    Effectivement, j'ai oublié ce point et j'en suis désolé.
    Déjà à la base, la balise <?php session_start; ?> ne fonctionne pas.
    Elle me met une grosse erreur.
    Ensuite, pour tout les tutos, ils n'indiquent aucunement les endroits où placer le code qu'ils donnent.
    Il montre un bout de code en disant voilà il faut ça.
    Je ne comprend vraiment rien à leur histoire.
    Déjà, dans la page sidebar.php, que faut-il que je mette?
    Pour l'instant j'ai ça:

    <div id="secondaryContent">

    <? if(empty($_COOKIE["ID_UTILISATEUR"])) { ?>
    <h3>Identification</h3>
    <p>
    <a href="inscription.php">Créer un compte utilisateur</a>
    <a href="connexion.php">Connexion</a>
    </p>
    <? } else { ?>
    <h3>Infos du joueur</h3>

    <? } ?>
    </div>
    <?php mysql_close(); ?>

    C'est après "infos du joueur" que je voudrais placer son nom.
    J'espère avoir été plus clair...
    0
  3. Choupi12
     
    salut ! j'ai une petite idée mais avant je voudrais étre sur d'avoir tout compris a ton problème. Tu as une page avec un login et dans cette page tu veus récupéré le nom de ton joueur pour l'afficher dans une autre page c'est bien sa ??
    0
  4. Herodion
     
    En fait, mon but est de récupérer le login que le joueur rentre dans le formulaire de connexion carte cela correspond aussi au nom du joueur.
    Donc récupérer le login écrit dans le formulaire, pour faire un echo dans la sidebar.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Choupi12
     
    oki c'est bien ske je pensais.
    j'ai fait un truc un peu comme sa avec des carte de visite.

    en fait met ton login dans une variable genre $login. ensuite tu doit récupéré ta variable pour la mettre dans ta page sa donne sa :
    <a href = "\tapage.php?
    utilisateur=<?php echo urlencode ($login); >

    ton idée du $_SESSION était pas mal mais utilise plutot $_GET
    donc dans ton autre pagela tu dit la récupéré :
    $login = $_GET['utiliateur'];

    et pour l'afficher un echo ne ferait t'il pas l'affaire ??
    donc voila essaie ça et tiens moi au courant
    0
  7. Herodion
     
    Je ne te suis pas très bien...
    Qu'entend-tu par :"met ton login dans une variable genre $login."?
    0
  8. Choupi12
     
    ben ton utilisateur qui va se créer un compte va bien taper un nom d'utilisateur ??
    je veus donc dire de mettre se nom d'utilisateur dans une variable.
    0
  9. Herodion
     
    Ok mais comment récupérer son login justement?
    Il y a un code?
    Car là est mon principal problème.
    0
  10. Choupi12
     
    je peus voir ton code qui concerne ton login sil te plait.
    0
  11. Herodion
     
    <?

    // Redirige l'utilisateur s'il est déjà identifié
    if(isset($_COOKIE["ID_UTILISATEUR"]))
    {
    header("Location: index.php");
    }
    else
    {

    // Formulaire visible par défaut
    $masquer_formulaire = false;

    // Une fois le formulaire envoyé
    if(isset($_POST["BT_Envoyer"]))
    {

    // Vérification de la validité des champs
    if(!ereg("^[A-Za-z0-9_]{2,20}$", $_POST["TB_Nom_Utilisateur"]))
    {
    $message = "Votre nom d'utilisateur doit comporter entre 2 et 20 caractères<br />\n";
    $message .= "L'utilisation de l'underscore est autorisée";
    }
    elseif(!ereg("^[A-Za-z0-9]{6,}$", $_POST["TB_Mot_de_Passe"]))
    {
    $message = "Votre mot de passe doit comporter au moins 6 caractères";
    }
    else
    {

    // Connexion à la base de données
    // Valeurs à modifier selon vos paramètres configuration
    mysql_connect("sql.free.fr", "****", "****");
    mysql_select_db("****");

    // Sélection de l'utilisateur concerné
    $result = mysql_query("
    SELECT ID_Utilisateur, Nom_Utilisateur, Mot_de_Passe, Compte_Active
    FROM Comptes_Utilisateurs
    WHERE Nom_Utilisateur = '" . $_POST["TB_Nom_Utilisateur"] . "'
    ");

    // Si une erreur survient
    if(!$result)
    {
    $message = "Une erreur est survenue lors de la tentative de connexion";
    }
    else
    {

    // Si aucun utilisateur n'a été trouvé
    if(mysql_num_rows($result) == 0)
    {
    $message = "Le nom d'utilisateur " . $_POST["TB_Nom_Utilisateur"] . " n'existe pas";
    }
    else
    {

    // Récupération des données
    $row = mysql_fetch_array($result);

    // Si le compte n'a pas été activé
    if($row["Compte_Active"] == 0)
    {
    $message = "Votre compte utilisateur n'a pas été activé";
    }
    else
    {

    // Vérification du mot de passe
    if(md5($_POST["TB_Mot_de_Passe"]) != $row["Mot_de_Passe"])
    {
    $message = "Votre mot de passe est incorrect";
    }
    else
    {

    // Définition du temps d'expiration des cookies
    $expiration =
    empty($_POST["CB_Connexion_Automatique"]) ? 0 : time() + 90 * 24 * 60 * 60;

    // Création des cookies
    setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
    setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");

    // Fermeture de la connexion à la base de données
    mysql_close();

    // Redirection de l'utilisateur
    header("Location: index.php");

    }

    }

    }

    }

    // Fermeture de la connexion à la base de données
    mysql_close();

    }

    }

    ?>
    <?php include ('/projet/header.php'); ?>
    <div id="content">
    <div id="xbg1"></div>
    <div id="primaryContentContainer">
    <div id="primaryContent">
    <? if(isset($message)) { ?>
    <p><?= $message; ?></p>
    <? } if($masquer_formulaire != true) { ?>
    <form action="http://<?= $_SERVER["SERVER_NAME"] . $_SERVER["SCRIPT_NAME"]; ?>" method="post">
    <p>
    Nom d'utilisateur : <input type="text" name="TB_Nom_Utilisateur" />
    </p>
    <p>
    Mot de passe : <input type="password" name="TB_Mot_de_Passe" />
    </p>

    <p>
    <input type="submit" name="BT_Envoyer" value="Envoyer" />
    </p>
    </form>
    <? } ?>
    </div>
    </div>
    <?php include ('/projet/sidebar.php'); ?>
    <div class="clear"></div>
    </div>
    <?php include ('/projet/footer.php');?>
    0
  12. Choupi12
     
    Ah voila...
    Donc dans ta table tu récupère ceci : $row["Nom_Utilisateur"]
    ce qui devrait donner : $login = $row["Nom_Utilisateur"];
    et aprés c'est les même instruction que tout a l'heure.
    0
  13. Herodion
     
    Euh attend j'ai un problème là...
    Il me met une erreur à la dernière ligne.
    J'essaye de régler ça et je teste ton truc ;)
    0
  14. Choupi12
     
    ok ta du oublié de fermé une balise. surtout tiens moi au courant i jamais sa marche pas
    0
  15. okuni Messages postés 1325 Statut Membre 126
     
    En attandant de voir si ton truc fonctionne, je tiens à te dire que si tu écris ceci : <?php session_start; ?>
    c'est normal qu'il y ai une erreur, tu oublie les parenthèses.
    essaye ceci : <?php session_start(); ?>
    0
  16. Herodion
     
    Bah je ne peux pas encore tester, je n'arrive pas à trouver ce qu'il cloche...
    0
  17. DonaDona
     
    ta toujours un problème sur ta dernire ligne ???? ou c sr ske je té filé ???
    0
  18. okuni Messages postés 1325 Statut Membre 126
     
    Quel est le message d'erreur?
    0
  19. Herodion
     
    Alors mon problème est reglé.
    Maintenant ton truc.
    J'ai mis ça :
    // Création des cookies
    setcookie("ID_UTILISATEUR", $row["ID_Utilisateur"], $expiration, "/");
    setcookie("NOM_UTILISATEUR", $row["Nom_Utilisateur"], $expiration, "/");
    $login = $row["Nom_Utilisateur"]

    C'est bon?

    Et après sur ma sidebar je met quoi?
    0
  • 1
  • 2