kai: IE7 , AJAX und die PHP Session

hallo zusammen,

ich hab da ein kleines prob mit der übermittlung der session id an
dateien die ich im hintergrund mit ajax anspreche ...

im firefox und im ie6 klappt das ohne das ich extra die session id mit
übergebe.. jedoch der ie7 scheint das nicht ohne weiteres zu machen..
da haben die über ajax angesprochenen dateien nicht mehr die
session id wie die im browser angezeigte datei..

der ajax aufruf sieht bei mir so aus:

-------------------------------------
...
var xmlHttp = false;
// Internet Explorer
try {
    xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
    try {
        xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e) {
        xmlHttp  = false;
    }
}
// Mozilla, Opera und Safari
if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
    xmlHttp = new XMLHttpRequest();
}
if (xmlHttp) {
    xmlHttp.open('GET', ziel, true);
    xmlHttp.onreadystatechange = function () {
        if (xmlHttp.readyState == 4) {
            document.getElementById(layer).innerHTML =  xmlHttp.responseText;
        }
    };
    xmlHttp.send(null);
}
...
---------------------------------

in allen php dateien hab ich oben ein
session_start();
$sid = session_id();
drin ...

und die datenschutzeinstellungen des ie7 stehen auf mittel..

jemand ne idee wo ich da ansetzten muss...
oder muss ich wirklich überall die session id mit dem ajax-
aufruf übergeben  ??

danke schonmal
kai

  1. hi,

    ich hab da ein kleines prob mit der übermittlung der session id an
    dateien die ich im hintergrund mit ajax anspreche ...

    im firefox und im ie6 klappt das ohne das ich extra die session id mit
    übergebe..

    Wenn du dich in so einem Falle einfach "gar nicht" um die Weitergabe der Session-ID kümmerst, dann geschieht sie wohl per Cookie.

    jedoch der ie7 scheint das nicht ohne weiteres zu machen..

    Dann nimmt er wohl den Cookie nicht an.

    und die datenschutzeinstellungen des ie7 stehen auf mittel..

    Wenn du da nicht ansetzen kannst/willst - dann übergebe die Session-ID selber explizit.

    jemand ne idee wo ich da ansetzten muss...

    Eventuell hülfe eine P3P-Policy noch weiter.

    oder muss ich wirklich überall die session id mit dem ajax-
    aufruf übergeben  ??

    Vermutlich sicherer.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
  2. Hi,

    $sid = session_id();

    ? Die Session-ID ist bereits in der Konstante SID gespeichert.

    Ist sie das nicht, dann brauchst Du sie i.d.R. auch nicht, da sie dann ohnehin in einem Cookie gesichert ist.

    Folglich brauchst Du die SID auch nur zu übergeben, wenn diese Konstante einen Inhalt hat ...

    Gruß, Cybaer

    --
    Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    1. echo $begrüßung;

      Folglich brauchst Du die SID auch nur zu übergeben, wenn diese Konstante einen Inhalt hat ...

      Besser wäre: "wenn diese Konstante vorhanden ist". Der Unterschied zwischen beiden ist: In deinem Fall erfolgt ein Zugriff auf etwas nicht vorhandenes. PHP ist da zwar recht großzügig, aber im Unterschied zu Lesezugriffen auf nicht vorhandene Variablen, die dann ein null zurückgeben, wird von einer nicht vorhandenen Konstante deren Name als String interpretiert. Dies sagt PHP auch, wenn man es lässt (error_reporting auf E_ALL gestellt).

      if (KONSTANTE == '')  liefert kein true, da 'KONSTANTE' nicht gleich '' ist.
      if (defined('KONSTANTE'))  wäre eine richtige Abfrage. (Wenn man misstrauisch ist, kann man ja anschließend noch die Konstante auf Inhalt prüfen, aber das ist bei SID überflüssig.)

      echo "$verabschiedung $name";

      1. Hi,

        Besser wäre: "wenn diese Konstante vorhanden ist".

        In diesem Fall unnötig, denn sie *ist* automatisch vorhanden, nachdem man eine Session begonnen hat - *immer*. Die Frage ist nur, ob sie leer ist (=Leerstring, nicht NULL) oder nicht.

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
        1. echo $begrüßung;

          Besser wäre: "wenn diese Konstante vorhanden ist".
          In diesem Fall unnötig, denn sie *ist* automatisch vorhanden, nachdem man eine Session begonnen hat - *immer*. Die Frage ist nur, ob sie leer ist (=Leerstring, nicht NULL) oder nicht.

          Stimmt, du hast Recht. Warum nahm ich dann an, kürzlich gelesen zu haben, dass jemand sagte, dass SID nur da ist, wenn Cookies nicht möglich sind?

          echo "$verabschiedung $name";

          1. Hi,

            Warum nahm ich dann an, kürzlich gelesen zu haben, dass jemand sagte, dass SID nur da ist, wenn Cookies nicht möglich sind?

            Vermutlich weil nobody perfect ist - und derjenige nicht Nobody hieß. ;)

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
      2. Ach ja,

        if (defined('KONSTANTE'))  wäre eine richtige Abfrage. (Wenn man misstrauisch ist, kann man ja anschließend noch die Konstante auf Inhalt prüfen, aber das ist bei SID überflüssig.)

        das ist also nur von Interesse, wenn man nicht weiß, ob man eine Session aufgemacht hat (PHP-Alzheimer ;->). Ansonsten ist es die falsche Abfrage, da SID ja trotzdem definiert ist - nur ben mit einem Leerstring.

        Gruß, Cybaer

        --
        Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!