8795 sujets

Développement web côté serveur, CMS

J'utilise le principe des sessions pour gérer mes sites (généralement d'inscription à des conférences). Un principe assez simple et standard. Je débute tous mes fichiers par session_start();, Si il y a une demande de login ou une inscription, j'introduit les informations sur la personnes dans la variable $_SESSION (généralement après une vérification ou introduction dans une base MySQL addressbook), finalement, pour définir, entre autres les éléments à montrer, je vérifie le contenu d'un des éléments de $_SESSION ( par exemple if (isset($_SESSION['m_id']) && $_SESSION['m_id'] > 0)) avec m_id le numéros d'inscription de la personne dans ma base de données.

Tout marche très bien sur safari, Firefox .... et pas IE6 (je n'ai pas IE7 sur mon ordinateur). Quelqu'un peut-il m'aider ?

Merci d'avance
Salut Pompon et bienvenue Smiley cligne ,

PHP étant un langage serveur, il n'est par définition pas lié au navigateur et donc, s'il fonctionne pour l'un, il fonctionne pour tous !

...A la nuance près que par défaut les sessions utilisent les cookies et que ces derniers sont peut-être désactivés dans ton IE6 Smiley murf !

Si ce n'est pas ça, un peu plus de code ne serait pas superflu...

A+
J'ai fait la même analyse. J'ai essayer de vérifier sur le PC que j'ai récupéré pour tester mes sites. Je n'arrive pas à trouver où c'est définis (c'est tellement plus simple sur mac). Voici le code un peu plus développé.

if (isset($_SESSION['m_id']) && $_SESSION['m_id'] > 0)
{
$login_menu = 'nom de la personne connectée';
$logged = true;
}
else
{
$login_menu = 'formulaire pour la connection';
$logged = false;
}

Peut-être devrais-je faire un test si les cookies sont acceptés ?
lut et bienvenue,

c'est là dans IE6. le niveau de sécurité moyenne ne pause pas de pb pour un cas comme celui-ci.

upload/11833-truc.jpg

maintenant c'est peut-être un probleme de config des sessions. que donne phpinfo() vis a vis de çà.

edit:ton test >0 serait inadapté pour tester une chaine de charactere. c'est pas ça le pb par hazard?
Modifié par CPascal (16 Mar 2008 - 19:05)
trouvé sur Internet :
a écrit :
Activer les cookies dans IE6 :
Dans la rubrique "Options Internet" du menu "Outils" cliquez sur l’onglet "Confidentialité" puis sur "Par défaut" (ou sur "Avancé"). Valider tous vos changement en cliquant sur "Ok".

Sinon, tu fais tes tests en local ? Car si c'est en ligne, la plupart des hébergeurs ont paramétré PHP de telle façon que si les cookies sont désactivés, la variable de session PHPSESSID est envoyée automatiquement via l'URL.

Pour plus d'infos tu pourrais jeter un oeil sur cette page et sur cette autre.

A+

Edit: Smiley hotbounce !
Modifié par Heyoan (16 Mar 2008 - 19:10)
Apparemment, le problème semble bien être lié aux cookies.

Je viens de tester les options "base" et "accepter les cookies". Pas de problème.
L'option "moyenne" bloque. Comme il font remarquer que il "bloque les cookies tiers qui utilisent des informations personnelles ...". Il faut peut-être que je transfert dans $_SESSION uniquement une variable spécifique et refaire une recherche sur la base de données pour les informations personnelles.

Un peu casse-pied mais pas trop difficile.

Si cela marche, je pourrais faire une petite note à rajouter au tutoriel sur les sessions.

PS: ma variable m_id est défini comme un entier donc je peux la tester avec ">0". Mais bien sûr, sur une autre variable ...!
Bonsoir,

Si mes souvenir sont bons, il s'agit d'un problème lié à l'absence d'entête P3P.
Pour en envoyer un, ajouter:
header('P3P: CP="CUR ADM"');

Qui correspond à un usage courant et pour l'administration, pour une description plus détaillé: Référence traduite.
Modifié par Necromantik (16 Mar 2008 - 23:37)
La norme P3P semble un peu complexe à mettre en oeuvre complètement. Je suppose que en ajoutant

header('P3P: CP="CUR ADM"');

dans the head, c'est une formule standard acceptable par beaucoup de navigateurs.

Aussi non je teste la solution de limiter au maximum l'accumulation de données dans les cookies (une référence permettant d'aller rechercher dans la base de données les informations nécessaires).

Je vais essayer tout cela rapidement. Mais je voulais vous remercier. C'est ma première question à ce site avec plusieurs réponses sympas (et pas des tu n'as qu'à lire les FAQ).

Bonne soirée