Probleme session_start

Fermé
elchico66 Messages postés 981 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 11 juin 2022 - 19 juin 2012 à 16:29
 Utilisateur anonyme - 21 juin 2012 à 15:27
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:

<?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.

5 réponses

Utilisateur anonyme
19 juin 2012 à 17:15
Bonjour

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.
2
le papa, oui mais ça peut être juste une confusion
$_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 :)
0
Utilisateur anonyme
21 juin 2012 à 15:27
C'est justement une erreur très grave, en php, de ne pas avoir en permanence à l'esprit la différence entre les chaînes entre " et les chaînes entre '. D'après mon expérience de CCM, une très grande partie des erreurs vient de ce que les gens n'ont jamais appris les règles élémentaires d'écriture des chaînes en php.

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.
0
elchico66 Messages postés 981 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 11 juin 2022 18
20 juin 2012 à 00:34
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.

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.

=)
0
Utilisateur anonyme
20 juin 2012 à 08:14
salut,

Essaie (pour l'instant ) de faire un plan pour structurer tes idées avant de foncer direct dans le code :p
0
ludo1325 Messages postés 149 Date d'inscription samedi 27 juin 2009 Statut Membre Dernière intervention 23 juin 2015 33
20 juin 2012 à 05:46
<?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.
0
elchico66 Messages postés 981 Date d'inscription dimanche 22 juillet 2007 Statut Membre Dernière intervention 11 juin 2022 18
20 juin 2012 à 14:44
Pourquoi //Traitement du formulaire (non complet !! exemple !!) ? Je ne comprends pas trop.

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 ! =)
0

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
}
0