fredrick Posté 30 Avril 2006 Posté 30 Avril 2006 Bonjour, Je voudrais donner à la variable $_SESSION['pseudo'] la valeur insérée dans un champ text. Comment faire pour que cette variable soit retenue à chaque chargement de page ? En fait il y a deux pages : -une qui sert à entrer son pseudo et se connecter au chat -l'autre qui est le chat et qui retient et insère automatiquement le pseudo renseigné dans la première page. Le problème? La page2 se recharge à chaque message envoyé et donc la variable $_SESSION['pseudo']=$_POST["pseudo'] me marque une erreur : variable inconnue. Normal ! Mais comment contourner le problème? Suis-je obligé d'utiliser une base de donnée?
kazhar Posté 30 Avril 2006 Posté 30 Avril 2006 Non, absolument pas. session_start();$_SESSION['pseudo'] = 'test'; Mets ceci dans une page session_start();echo $_SESSION['pseudo']; Puis, ceci dans une seconde page, et charge la première, puis la seconde. Le principe des sessions est justement de pouvoir conserver des données entre les pages.
Ryo Posté 30 Avril 2006 Posté 30 Avril 2006 Bonjour, tu doit faire cette instruction $_SESSION['pseudo']=$_POST['pseudo'] uniquemenet au premier chargement de la page. Un if ferra l'affaire.
fredrick Posté 30 Avril 2006 Auteur Posté 30 Avril 2006 Non, absolument pas. session_start();$_SESSION['pseudo'] = 'test'; Mets ceci dans une page session_start();echo $_SESSION['pseudo']; Puis, ceci dans une seconde page, et charge la première, puis la seconde. Le principe des sessions est justement de pouvoir conserver des données entre les pages. Oui ça je connais et cela fonctionne étant donné que tu défini toi-même la variable. 'test' dans ce cas-ci. Mais si on ne connais pas la variable??? Je ne sais pas la donner à l'avance ! Je suis obligé de passer par $_POST et cela fonctionne lors de l'ouverture de la deuxième page qui indique bien le pseudo indiqué dans la première page. Mais une fois qu'on envoit un message et que la seconde page se recharge, on perd la variable pseudo qui devient inconnue. J'espère que je suis assez clair dans mes explication
Leonick Posté 30 Avril 2006 Posté 30 Avril 2006 session_start();if ($_POST['pseudo']!="") $_SESSION['pseudo']=$_POST['pseudo'];echo "Bienvenue ".echo $_SESSION['pseudo'];
fredrick Posté 30 Avril 2006 Auteur Posté 30 Avril 2006 session_start();if ($_POST['pseudo']!="") $_SESSION['pseudo']=$_POST['pseudo']; echo "Bienvenue ".echo $_SESSION['pseudo']; Ca ne marche pas ce qui me semble logique car la traduction serait : Si il y a une valeur dans le champ pseudo alors la session s'appelle cette valeur. Cela revient tout à fait au même que ce que j'avais mis et qui ne marche pas, à savoir : $_SESSION['pseudo']=$_POST['pseudo']; A chaque rechargement de page, la page2 vérifie la valeur envoyée par post et comme il n'y en a pas (car on ne rempli pas le formulaire à chaque fois qu'on tape un message) et bien la page2 ne reconnaît plus la variable $_SESSION['pseudo'] Comment faire?
Théo B. Posté 30 Avril 2006 Posté 30 Avril 2006 (modifié) Une variable de session est reconnue durant x minutes meme si elle n'est pas définie à chaque fois. Modifié 30 Avril 2006 par Théo B.
Leonick Posté 30 Avril 2006 Posté 30 Avril 2006 (modifié) session_start();if ((isset($_POST['pseudo'])) && ($_POST['pseudo']!="")) $_SESSION['pseudo']=$_POST['pseudo'];echo "Bienvenue ".echo $_SESSION['pseudo']; Là, ça devrait marcher Modifié 30 Avril 2006 par Leonick
fredrick Posté 30 Avril 2006 Auteur Posté 30 Avril 2006 Une variable de session est reconnue durant x minutes meme si elle n'est pas définie à chaque fois. Ben alors il faudra qu'on m'explique pourquoi ça ne marche pas ?!?! Page1.php : ... <form method="post" action="page2.php"><p>Tape un pseudo :<input type="text" size="50" name="name"></p><input type="submit" value="entrer dans le chat"></form>... Page2.php : <?session_start();$_SESSION['pseudo']=$_POST['name'];?><html>...<form name="form" action="chat_envois.php" method="post"><p>Pseudo : <input type="text" name="pseudo" value="<? echo $_SESSION['pseudo']; ?>" size="6">Message : <input type="text" name="message" /><input type="submit" value="Envoyer"/></p>
fredrick Posté 30 Avril 2006 Auteur Posté 30 Avril 2006 Oui j'ai oublié de changer. L'action de form dans la page2 est bien sûr page2.php et non chat_envois.php.
Leonick Posté 30 Avril 2006 Posté 30 Avril 2006 il faut rajouter dans la page2 le isset() que j'ai mis dans le code en cas d'utilisation de la page2 sans être venu de la page1. Sinon, il faudrait faire un test en définissant à la main une variable dans page1 $_SESSION['test']="mon test"; Et vérifier qu'il apparait bien dans page2
fredrick Posté 30 Avril 2006 Auteur Posté 30 Avril 2006 J'ai déjà fait le test en indiquant $_SESSION['pseudo']='fred'; et cela fonctionnait très bien. A chaque rechargement la page continuait à afficher automatiquement le pseudo fred. Et c'est normal car la variable est constante, elle s'appellera toujours 'fred'. Le problème ici c'est que la variable n'est pas constante car tout le monde ne s'appelle pas fred et la variable doit donc changer selon l'internaute qui veut se connecter au chat. Il faut donc récupérer cette variable renseignée par l'internaute dans le formulaire de la page1 et la transmettre à la page2 (ça, ça fonctionne bien) et ensuite il faut mémoriser cette variable pour qu'elle apparaisse à chaque envois de message dans le chat (donc après chaque rechargement). C'est là que ça foire. Je n'ai pas changé le code de la page1 mais j'ai changé le code de la page deux du moins le haut. Le voici : <?session_start();if ((isset($_POST['name'])) && ($_POST['name']!="")) $_SESSION['pseudo']=$_POST['name'];else $_SESSION['pseudo']='inconnu';?> Quand je fais ça, il me met inconnu comme pseudo après chaque rechargement. Donc je rentre "fred" dans le champ de la page1, je clique "entrer" et me connecte au chat qui indique bien le pseudo "fred". Ensuite je tape mon premier message "blablabla", clique sur "envois" et hop mon pseudo a changé. Je ne m'appelle plus "fred" mais "inconnu"
Théo B. Posté 30 Avril 2006 Posté 30 Avril 2006 <?session_start();if ((isset($_POST['name'])) && ($_POST['name']!="")) $_SESSION['pseudo']=$_POST['name'];else $_SESSION['pseudo']='inconnu';?> Ca ne peut pas marcher. Essaye plutot : <?session_start();if ((isset($_POST['name'])) && ($_POST['name']!="")) $_SESSION['pseudo']=$_POST['name'];elseif((!@isset($_SESSION['pseudo'])) || ($_SESSION['pseudo']=="") $_SESSION['pseudo']='inconnu';?>
fredrick Posté 2 Mai 2006 Auteur Posté 2 Mai 2006 Merci beaucoup Théo, ton script fonctionne à merveille. Mais dis-moi ? Peux-tu me traduire en français la seconde partie de ton script car je ne la comprend pas. Et comme j'aime apprendre ! En fait c'est le !@isset($_SESSION['pseudo']) qui me chiffonne. Je ne l'ai encore jamais rencontré. Encore merci à toi, Fred
fredrick Posté 2 Mai 2006 Auteur Posté 2 Mai 2006 Pour ceux et celles qui désirent utiliser ce code, sachez que Théo a oublié de fermer la ). Vous devez bien sûr la fermer pour que le code fonctionne. Voici le code corrigé : <?session_start();if ((isset($_POST['name'])) && ($_POST['name']!="")) $_SESSION['pseudo']=$_POST['name'];elseif((!@isset($_SESSION['pseudo'])) || ($_SESSION['pseudo']=="")[COLOR=red])[/COLOR] $_SESSION['pseudo']='inconnu';?>
fredrick Posté 2 Mai 2006 Auteur Posté 2 Mai 2006 Je le refais, ça n'a pas marché. Le revoici lol <?session_start();if ((isset($_POST['name'])) && ($_POST['name']!=""))$_SESSION['pseudo']=$_POST['name'];elseif((!@isset($_SESSION['pseudo'])) || ($_SESSION['pseudo']==""))$_SESSION['pseudo']='inconnu';?> Désolé
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant