Astuce session_start()

Fermé
thiony - 1 mars 2006 à 15:35
 thiony - 2 mars 2006 à 13:51
Salut!!
je suis en train de faire un forum et mon problème est le suivant:

sur la page d'acceuil index.php j'ai un lien vers acces.php.
Dans accés.php j'ai créé un formulaire avec login et mot de passe.
Si les données saisies sont corectes, je vais vers forum.php et j'y crée une session.
Mon utilisateur, arrivé dans le forum, peut décider de retourner à l'acceuil, soit index.php. Si c sont choix, il y retourne avec index.php?id=id de session.
Puis là il peut décider de retourner sur le forum, mais pour lui épargner une nouvelle identification, j'utilise l'id.
Donc dans accés.php je récupère son id, (passé comme ci: accés.php?id=id de session) et là je ne sais pas comment vérifier que l'id correspond bien à une session active valide, de ce fait il suffit qu'un utilisateur lambda tape sur l'url de la première page acces.php?id=n'importe quoi, et il accéde au forum. (pas terrible!!).
Alors comment faire???
merci

2 réponses

Utilisateur anonyme
1 mars 2006 à 16:57
Hello,
Tu n'as pas bien saisi le mode de fonctionnement des sessions.
Tu n'as pas besoin de passer l'id de session en parametre.
On part en fait du principe que par exemple si $_SESSION['login'] est défini, alors une session est active et l'utilisateur est identifié.
La session reste active tant que la fenetre du navigateur est ouverte (meme si tu vas sur un autre site et que tu reviens sur le tiens, tu dois etre toujours identifié).

Maintenant, tu peux faire ça à la mode CCM, et mémoriser l'id de session dans un cookie pour rester identifier d'une fenetre de navigateur à l'autre.
0
Salut!
Donc si g bien compris, je fais session_start() sur une seule page et le tableau $_SESSION sera dispo sur toutes les autres c bien ça?
0
Jean-François Pillou Messages postés 18306 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274 > thiony
2 mars 2006 à 11:58
Absolument :-)
0
Jean-François Pillou Messages postés 18306 Date d'inscription lundi 15 février 1999 Statut Webmaster Dernière intervention 16 février 2023 63 274
2 mars 2006 à 12:00
Maintenant, tu peux faire ça à la mode CCM, et mémoriser l'id de session dans un cookie pour rester identifier d'une fenetre de navigateur à l'autre.

C'est le fonctionnement classique des sessions PHP. Le fait d'appeler session_start() crée un cookie ! La seule chose c'est que dans le cas de CCM j'ai préféré le nommer CCMSESSID plutôt que le traditionnel PHPSESSID ! ;-)

0
Donc supposons que le client arrive sur acces.php avec le formulaire classique login/pass aprés avoir cliké sur le lien connexion qui se trouve dans index.php.
Il valide et dans forum.php je recupère $_POST['login'] etc...
Si il est dans ma base de données, je lance le bout de code suivant:
@session_start();
$id=session_id();
$_SESSION['login']=$login;
$_SESSION['ide']=$id;
affiche le forum.

Ensuite il decide de retourner à index, pi de recliker sur connexion, pour lui eviter de repasser par le formulaire, dans acces.php je met un pti bout d'algo qui doit ressembler à un truc du genre:
"si session active window.location=forum.php"
C'est cet algo qui me semble obscure.
Pout l'instant je vais faire de requête dans ma base données, quel gâchis de temps cpu, bravo la complexité!!! du O(n2) bouuuuuhhh
0