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 !