Astuce session_start()

thiony -  
 thiony -
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
 
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
thiony
 
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 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 279 > thiony
 
Absolument :-)
0
Jean-François Pillou Messages postés 19261 Date d'inscription   Statut Webmaster Dernière intervention   63 279
 
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
thiony
 
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