PROBLEME DE SESSION [MEMORISATION]

- 7 oct. 2004 à 14:24
magidev Messages postés 249 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 28 août 2009 - 7 oct. 2004 à 22:57
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

LaurentKOogar Messages postés 369 Date d'inscription samedi 4 septembre 2004 Statut Membre Dernière intervention 20 octobre 2013
7 oct. 2004 à 16:06
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
0
magidev Messages postés 249 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 28 août 2009
7 oct. 2004 à 19:05
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.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 oct. 2004 à 20:20
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
0
magidev Messages postés 249 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 28 août 2009
7 oct. 2004 à 22:05
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.
0

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

Posez votre question
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 oct. 2004 à 22:51
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
0
magidev Messages postés 249 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 28 août 2009
7 oct. 2004 à 22:54
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.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
7 oct. 2004 à 22:56
non, tu as même une amélioration des perfs :-)

a ++

http://www.vulgarisation-informatique.com : entraide, dépannage et vulgarisation informatique
0
magidev Messages postés 249 Date d'inscription mardi 24 octobre 2000 Statut Membre Dernière intervention 28 août 2009
7 oct. 2004 à 22:57
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.
0
Rejoignez-nous