8792 sujets

Développement web côté serveur, CMS

j'ai une premiere page de login, si le login et password sont OK j'ouvre une session avec session_start et j'initialise des variaibles $_SESSION puis j'appelle ma page d'accueil .

AU debut de ma page d'accueil je verifie que la personne est bien passée par le login en verifiant les variables de session $_SESSION.

Avec firefox ca fonctionne tres bien, par contre avec IE6 la première fois que je passe sur la page d'accueil les variables de session $_SESSION ne sont pas reconnues et le programme renvoie normalement au login( normal puisque la session n'es tpas reconnue)

Apres ce deuxieme passage (donc 2eme login identique ) tout se passe bien : IE6 reconnait bien la session et tout fonctionne correctement.

J'ai vérifié l'acceptation des cookies sur IE6... j'ai essayé de faire un session_destroy avant de redemarrer une session de login, pb identique...

Mon code est bon puisque firefox fonctionne tres bien ...

QUelqu'un a-t-il une idée ?
Modifié par bilou (24 Sep 2006 - 10:13)
Tout d'abord, bonjour et bienvenue à toi... Smiley langue

Est-ce que tu pourrais indiquer un morceau de code pour que l'on puisse juger par nous-même si la syntaxe est "correcte" ? Smiley murf
merci pour ta reponse, je te mets un peu de code:

fichier login.php
...........
session_name("NOTE");
session_start();
// Is this user already connected ?
$sql = "select SESSION_ID from log where SESSION_ID = '" . session_id() . "' and LOGIN = '" . strtoupper($_login) . "' and now() between START and END";
$res = sql_query($sql);
$num_row = sql_count($res);
if (($num_row > 0) and isset($_SESSION['start'])) {
$sql = "update log set END = now() + interval " . getSettingValue("sessionMaxLength") . " minute where SESSION_ID = '" . session_id() . "' and START = '" . $_SESSION['start'] . "'";
$res = sql_query($sql);
if ($test_change_mdp == 'y') return "c"; else return "1";
} else {
session_unset();
}
$_SESSION = array();
$_SESSION['login'] = "ELEVE";
$_SESSION['password'] = "EEEELLLLEEEEVVVVEEEE";
$_SESSION['prenom'] = "eleve";

........... etc.............

puis appel du fichier accueil.php avec le test suivant:

<?php
session_name("NOTE");
session_start();
echo " login : ".$_SESSION['login'];


............... affichage: login : et vide !!!!!!!!!!

je suis sur de passer par le presmier session_start car si j'affiche la variable $_SESSION['login'] j'ai bien la valeur "ELEVE"


nouvelle info:

j'ai essayé sur un autre PC avec IE6 et sur ce PC ca marche... le PB est donc lié à mon IE... j'ai tout vérifié dans les outils / options ... tout est par defaut....
pour vérifier si le problème vient des cookies il faut utilisé la constante SID
si le client a donné son cookie alors SID est vide Smiley smile
si il donne pas de coukiz SID est plein Smiley murf
Bonjour
En fonctionnement local (localhost) si l'identifiant de session n'est pas transmis le serveur local s'y retouve généralement et masque de ce fait les pb. Par contre sur un serveur distant là le N° de session est impératif puisque c'est lui qui permet au serveur de retrouver ses petits. Donc essayez d'envoyer l'ID dans l'URL du style:
 action="accueil.php?<?php echo session_name().'='.session_id()" ?>
session_name().'='.session_id()
c'est ce que retourne la constante SID

Lire la doc officiel php (cf:nexen.net) peut être une bonne idée Smiley smile
suite à la suggestion de bill, je me suis apercu que le sessionid avait une valeur donc ta solution de passer le session_name dans l'url me paraissait tres bonne , j'ai essayé : ça marche !!!!!!!

merci bill, ton idee n'explique pas le problème mais elle le contourne...

ce n'était pas évident, merci à ceux qui ont pris le temps de regarder mon probleme

a mon tour j'essayerai de donner mon avis à ceux qui pourraient en avoir besoin

par contre je n'ai pas trouvé comment clore ce sujet.. c'est peut etre réservé au moderateur .....
Modifié par bilou (24 Sep 2006 - 09:48)
Modérateur
bonjour,

j'ai rencontré le même probleme que toi , (et qui , entre autre , se double de l'impossibilité de rafraichir la page sans renvoyé a nouveau le formulaire).

face donc a deux situation desagreable (session ne s'appuyant pas sur les cookies , m^me si ils sont crée par defaut a priori), j'ai fais usage du "header location();" (apres avoir traiter le formulaire et enregistrer la session) , qui recharge donc la page en reconnaissant la session et elimine ce defaut d'IE et qui empeche aussi de poster 2 fois le même formulaire avec les même infos.

++
Administrateur
Bonjour,

bilou a écrit :
par contre je n'ai pas trouvé comment clore ce sujet.. c'est peut etre réservé au moderateur .....

non c'est réservé au membre Smiley smile

Merci par ailleurs de placer tous tes codes entre balises [ code] ici-le-code [ /code] (sans les espaces) comme demandé dans l'Aide, encore elle.
Cela rend la lecture de ceux-ci bien plus lisibles pour tout le monde.

Plus généralement, le lien qui s'affiche sous le menu du Forum contient beaucoup d'indications sur ce Forum et ce que nous attendons, merci de le consulter c'est important Smiley smile

Felipe