Perte de session

Signaler
Messages postés
6
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2004
-
Messages postés
6
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2004
-
Bonjour,

J'utilise $_SESSIONS pour stocker les infos des utilisateurs
et quand ils suivent un lien HTML basic :

echo "editer\n";

je n'ai plus acces a $_SESSIONS dans la nouvelle page

et isset($_SESSIONS) renvoie false.

Je ne comprend pas du tout la, $_SESSIONS n'est-il pas censé suivre un utilisateur sur les differentes pages ?

Merci a la bonne ame qui voudra bien me repondre

Germaine tit Goutte

11 réponses

Messages postés
2268
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
13 septembre 2013
3
Salut!
1) Tu peux nous montrer comme tu déclare ta variable de session?

2) Tu met bien le session_start(); en haut de chaque page?

3) Tu acceptes les cookies?

@++

R@f

www.allpotes.ch: Photos, humour, vidéos, gags, ...

"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut ;-)

Il faut que le session_start(); figure en haut de chaque page où doivent intervenir les sessions.

Ensuite pour récolter ou attribuer une valeur à une session :

$_SESSION['valeur']='test';
$variable=$_SESSION['valeur']; //variable vaut test;

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
6
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2004

Merci beaucoup de me repondre si vite et desole pour le temps de latence, j'ai encore essayé 15000 trucs ...

Le coup du session_start(); en haut des pages a marché,
ma variable $_SESSION existe, ca c'est deja un point.

mais je n'arrive toujours pas a recuperer mon champ "id", l'identifiant de connection.

voila ce que je fais :

je me connecte comme ca :

session_start();

if (!($id = mysql_connect("$server", "$user", "$pass")))
die ("Can not connect to the Database \n");

j'ai donc une variable id numero de connection de l'utilisateur.

plus loin :

$_SESSIONS["id"] = $id;

encore plus loin :

require ("eleve.php");

dans cette page, je recupere bien mon id, mais qd je passe sur mon lien :

echo "editer\n";

J'ai dans cette derniere page acces a $_SESSION (grace au session_start(); de vos conseils) mais la je fais :

session_start();

$tmp=$_SESSION["id"];

if (! isset($tmp))
echo "TEMP n'esiste pas!
");

et temp n'existe pas ...

si vous avez une idee

Germaine tit Goutte
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Pour savoir si une variable de session existe tu utilises isset :

if(isset($_SESSION['valeur']))
{
//$_SESSION['valeur'] existe
}

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
6
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2004

oui,

c'est a peu pres ce que je fais avec mon :

$tmp=$_SESSION["id"];

if (! isset($tmp))
echo "TEMP n'esiste pas!
");

j'ai essayé avec isset($_SESSION["id"])

et meme resultat.

est-ce c'est quand je fais

$_SESSIONS["id"] = $id;

qu'il y a un probleme ?

Germaine tit Goutte
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Je ne pense pas, pourrais-tu donner ton code (tout du moins la partie qui cloche) pour qu'on puisse t'aider ?

a ++
http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
6
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2004

ok :
desole pour la longueur :

voici check.php qui est apelle quand on clique sur le bouton connection du formulaire de l'index :

<?php

$current_user = $HTTP_POST_VARS["login"];
$current_password = $HTTP_POST_VARS["pass"];

session_start();

if (!($id = mysql_connect("$server", "$user", "$passwd")))
die ("Can not connect to the Database \n");

// Selection de la base

if (!($db = mysql_select_db("apm", $id)))
die ("unknown database \n");$query "SELECT * FROM utilisateur WHERE login '$current_user'";
$result_query = mysql_query( $query );
$nb_col = mysql_num_rows( $result_query );
$un_element = mysql_fetch_array( $result_query );


/*
Verification du mot de pass de l'utilisateur
*/
if ($un_element["password"] != $current_password || $nb_col == 0)
die("Authentification failed");

$_SESSIONS["id"] = $id;
$_SESSION["login"] = $curent_user;

if (/*est une personne de la communication*/)
require ("com.php");
else
require("eleve.php");

?>

ensuite on passe dans com.php par le require ("com.php"); :

<?php

session_start();

...

if (! isset($_SESSION["id"]))
echo "SESSION["id"] n'existe pas";
else
echo"SESSION["id"] EXISTE";

// => SESSION["id"] EXISTE

echo "$type du $tmp_date à $tmp_lieu : $tmp_desc \n";

...

?>

dans ce fichier toute les variables de sessions sont accessibles

et dans Com_edit.php (en passant par le lien HTML) :

<?php

session_start();

...

if (! isset($_SESSION["id"]))
echo "SESSION["id"] n'existe pas";
else
echo"SESSION["id"] EXISTE";

...

?>

=> SESSION["id"] n'existe pas

voila, j'espere qu'il y en a suffisement, j'ai sabré sévère tout ce qui n'était pas utile dans les deux derniers fichiers.

Germaine tit Goutte
Messages postés
6
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2004

Desole,

je me cache sous dix metres de terre :

$_SESSIONS["id"] = $id;
^
if (! isset($_SESSION["id"]))
^^^

Germaine tit Goutte
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Déjà pour ça :

if (/*est une personne de la communication*/)
require ("com.php");
else
require("eleve.php");

remplace par des includes (un require est inclus même si tu l'inclus dans une condition)

Ensuite $_HTTP_POST_VARS est déprécié, tu dois utiliser $_POST['variable'];

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Déjà pour ça :

if (/*est une personne de la communication*/)
require ("com.php");
else
require("eleve.php");

remplace par des includes (un require est inclus même si tu l'inclus dans une condition)

Ensuite $_HTTP_POST_VARS est déprécié, tu dois utiliser $_POST['variable'];

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
6
Date d'inscription
lundi 13 septembre 2004
Statut
Membre
Dernière intervention
13 septembre 2004

Merci a vous deux,

je vais me prendre un bon cafe,
et avec un peu de chance je ne polluerai plus ce forum ...

Germaine tit Goutte