Probleme session_start
elchico66
Messages postés
981
Date d'inscription
Statut
Membre
Dernière intervention
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
Je poste ce sujet qui est un peux complexe à poser par écrit , je vais donc faire de mon mieux pour que vous puissiez me comprendre.
Je suis entrain de créer un mini chat sans inscription mais avec un formulaire de connexion sur ma page "index.php" (voyez mon code). Je voudrais que ces informations soient enregistrées le temps de la connexion.
Bon, jusque là vous me suivez ?
Alors, je voudrais savoir le code qui enregistre les informations tout le long de la navigation du membre. C'est avec session_start, et j'ai suivi ma logique en mettant une variable (voir code index.php). Ex: $_SESSION['pseudo'] = '$pseudo'; cela ne marche pas.
Ma question est: Comment faire pour que le membre garde ses informations tout le long de sa connexion ?
Je ne comprends plus rien, je suis entrain d'apprendre le PHP via le SDZ depuis 3 semaines et je veux m'exercer, donc je fais ce mini-chat. Soyez indulgent . (Dans le cours je ne trouve pas comment procéder)
Ensuite, une fois la connexion faite et les informations enregistrés je souhaiterais me rediriger sur ma page "index.php", mais à la place du formulaire de connexion, y afficher les infos du membre (du style: Bienvenu Gile62) . Je sais me rediriger avec header('Location: index.php');
Voilà, si quelqu'un pourrais m'aider ça serais vraiment sympa.
Voici mes codes:
Cordialement.
Je poste ce sujet qui est un peux complexe à poser par écrit , je vais donc faire de mon mieux pour que vous puissiez me comprendre.
Je suis entrain de créer un mini chat sans inscription mais avec un formulaire de connexion sur ma page "index.php" (voyez mon code). Je voudrais que ces informations soient enregistrées le temps de la connexion.
Bon, jusque là vous me suivez ?
Alors, je voudrais savoir le code qui enregistre les informations tout le long de la navigation du membre. C'est avec session_start, et j'ai suivi ma logique en mettant une variable (voir code index.php). Ex: $_SESSION['pseudo'] = '$pseudo'; cela ne marche pas.
Ma question est: Comment faire pour que le membre garde ses informations tout le long de sa connexion ?
Je ne comprends plus rien, je suis entrain d'apprendre le PHP via le SDZ depuis 3 semaines et je veux m'exercer, donc je fais ce mini-chat. Soyez indulgent . (Dans le cours je ne trouve pas comment procéder)
Ensuite, une fois la connexion faite et les informations enregistrés je souhaiterais me rediriger sur ma page "index.php", mais à la place du formulaire de connexion, y afficher les infos du membre (du style: Bienvenu Gile62) . Je sais me rediriger avec header('Location: index.php');
Voilà, si quelqu'un pourrais m'aider ça serais vraiment sympa.
Voici mes codes:
<?php session_start(); $_SESSION['pseudo'] = '$pseudo'; $_SESSION['region'] = '$region'; $_SESSION['age'] = '$age'; $_SESSION['sexe'] = '$sexe'; ?> <!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=iso-8859-1" /> <title>Chatoo</title> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div id="en_tete"> <!--------------------------- EN TETE ---------------------------> <h1> Chatoo </h1> <h3> Le site mini du chat </h3> <div class="logo_titre"><img src="images/icon_bulles.png" /></div> </div> <!-------------------------------------- FIN EN TETE -----------------------> <div id="menu_principal"><!-------------------- MENU HORIZONTALE ------------------> <ul> <li id="selected"><a href="index.php" > Accueil </a></li> <li><a href="salons_chat.php"> Salons </a></li> <li><a href="contact.php">Contact </a></li> </ul> </div><!--------------------------------------- FIN MENU HORIZONTALE -------------> <div id="connexion"><!------------------------- CONNEXION ------------------------> <form method="post" action="connexion.php"> <h2>Connexion</h2> <p> <label> Entrer votre pseudo : </label><input type="text" name="pseudo" id="pseudo" /><br /> <label> Ta région : </label><select name="region" id="region"> <option value="alsace">Alsace</option> <option value="aquitaine">Aquitaine</option> <option value="Auvergne">Auvergne</option> <option value="Basse-Normandie">Basse-Normandie</option> <option value="Bourgogne">Bourgogne</option> <option value="Bretagne">Bretagne</option> <option value="Centre">Centre</option> <option value="Champagne-Ardenne">Champagne-Ardenne</option> <option value="Corse">Corse</option> <option value="Franche-Comté">Franche-Comté</option> <option value="Haute-Normandie">Haute-Normandie</option> <option value="Ile-de-France">Ile-de-France</option> <option value="Languedoc-Roussillon">Languedoc-Roussillon</option> <option value="Limousin">Limousin</option> <option value="Lorraine">Lorraine</option> <option value="Midi-Pyrénées">Midi-Pyrénées</option> <option value="Nord-Pas-de-Calais">Nord-pas-de-Calais</option> <option value="Pays de la Loire">Pays de la Loire</option> <option value="Picardie">Picardie</option> <option value="Poitou-Charentes">Poitou-Charentes</option> <option value="Provence-Alpes-Côte d'Azur">Provence-Alpes-Côte d'Azur</option> <option value="Rhône-Alpes">Rhône-Alpes</option> <option ><hr /></option> <option value="Guadeloupe">Guadeloupe</option> <option value="Martinique">Martinique</option> <option value="Guyane">Guyane</option> <option value="Réunion">Réunion</option> </select> <br /> <label> Entrer votre âge : </label><input type="text" name="age" id="age" /><br /> <label>Vous êtes :</label> <input type="radio" name="sexe" id="femme" value="une Femme" /><label for="femme"> Une femme</label> <input type="radio" name="sexe" id="homme" value="un homme" /><label for="homme">Un Homme</label><br /> <input type="submit" value="Ok" id="bouton_ok" /> </p> </form> </div><!------------------------------------------- FIN CONNEXION --------------------> <hr /> <div id="corps"><!--------------------------------- CORPS ----------------------------> <p> <strong>Chatoo</strong>, le mini site de chat en toute simplicité et sans inscription. Parlez, partagez, liez vous d'amitié en toute liberté.</p> </div><!------------------------------------------- FIN CORPS ------------------------> </body> </html>
<?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=iso-8859-1" /> <title>Connexion</title> </head> <body> <p>Votre pseudo est <?php echo htmlspecialchars($_POST['pseudo']); ?> , vous habitez dans la région du <?php echo htmlspecialchars($_POST['region']); ?> , vous avez <?php echo htmlspecialchars($_POST['age']); ?> ans et vous etes <?php echo htmlspecialchars($_POST['sexe']); ?></p> <?php header('Location: index.php'); ?> </body> </html>
Cordialement.
A voir également:
- Probleme session_start
- &Quot;session_start" et "header()" ✓ - Forum Programmation
- Une session php a été créée par un appel de fonction session_start(). cela interfère avec l’api rest et les requêtes de boucle (loopback). la session devrait être fermée par session_write_close() avant d’effectuer toute requête http. - Forum Programmation
5 réponses
Bonjour
Quand je vois ça...
Je ne lis pas la suite...
Sais-tu quelle différence il y a entre '$pseudo' et $pseudo en php ?
$pseudo, c'est une variable, qui peut contenir divers trucs et machins, enfin, je penses que tu sais ce que c'est.
Mais '$pseudo' n'a aucun rapport avec la variable $pseudo. C'est juste une chaîne constituée des 7 caractères $,p,s,e,u,d, et o.
Je crois que ça explique bien des choses.
Quand je vois ça...
$_SESSION['pseudo'] = '$pseudo';
Je ne lis pas la suite...
Sais-tu quelle différence il y a entre '$pseudo' et $pseudo en php ?
$pseudo, c'est une variable, qui peut contenir divers trucs et machins, enfin, je penses que tu sais ce que c'est.
Mais '$pseudo' n'a aucun rapport avec la variable $pseudo. C'est juste une chaîne constituée des 7 caractères $,p,s,e,u,d, et o.
Je crois que ça explique bien des choses.
J'apprends... j'ai bien saisi la différence maintenant. Je tacherais ne plus faire cette erreur, désolé au codeur confirmé. :/
J'ai opté pour ce code après 6h de réflexion et de test.
Mais j'ai toujours le formulaire qui me revient et non le message de bienvenue.
Pourquoi? Que dois-je changer ?
Merci de votre compréhension.
=)
J'ai opté pour ce code après 6h de réflexion et de test.
if(isset($_SESSION['pseudo'])) { echo 'Bienvenue a toi ' . htmlspecialchars($_SESSION['pseudo'] = $_POST['pseudo']) . ' !'; } else { ?> <div id="connexion"><!------------------------- CONNEXION ------------------------> <form method="post" action="index.php"> <h2>Connexion</h2> <p> <label> Entrer votre pseudo : </label><input type="text" name="pseudo" id="pseudo" /><br /> <label> Ta région : </label><select name="region" id="region"> <option value="alsace">Alsace</option> <option value="aquitaine">Aquitaine</option> <option value="Auvergne">Auvergne</option> <option value="Basse-Normandie">Basse-Normandie</option> <option value="Bourgogne">Bourgogne</option> <option value="Bretagne">Bretagne</option> <option value="Centre">Centre</option> <option value="Champagne-Ardenne">Champagne-Ardenne</option> <option value="Corse">Corse</option> <option value="Franche-Comté">Franche-Comté</option> <option value="Haute-Normandie">Haute-Normandie</option> <option value="Ile-de-France">Ile-de-France</option> <option value="Languedoc-Roussillon">Languedoc-Roussillon</option> <option value="Limousin">Limousin</option> <option value="Lorraine">Lorraine</option> <option value="Midi-Pyrénées">Midi-Pyrénées</option> <option value="Nord-Pas-de-Calais">Nord-pas-de-Calais</option> <option value="Pays de la Loire">Pays de la Loire</option> <option value="Picardie">Picardie</option> <option value="Poitou-Charentes">Poitou-Charentes</option> <option value="Provence-Alpes-Côte d'Azur">Provence-Alpes-Côte d'Azur</option> <option value="Rhône-Alpes">Rhône-Alpes</option> <option ><hr /></option> <option value="Guadeloupe">Guadeloupe</option> <option value="Martinique">Martinique</option> <option value="Guyane">Guyane</option> <option value="Réunion">Réunion</option> </select> <br /> <label> Entrer votre âge : </label><input type="text" name="age" id="age" /><br /> <label>Vous êtes :</label> <input type="radio" name="sexe" id="femme" value="une Femme" /><label for="femme"> Une femme</label> <input type="radio" name="sexe" id="homme" value="un homme" /><label for="homme">Un Homme</label><br /> <input type="submit" value="Ok" id="bouton_ok" /> </p> </form> </div><!------------------------------------------- FIN CONNEXION --------------------> <?php } ?>
Mais j'ai toujours le formulaire qui me revient et non le message de bienvenue.
Pourquoi? Que dois-je changer ?
Merci de votre compréhension.
=)
<?php //On démarre la Session session_start(); //Traitement du formulaire (non complet !! exemple !!) //On vérifie que le ou les champ(s) existe et qu'il(s) ne sont pas vide if(isset($_POST['pseudo']) && !empty ($_POST['pseudo'])) { //On enregistre le le champs pseudo dans une session $_SESSION['pseudo'] = $_POST['pseudo']; //One affiche le message echo 'Bienvenue a toi ' . htmlspecialchars($_SESSION['pseudo']) . ' !'; } else { //Sinon on affiche le formulaire ?> <div id="connexion"><!------------------------- CONNEXION ------------------------> <form method="post" action="index.php"> <h2>Connexion</h2> <p> <label> Entrer votre pseudo : </label><input type="text" name="pseudo" id="pseudo"><br /> <label> Ta région : </label><select name="region" id="region"> <option value="alsace">Alsace</option> <option value="aquitaine">Aquitaine</option> <option value="Auvergne">Auvergne</option> <option value="Basse-Normandie">Basse-Normandie</option> <option value="Bourgogne">Bourgogne</option> <option value="Bretagne">Bretagne</option> <option value="Centre">Centre</option> <option value="Champagne-Ardenne">Champagne-Ardenne</option> <option value="Corse">Corse</option> <option value="Franche-Comté">Franche-Comté</option> <option value="Haute-Normandie">Haute-Normandie</option> <option value="Ile-de-France">Ile-de-France</option> <option value="Languedoc-Roussillon">Languedoc-Roussillon</option> <option value="Limousin">Limousin</option> <option value="Lorraine">Lorraine</option> <option value="Midi-Pyrénées">Midi-Pyrénées</option> <option value="Nord-Pas-de-Calais">Nord-pas-de-Calais</option> <option value="Pays de la Loire">Pays de la Loire</option> <option value="Picardie">Picardie</option> <option value="Poitou-Charentes">Poitou-Charentes</option> <option value="Provence-Alpes-Côte d'Azur">Provence-Alpes-Côte d'Azur</option> <option value="Rhône-Alpes">Rhône-Alpes</option> <option ><hr /></option> <option value="Guadeloupe">Guadeloupe</option> <option value="Martinique">Martinique</option> <option value="Guyane">Guyane</option> <option value="Réunion">Réunion</option> </select> <br /> <label> Entrer votre âge : </label><input type="text" name="age" id="age" /><br /> <label>Vous êtes :</label><input type="radio" name="sexe" id="femme" value="une Femme" /> <label for="femme"> Une femme</label><input type="radio" name="sexe" id="homme" value="un homme" /><label for="homme">Un Homme</label><br /> <input type="submit" value="Ok" id="bouton_ok" /> </p> </form> </div><!------------------------------------------- FIN CONNEXION --------------------> <?php } ?>
Si tu veut plus d'infos complexe à propos de autre chose, et que tu dispose de skype, envoi le moi en mp sur le forum ^^" si tu veut.
Pourquoi //Traitement du formulaire (non complet !! exemple !!) ? Je ne comprends pas trop.
Voici mon code entier :
Qu'elles sont les modifications à faire ?
merci ! =)
Voici mon code entier :
<?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=iso-8859-1" /> <title>Chatoo</title> <link rel="stylesheet" type="text/css" href="css/style.css" /> </head> <body> <div id="en_tete"> <!--------------------------- EN TETE ---------------------------> <h1> <span style="font-style:italic;"> C</span>hat<span style="color:#000000">o</span><span style="color:#F2C700; font-weight:bold">o</span> </h1> <h3> Le site mini du chat </h3> <div class="logo_titre"><img src="images/icon_bulles.png" /></div> </div> <!-------------------------------------- FIN EN TETE -----------------------> <div id="menu_principal"><!-------------------- MENU HORIZONTALE ------------------> <ul> <li id="selected"><a href="index.php" > Accueil </a></li> <li><a href="salons_chat.php"> Salons </a></li> <li><a href="contact.php">Contact </a></li> </ul> </div><!--------------------------------------- FIN MENU HORIZONTALE -------------> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=chatoo', 'root', ''); } catch(Exception $e) { die('erreur : '.$e->getMessage()); } $req = $bdd->prepare('INSERT INTO connexion_chat(pseudo, region, age, sexe) VALUE(?, ?, ?, ?)'); $req->execute(array( $_POST['pseudo'], $_POST['region'], $_POST['age'], $_POST['sexe'])); if(isset($_POST['pseudo']) && !empty ($_POST['pseudo'])) { //On enregistre le le champs pseudo dans une session $_SESSION['pseudo'] = $_POST['pseudo']; //One affiche le message echo 'Bienvenue a toi ' . htmlspecialchars($_SESSION['pseudo']) . ' !'; } else { //Sinon on affiche le formulaire ?> <div id="connexion"><!------------------------- CONNEXION ------------------------> <form method="post" action="index.php"> <h2>Connexion</h2> <p> <label> Entrer votre pseudo : </label><input type="text" name="pseudo" id="pseudo" /><br /> <label> Ta région : </label><select name="region" id="region"> <option value="alsace">Alsace</option> <option value="aquitaine">Aquitaine</option> <option value="Auvergne">Auvergne</option> <option value="Basse-Normandie">Basse-Normandie</option> <option value="Bourgogne">Bourgogne</option> <option value="Bretagne">Bretagne</option> <option value="Centre">Centre</option> <option value="Champagne-Ardenne">Champagne-Ardenne</option> <option value="Corse">Corse</option> <option value="Franche-Comté">Franche-Comté</option> <option value="Haute-Normandie">Haute-Normandie</option> <option value="Ile-de-France">Ile-de-France</option> <option value="Languedoc-Roussillon">Languedoc-Roussillon</option> <option value="Limousin">Limousin</option> <option value="Lorraine">Lorraine</option> <option value="Midi-Pyrénées">Midi-Pyrénées</option> <option value="Nord-Pas-de-Calais">Nord-pas-de-Calais</option> <option value="Pays de la Loire">Pays de la Loire</option> <option value="Picardie">Picardie</option> <option value="Poitou-Charentes">Poitou-Charentes</option> <option value="Provence-Alpes-Côte d'Azur">Provence-Alpes-Côte d'Azur</option> <option value="Rhône-Alpes">Rhône-Alpes</option> <option ><hr /></option> <option value="Guadeloupe">Guadeloupe</option> <option value="Martinique">Martinique</option> <option value="Guyane">Guyane</option> <option value="Réunion">Réunion</option> </select> <br /> <label> Entrer votre âge : </label><input type="text" name="age" id="age" /><br /> <label>Vous êtes :</label> <input type="radio" name="sexe" id="femme" value="une Femme" /><label for="femme"> Une femme</label> <input type="radio" name="sexe" id="homme" value="un homme" /><label for="homme">Un Homme</label><br /> <input type="submit" value="Ok" id="bouton_ok" /> </p> </form> </div><!------------------------------------------- FIN CONNEXION --------------------> <?php } ?> <hr /> <div id="corps"><!--------------------------------- CORPS ----------------------------> <p> <strong>Chatoo</strong>, le mini site de chat en toute simplicité et sans inscription. Parlez, partagez, liez vous d'amitié en toute liberté.</p> </div><!------------------------------------------- FIN CORPS ------------------------> </body> </html>
Qu'elles sont les modifications à faire ?
merci ! =)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Idéalement, il faut avant tout traiter les données non-visibles, comme le traitement du $_POST, de $_SESSION, ...
<?php
session_start();
if(!empty ($_POST['pseudo'])) // isset( $_POST['pseudo'] ) ne servirait à rien ici
{
// $_POST n'est pas vide, on le traite
try
{
$bdd = new PDO('mysql:host=localhost;dbname=chatoo', 'root', '');
}
catch(Exception $e)
{
die('erreur : '.$e->getMessage());
}
$req = $bdd->prepare('INSERT INTO connexion_chat(pseudo, region, age, sexe) VALUE(?, ?, ?, ?)');
$req->execute(array(
$_POST['pseudo'],
$_POST['region'],
$_POST['age'],
$_POST['sexe']));
$_SESSION['pseudo'] = $_POST['pseudo'];
}
// Les données non-visibles ont été traitées, maintenant faut voir ce qu'on doit afficher
if(!empty( $_SESSION['pseudo'] ))
{
echo 'Bienvenue a toi ' . htmlspecialchars($_SESSION['pseudo']) . ' !';
}else{
// Pas de $_SESSION['pseudo'], on affiche le formulaire de connexion
}
<?php
session_start();
if(!empty ($_POST['pseudo'])) // isset( $_POST['pseudo'] ) ne servirait à rien ici
{
// $_POST n'est pas vide, on le traite
try
{
$bdd = new PDO('mysql:host=localhost;dbname=chatoo', 'root', '');
}
catch(Exception $e)
{
die('erreur : '.$e->getMessage());
}
$req = $bdd->prepare('INSERT INTO connexion_chat(pseudo, region, age, sexe) VALUE(?, ?, ?, ?)');
$req->execute(array(
$_POST['pseudo'],
$_POST['region'],
$_POST['age'],
$_POST['sexe']));
$_SESSION['pseudo'] = $_POST['pseudo'];
}
// Les données non-visibles ont été traitées, maintenant faut voir ce qu'on doit afficher
if(!empty( $_SESSION['pseudo'] ))
{
echo 'Bienvenue a toi ' . htmlspecialchars($_SESSION['pseudo']) . ' !';
}else{
// Pas de $_SESSION['pseudo'], on affiche le formulaire de connexion
}
$_SESSION['pseudo'] = "$pseudo"; (guillemet double) marche très bien et $pseudo n'est pas considéré comme une chaine de caractère
donc ce n'est pas une erreur très grave :)
Je n'avais d'ailleurs pas dit que c'était une erreur très grave. J'ai simplement dit que j'arrêtais de lire là.
Et si j'arrête de lire, c'est simplement parce que j'ai trouvé une erreur qui explique tellement de choses qu'il faut commencer par la corriger avant d'analyser le reste.