Problème avec les sessions php

Fermé
aneantisseur Messages postés 384 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 - 22 mars 2010 à 17:23
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 - 22 mars 2010 à 19:13
Bonjour, je fais appel à la communauté informatique car j'ai un problème avec mes sessions php bien que je soit codeur depuis 1an.
Bon, voilà le problème : Donc je déclare mes variables de session dans un fichier inclu dans toute les pages. $_STATUT correpond au statut du membre : 0 -> invité, 1 -> membre, 3 -> modo
Donc je me connecte, mais la variable $_STATUT, qui définit donc où l'utilisateur peut aller, est remise a 0 après un rafraîchissement de la page. Voici le code de mon fichier qui déclare les variables de session :
<?php
include("config.php");

$_STATUT = false;

mysql_connect($database_location, $database_user, $database_pass);
mysql_select_db($database_name);


if (isset($_POST['login']) AND isset($_POST['motdepasse']) AND isset($_POST['envoyer']))
{	
$_SESSION['pseudo'] = $_POST['login'];
$_SESSION['password'] = $_POST['motdepasse'];
}

if (isset($_SESSION['pseudo']) AND isset($_SESSION['password']))
{
$verif_pseudo = $_SESSION['pseudo'];
$HEAD_verif2_brut = mysql_query("SELECT * FROM comptes WHERE pseudo='$verif_pseudo'");
while ($HEAD_verif2 = mysql_fetch_array($HEAD_verif2_brut))
{
if ($HEAD_verif2['password'] == md5($_SESSION['password']))
{
			
$_STATUT = "1";
$_SESSION['id'] = $HEAD_verif2['ID'];
$_SESSION['pseudo'] = $HEAD_verif2['pseudo'];
$_SESSION['password'] = $HEAD_verif2['password'];
$_SESSION['email'] = $HEAD_verif2['email'];
$_SESSION['image'] = "../imagesmembres/".$_SESSION['id'].".jpg";
mysql_query("UPDATE comptes SET IP='".$_SERVER['REMOTE_ADDR']."', timestamp=".time()." WHERE pseudo='".$verif_pseudo."'")or die (mysql_error());
$_SESSION['ip'] = $HEAD_verif2['IP'];
}
else $_STATUT = "0";
}
	
}
?>


Merci de bien vouloir m'aider.
A voir également:

12 réponses

Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 mars 2010 à 17:40
mets session_start() avant la moindre ligne de code^^ en haut des headers donc^^ ça devrait fonctionner.
0
aneantisseur Messages postés 384 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
22 mars 2010 à 17:41
je le sais ca, mon header est inclut dans le fichier skinh.php qui est lui même inclut aux pages php. C'est dans ces pages php qui ne seront inclues nul part que je met les session_start();
en gros, les fichiers includes ne servent qu'a définir des varaibles ou l'affichage, mais pas les session_start.
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 mars 2010 à 17:47
donc si j'comprends bien, c'est pas bon^^ tu dois le mettre en haut de toutes les pages qui ont besoin de la session^^ avant la moindre variable et de préférence avant tes headers html, faut pas le mettre en haut de tes scripts, mais bien en haut de tes pages^^.

<?php
session_start();
$destroy='';
?>
<!doctype >
<html>
<header>
</header>
<body>
<?php
include_once('skinhp.php');
?>
</body>
</html>


par exemple^^
0
aneantisseur Messages postés 384 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
22 mars 2010 à 17:55
ba en fait je fais ca :
fichier header -> définit les variables $_SESSION, pas de session_start
fichier skinh -> défini le skin en foncton de la valeur de $_STATUT, le header est inclut, pas de session_start
fichier chat.php -> présence du fichier skinh.php, donc header.php, présence de session_start(); avant l'include de skinh.php

exemple :
<?php session_start(); ?>
<?php
include("includes/skinh.php");
include("includes/skinb.php");
?>


J'ai toujours travaillé comme ca, et c'est la première fois que ca me fait ca
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aneantisseur Messages postés 384 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
22 mars 2010 à 18:06
quelqu'un peut m'aider plz ?
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 mars 2010 à 18:14
Ca m'a l'air d'être le bazard tout ça^^
Tu comprendras mieux la logique de ton travail que moi, donc bon^^
Tu utilise plusieurs fichiers pour conçevoir ta page, il y en a forcément un qui n'a aucun parent et qui contient les éléments qui n'ont pas de parents eux aussi en php. En haut de ce fichier, tu places ton session_start. Pour m'assurer qu'il n'y a aucun problème, je met le session_start sur toutes les pages d'un projet qui nécessite des sessions.

A la relecture, la place du session start est probablement en première ligne du fichier skinh, donc avant l'appel de header, et avant l'attribution de la moindre variable. Tente et dis nous
0
aneantisseur Messages postés 384 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
22 mars 2010 à 18:20
pas bête ton idée, je test et je te dis quoi
0
aneantisseur Messages postés 384 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
22 mars 2010 à 18:22
Non, ca ne marche, pas, ca me met toujours le problème de départ
0
aneantisseur Messages postés 384 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
22 mars 2010 à 18:41
un peu d'aide plz ?
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 mars 2010 à 18:45
tu peux toucher ton php.ini?
0
aneantisseur Messages postés 384 Date d'inscription dimanche 8 mars 2009 Statut Membre Dernière intervention 13 juillet 2018 18
22 mars 2010 à 18:49
C'est pas le php.ini car j'ai 3 sites en local et il n'y a que le dernier qui ne marche pas
0
Smoking bird Messages postés 870 Date d'inscription mardi 11 mars 2008 Statut Membre Dernière intervention 10 juillet 2011 58
22 mars 2010 à 19:13
j'te proposerais bien de jeter un oeil rapide sur du code brute, mais j'ai pas le temps de fouiller en profondeur :s je m'emmêle dans du SQL actuellement... croisons les doigts pour qu'un pèlerin bienveillant passe^^
0