Session PHP ok, sauf sous Safari !!!

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Session PHP ok, sauf sous Safari !!!

par philoliv » 25 juin 2009, 19:37

J'ai enfin trouvé le problème : j'ai travaillé sur le site en ".com", mais il y avait aussi un nom et une redirection en ".fr".
J'ai tapé une fois, par mégarde, le nom en ".fr" dans Safari, et la complétion d'URL du navigateur m'y a ramené à chaque fois...

Comme j'avais mis l'URL du site en dur dans config.inc, je perdais ma session en zappant du ".fr" au ".com". Le script me ramenait au ".com" et forcément, ça fonctionnait à la seconde tentative.

24h de passés sur un truc pareil... je dois être blond à l'intérieur ***soupirs***

Session PHP ok, sauf sous Safari !!!

par philoliv » 25 juin 2009, 11:24

Bonjour,

Un truc à s'arracher les cheveux...

J'ai une page PHP "connexion.php" qui traite la saisie d'un pseudo et d'un password pour accéder à une page "membre.php".

- Dans connexion.php, je vérifie que le pseudo est dans la base de données mySQL des adhérents, que le mot de passe correspondant est ok, et je renvoie vers la page des membres.
J'ai un truc du genre :
$_SESSION['adh'] = "toto"; // (par ex)
$url=$adr."/membre.php";
header('Location: '.$url);
où $adr est l'URL du site.

- dans membre.php, je commence par vérifier que la variable $_SESSION['adh'] est ok, sinon je renvoie vers une page du type "Vous devez vous connecter pour accéder à cette page".

Toutes les pages du site commencent évidemment par :
session_start();
Tout cela fonctionne sans problème sous IE, sous Firefox, sous Opera.... mais pas sous Safari !!!
(j'ai testé différentes versions sous Windows XP et Vista sous 2 PC distincts). Avec Safari, ma variable $_SESSION['adh'] est bien enregistrée dans "connexion.php" mais n'est pas transmise à "membre.php" après le header(Location... , et j'ai le msg "Vous devez vous connecter...etc".

Si je recommence une deuxième fois l'identification, ça passe... comme si cette variable n'était prise en compte qu'au 2e coup dans le header.

Je sais bien que PHP fonctionne côté serveur et est sans rapport avec le navigateur... je ne sais plus quoi faire, je manque d'idées, c'est à s'arracher les cheveux.

Si vous aviez des idées sur des subtilités de fonctionnement des sessions avec Safari ou si j'ai un oublié truc non standard, ça serait top... je n'ai rien trouvé.
Merci d'avance !