Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/02/2011, 12h59   #1
Membre du Club
 
Inscription : février 2007
Messages : 206
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 206
Points : 43
Points : 43
Par défaut probleme de variable de session

Bonjour à tous, mon problème va vous sembler tres simple a résoudre.
J'ai 2 pages: index.php et profil.php.

On se connecte sur la page index, et on arrive sur la page profil, ou on peut modifier ses information personnelles. Donc dans l'index je fais un session_start() et je crée $_SESSION["username"] qui contient le nom de la personne connectée, pour aller rechercher ses informations directement quand il arrive sur son profil. Mon probleme et que quand j'arrive sur le profil, php ne reconnait pas cette variable de session, il me dit qu'elle n'existe pas et que la session n'est pas démarrée ! Du coup je ne comprend pas trop, je pensais que les sessions restaient ouvertes entre les différentes pages ? Voici le code (je n'affiche que ce qui vous intéresse:

index.php:

Code :
1
2
3
4
5
6
7
8
9
10
11
<?php
session_start();
	if(isset($_POST["login"], $_POST["passwd"]) && isRegistered($_POST["login"], $_POST["passwd"])) {
		$_SESSION['isConnected'] = true;
		$_SESSION['username'] = $_POST["login"];
		?>
		<div class="menu_header">
			<a href="php/pages/prestations.php" title="">Prestations</a>
			<a href="php/pages/profil.php" title="">Profil</a>
			<a href="#" title="">Contactez-nous</a>
		</div>
profil.php

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<style type="text/css">
<!--
@import url("ressources/css/profil.css");
-->
</style>
 
<?php
$connexion = new PDO('mysql:host='.$PARAM_hote.';port='.$PARAM_port.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe, array(PDO::ATTR_PERSISTENT => true, PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8', PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
 
	if(isset($_SESSION['isConnected'])) echo "ok";
	else echo "wtf"; //et bien sur c'est wtf qui s'affiche a l'exécution
 
	$username = $_SESSION['username']; //Notice: Undefined variable: _SESSION
 
	$query = mysql_query("select * from users where name = '$username'");
	$data = mysql_fetch_array($query);
 
?>
 
<div id="profil">
	<!--h1>Modifiez vos informations personnelles</h1-->
	<form action="#" method="post" id="profilGlobal">
 
	<fieldset>
		<legend>Connexion</legend>
			<label for="uname">Nom d'utilisateur<em>*</em></label> <input id="uname" type="text" name="uname" value= <?php echo $data["name"]; ?> />
			<label for="email">Email<em>*</em></label><input id="email" type="text" name="email" value= <?php echo $data["email"]; ?> size="50" />
			<label for="fname">Prenom</label> <input id="fname" type="text" name="fname" value= <?php echo $data["firstname"]; ?> />
			<label for="lname">Nom</label> <input id="lname" type="text" name="lname" value= <?php echo $data["lastname"]; ?> />
	</fieldset>
 
	<fieldset>
		<legend>Informations de l'utilisateur</legend>
			<label>Genre</label>
			<label for="radiohomme">Homme</label><input name="homme" id="radiohomme" value= <?php echo ($data["gender"] == "homme"); ?> type="radio" />
			<label for="radiofemme">Femme</label><input name="femme" id="radiofemme" value= <?php echo ($data["gender"] == "homme"); ?> type="radio" />
 
			<label for="country">Country </label> <input id="country" type="text" name="country" value=<?php echo $data["lastname"]; ?> />
			<label for="city">City </label> <input id="city" type="text" name="city" value=<?php echo $data["lastname"]; ?> />
	</fieldset>
 
	<fieldset>
		<legend>J'accepte de recevoir par mail</legend>
			<div class="controlset">
				<label for="newsletter">La newsletter Morphocouple</label>
				<input name="approved" id="newsletter" value= <?php echo ($data["receivempnewsletter"] == 1); ?> checked type="checkbox" />
				<label for="offres_partenaires">Les offres de nos partenaires</label>
				<input name="pending" id="offres_partenaires" value= <?php echo ($data["receivepartnersnewsletter"] == 1); ?> type="checkbox" />
			</div>			
	</fieldset>
 
	<div class="buttonrow">
		<input type="submit" value="Save" class="button" />
		<input type="button" value="Discard" class="button" />
	</div>
	</form>
</div>
Voila, n'hésitez pas à m'appoter vos lumières
scheme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2011, 13h06   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 014
Points : 5 014
Il faut mettre session_start dans toutes les pages qui ont besoin d'accéder aux informations de session. Vu que la plupart des pages d'un site internet ont besoin de cette information, tu peux mettre ton session_start dans un script init.php par exemple que tu inclues (ou requiert) sur tous tes autres scripts.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h49.


 
 
 
 
Partenaires

Hébergement Web