Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Messages recommandés

Posté(e)

Voilà j'ai un problème avec les sessions PHP.

J'utilise les sessions PHP pour mémoriser les options de classements de la galerie d'images de mon site.

Tout marche à merveille tant qu'il s'agit des pages de miniatures.

Mon site est construit en pseudos frames avec une page index.php?page=truc.

Mais pour afficher les images en grandeur réelle, je fais un lien target=_blank qui ouvre la page dispics.php, donc elle n'est pas incluse de la page index.php.

Et les variables que je mémorise dans la session du visiteur ne veulent pas passer dans cette page dispics.php

Quelqu'un peut m'expliquer pourquoi ? Est-ce une limitation des sessions PHP ou y at-il un moyen d'y remédier ?

Posté(e)

Il faut au moins mettre le session_start car sinon c'est clair que ca ne fonctionnera pas. C'est le session_start qui va recupérer ton ID de session sur le client et créer/gérer les variables de session en les initialisant aux valeur de la session du client.

 

Tu peux essayer avec ton code, ca devrait fonctionner.

 

Automne

Posté(e)
Ca marche impec, j'ai quand meme viré le if, il sert à rien dans ce cas.

 

Je ne veux pas etre méchant mais je ne vois pas de cas ou ton if sert ...

je ne vois pas non plus l'interet de cette ligne :


$nom_session = session_name(); 

 

Si tu ne donnes pas de nom à ta session. C'est a toi de la définir et PHP donnera un nom générique si tu ne le fais pas.

 

C'est d'ailleurs assez dangereux au niveau de la sécurité et des bugs de ne pas definir de nom à ta session car n'importe quelle application PHP sur le meme serveur peut récupérer tes variables de sessions et meme les modifier si l'utilisateur navigue sur ton appli et sur l'autre en meme temps.

 

Automne

Posté(e)

Je ne comprends pas tout ce que tu me racontes :P

Je débute juste avec les sessions PHP et de toute façon je ne stocke dans la session que les options de navigation de mes visiteurs, aucun mot de passe, aucun espace membre.

 

Mais j'aimerais bien que tu m'expliques ce qu'il faut ke je fasse pour rendre tout ça plus sur, le problème c'est que j'ai fait ça à partir du tuto de phpdebutant (eux ils mettent un if, je sais pas pkoi) et ce tuto est pas super bien fait, il manque pas mal d'explications.

Posté(e)

if (empty($id_de_session))

---> permet de savoir si la variable $id_de_session n'est pas initialisée. Ce qui est toujours le cas si tu mets le bout de code au debut de chaque page de ton application comme il se doit.

 

session_start();

---> met en place les mecanismes de gestion de la session. Si le user est deja entré en session, il doit posseder un ID de session sinon cette fonction lui en fournit un. L'ID de session permet à PHP de récupérer les données de session (les variables déclarée en session_register).

 

$id_de_session = session_id();

-----> récupère l'id de session. Pourquoi pas. Tu peux le fournir dans chaque lien de ton application ce qui permet à l'appli de fonctionner meme si l'utilisateur desactive les cookies sur son browser. C'est un choix.

 

$nom_session = session_name();

-----> Vu que tu n'as jamais utilisé session_name("nom_de_session"); PHP te renvoit le nom de session par defaut (le nom definie dans la variable session.name du php.ini) . Ca n'a que peu d'intérêt.

 

Pour les problèmes de session si tu ne la nommes pas, je m'explique :

- tu crées une application A et une application B en PHP sur le meme serveur.

- dans les 2 tu utilises les sessions et malheureusement tu utilises une variable de meme nom dans les 2 applications.

- vu que tes 2 applications ne nomment pas leur session, si un utilisateur navigue sur tes 2 applications en meme temps, il ne va avoir qu'1 seule session pour les 2 applications.

- CAD que ta variable de session de meme nom dans les 2 applis va etre partagée par les 2 applis. Elle peut etre modifiée par l'appli A et lue par l'appli B et vice-versa.

exemple : tu créés une variable de session donnant un niveau de droit à un utilisateur pour tes 2 applis. Le pb c'est qu'un utilisateur en question est admin sur l'appli A et simple user sur l'appli B. Si la variable de session a le meme nom sur les 2 applis et que tu ne nommes pas tes sessions, l'utilisateur se log admin sur l'appli B en simple user, puis sur l'appli A en admin et devient admin automatiquement sur l'appli B.

 

Je te conseille plutot d'ecrire kkchose de cette forme en debut de tous tes scripts PHP d'une meme application :


session_name("nom_application");

session_start();

 

Tu peux ajouter le code suivant si tu veux passer ton id de session entre les pages pour que ton appli fonctionne sans cookies :


$id_de_session = session_id();

$nom_session = session_name(); 



....



// creation d'un lien vers autre page de l'application

printf("<A href="monfichier.php?%s=%s">text</A>",$nom_session;$id_de_session );



// ou passage de form

printf("<FORM action="monfichier.php?%s=%s">",$nom_session;$id_de_session );

 

Automne

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...