PROBLEME DE SESSION [MEMORISATION]

Signaler
-
Messages postés
249
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
28 août 2009
-
Bonjour à tous et merci d'avance à tous ceux qui voudront bien se pencher sur mon problème !

Voilà, j'ai une page d'identification classique avec LOGIN et MOT DE PASSE (cf. le script sur les sessions de TORTUE GENIALE).

Si les identifiants sont corrects, nous accédons à la page suivante.
Sur cette page, il y a des requêtes de classement et chaque fois que je clique sur un lien permettant de classer les données, ma session n'est plus valable.

Le problème est que lorsque je demande un tri des données, la page est rechargée avec la variable "tri".
La session n'est alors plus reconnue comme ouverte.

Comment faire ?

Merci à tous pour votre aide !

Voici les deux pages:

index.php3 (identification):
<?
session_start();
if (session_is_registered(variable))
{
echo "Vous êtes déjà identifié ! Quitter";
echo "

";
echo "Retour à la liste des fiches";
exit;
}
else
{
?>
<form method= "post" action="liste_fiches.php3">
<?php $login=$_POST['login']; ?>
----
,
----
Login
<hr noshade width='340' size='1'>
,
<?php echo "" ?>,
----
Mot de passe
<hr noshade width='340' size='1'>
,
<?php echo "" ?>,
----

</form>
<?php
session_unset();
session_destroy();
echo "ID session : ".session_id()."";
}
?>

liste_fiches.php3
<?
include("connexion.php3");
$variable = "";
session_start();
$login=$_POST['login'];
$mdp=$_POST['mdp'];
$mdp=MD5($mdp);
include("connexion.php3");
$requete=mysql_query("SELECT * FROM utilisateur WHERE login_utilisateur='$login'",$connexion);
while ($resultat=mysql_fetch_array($requete))
{
$comparaison = $resultat[mdp_utilisateur];
if($comparaison==$mdp)
{
$variable = "";
session_register("variable");
if (session_is_registered(variable))
{
if ($tri==1) {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY titre_fiche DESC",$connexion);}
else if ($tri==2) {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY date_fiche",$connexion);}
else if ($tri==3) {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY date_fiche DESC",$connexion);}
else if ($tri==4) {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY titre_theme",$connexion);}
else if ($tri==5) {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY titre_theme DESC",$connexion);}
else {$requete2=mysql_query("SELECT * FROM fiches,themes WHERE fiches.theme_fiche=themes.id_theme ORDER BY titre_fiche ASC",$connexion);}
echo ",
tri 1 tri 2,
tri 1 tri 2,
tri 1 tri 2,
, \";
while($table=mysql_fetch_array($requete2,MYSQL_ASSOC))
{
echo \"----
$table[id_fiche],
$table[titre_fiche],
";
$date=$table[date_fiche];
$temps = explode ("-", $date);
$ladate = date ("d-m-Y", mktime(0,0,0,$temps[1],$temps[2],$temps[0]));
echo "$ladate,
$table[titre_theme],
voir, \";
}
echo "
";
echo "

";
echo "Quitter";
exit;
exit;
}
}
}
echo "Votre login ou mot de passe est incorrect ! [Retour à l'identification]";
echo "

";
session_unset();
session_destroy();
echo "ID session : ".session_id()."";
echo "</form>";
?>

8 réponses

Messages postés
369
Date d'inscription
samedi 4 septembre 2004
Statut
Membre
Dernière intervention
20 octobre 2013

Yo,

Met ton script à jour, va faire 1 tour sur les tutos, les commande utilisés du genre session_register() sont obsolètes:

http://www.phpsources.net/tutos.php?cat=sessions&beg=0

Puis faudrais aussi au début de ton fichier liste_fiches.php3
$tri = $_GET['tri'];

@++
Laurent
http://phpsources.net
Messages postés
249
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
28 août 2009

Session_register() n'est plus exploité par PHP (ancien mode)

utilise le tableau superglobal $_SESSION['mavariable']

Pour stocker = $_SESSION['mavariable']="mavaleur"

Pour récupérer : $_SESSION['mavariable']

*************
On a parfois de la chance dans son malheur, moi par exemple, je me suis blessé avec une boite de sparadraps (P.Geluck)

Si vous désirez vous ajouter dans mes contacts MSN, veuillez m'envoyer un message via ce site.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Salut ;-)

Et pense à mettre le session_start() avant tout envoi de html.

Pour ne plus avoir à regarder où placer le session_start(), place ceci : ob_start() tout en haut de ton code et ob_end_flush() tout en bas.

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
249
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
28 août 2009

Petite question comme ca : le ob_flush ne risque-t-il pas de provoquer une surchage du buffer en cas d'appel multiples de la page, je conseille plutot de place <?php session_start() ?> tout en haut de chaque page utilisant les sessions, cela evite le problème et de plus permet de controler rapidement la présence de ce dernier en cas de problèmes...

*************
On a parfois de la chance dans son malheur, moi par exemple, je me suis blessé avec une boite de sparadraps (P.Geluck)

Si vous désirez vous ajouter dans mes contacts MSN, veuillez m'envoyer un message via ce site.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
Mais non le buffer se vide automatiquement et tu as une limite de mémoire allouée par script.

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
249
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
28 août 2009

D'accord mais je me posait la question en cas de nombre de visiteur tres important :-)

*************
On a parfois de la chance dans son malheur, moi par exemple, je me suis blessé avec une boite de sparadraps (P.Geluck)

Si vous désirez vous ajouter dans mes contacts MSN, veuillez m'envoyer un message via ce site.
Messages postés
9433
Date d'inscription
mardi 9 octobre 2001
Statut
Membre
Dernière intervention
13 avril 2007
8
non, tu as même une amélioration des perfs :-)

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
Messages postés
249
Date d'inscription
mardi 24 octobre 2000
Statut
Membre
Dernière intervention
28 août 2009

C'est bon a savoir ;-)

*************
On a parfois de la chance dans son malheur, moi par exemple, je me suis blessé avec une boite de sparadraps (P.Geluck)

Si vous désirez vous ajouter dans mes contacts MSN, veuillez m'envoyer un message via ce site.