2010-11-29 3 views
0

index.phpsession de PHP Subdomain disparaître

session_start(); 

if(!isset($_GET['n'])) { 
    $_SESSION['foo'] = "bar"; 
    header("Location: /index.php?n=D"); 
} 

echo "FOO: ".$_SESSION['foo']; 

Cette page index.php est utilisé dans un sous-domaine. Le sous-domaine est un dossier dans le domaine racine, à savoir

- WWW 
    - SUB DOMAIN 
     - index.php 

La variable séance foo est réglée sur appel page, puis vérifié après un en-tête de redirection - et il est parti.

J'ai essayé:

  • ini_set('session.cookie_domain','.example.com');
  • Diverses combinaisons de session_set_cookie_params()
  • Lieu: http://subdomain.example.com
  • Déchirer mes cheveux

mais rien ne semble fonctionner. Cela semble être un problème très simple - quelqu'un peut-il m'aider à trouver mon cookie/session/variable perdu?

EDIT

var_dump(session_get_cookie_params()) donne

array(5) { ["lifetime"]=> int(0) ["path"]=> string(11) "/" ["domain"]=> 
string(23) ".example.com" ["secure"]=> bool(false) ["httponly"]=> bool(false) } 

Mon URL a un tableau de bord - en elle (my-example.com). Est-ce que ceci pourrait être le problème?

Également essayé le réglage session_name() avant les paramètres. Ne fonctionne toujours pas.

+0

Et qu'en est-il réellement dans les cookies? À quel domaine appartient le cookie de la variable de session? – zerkms

+0

Merci pour la réponse - désolé, je ne comprends pas ce que vous essayez de dire. Tout ce qui devrait être dans le cookie est l'information d'identification de session, et ma variable 'foo'. J'ai rendu le cookie visible à tous les domaines avec '.example.com', il devrait donc être visible sur celui-ci. J'ai essayé de changer le 'chemin 'au sous-domaine, tous sans aucune chance. – Ben

+0

Ahh vient de trouver le problème après cinq heures. 'session.save_path' n'a pas été défini sur mon serveur. Fera plus de recherche et écrira une réponse. – Ben

Répondre

2

Après cinq heures d'essais, j'ai finalement contacté mon hébergeur et ils ont jeté un œil.

Le verdict? session.save_path dans php.ini n'a pas été défini. Le script ci-dessus fonctionne maintenant correctement.

Si quelqu'un se soucie d'élaborer sur le pourquoi et le comment, je serai heureux de leur donner la solution, sinon je vais devoir accepter le mien.