développement web



14 années d'expérience & d'innovations
au service de vos projets web et Internet



PHP, Sessions, Ajax et sous domaine

ven 1 févr. 2013 - 2h47

Je viens de faire une découverte aujourd'hui en bossant sur le site de moto-station.com et si mon raisonnement est bon, ceci pourrait éviter un arrachage de cheveux à d'autres :

Si une variable de session est definie dans un script PHP et que celui ci est appelé via ajax à partir d'un autre sous domaine, la variable de session n'est pas conservée au prochain appel.
Alors qu'elle est conservée si l'appel ajax vers le script PHP se fait sur le même sous domaine.

Voici un exemple :

Le script ajax.php défini la variable de session $_SESSION['test'] = 1;

<?php
  session_start();
  if ( isset($_SESSION['test']) ) echo '$_SESSION['test']==true';
  else {
    echo '$_SESSION['test']==false';
    $_SESSION['test'] = 1;
  }
?>


La page du site aaa.mondomaine.com/page.htm contient le script suivant : xhr.open('GET', 'http://bbb.mondomaine.com/ajax.php'); (je simplifie en faisant un appel Ajax basique)
=> au second appel $_SESSION['test'] n'est toujours pas défini (isset($_SESSION['test']) == false)

La page du site bbb.mondomaine.com/page.htm contient le script suivant : xhr.open('GET', 'http://bbb.mondomaine.com/ajax.php');
=> au second appel $_SESSION['test'] est bien défini (isset($_SESSION['test']) == true)

Ce qui est étonnant c'est que la session est bien transmise dans le deuxième cas et pas dans le premier alors que l'on appel toujours la même URL à partir du même navigateur, j'imagine que la session doit dépendre du contexte d'appel du script Ajax.

Si vous avez des remarques à ce propos, n'hésitez pas à laisser un message sur notre formulaire de contact.

 

Eric

 



0 950 339 339

nous écrire

293 rue de longpaon - 76160 Darnétal