Core: Javascript Cookie Pfad Probleme

Javascript:
<script type="text/javascript" charset="UTF-8">document.cookie = "JavascriptProf=789678; path=/; ";</script>

Erläuterung des Problems:
Da ich an kurze Urls verwende die mit htaccess auf meine index.php
umgeleitet werden, kommt es bei diesem Javascript zu folgenden Problem:

Befinde ich mich auf: "http://localhost/projektordner/seite1/"
kann das Cookie problemlos gesetzt werden. Lasse ich jedoch das
letze Slash weg und "befinde" mich "http://localhost/projektordner/seite1"
wird das Cookie nicht gesetzt,.. oder kann von PHP nicht mehr ausgelesen
werden,..

"http://localhost/projektordner/seite1(/)" ist in immer intern
"http://localhost/projektordner/index.php".

Im Head des HTMLs befindet sich auch eine Base Angabe:
<base href='http://localhost/projektordner/' />

Ich habe mich jetzt schon mit:
document.cookie = "path=''; domain='';";
gespielt bin jedoch auf keinen grünen Zweig gekommen,..

Ich hoffe ihr könnt mir helfen

  1. Hallo,

    ich dachte, Cookies orientieren sich an der Domain, nicht an den Ordnern. Vielleicht wird der Cookie ja aus irgend einem Grunde nicht korrekt gesetzt, wenn der Slash fehlt, vom Javascript. Oder die index.php verarbeitet nicht richtig. Oder die .htaccess routet nicht korrekt.

    Gruß

    jobo

    1. ich dachte, Cookies orientieren sich an der Domain, nicht an den Ordnern. Vielleicht wird der Cookie ja aus irgend einem Grunde nicht korrekt gesetz

      Grundsätzlich funktioniert die Cookiesetzung auf "http://localhost/projektordner/index.php" aber auch auf "http://localhost/projektordner/seite1/", jedoch lässt man das Slash
      nach Seite1 weg,... ist das Cookie für PHP unauffindbar.

      Meine HTACCESS sieht wie folgt aus:

        
      	  
          AddDefaultCharset UTF-8  
          AddCharset utf-8 .css .html .xhtml .js  
        
          Options +FollowSymLinks  
          RewriteEngine On  
        
          RewriteCond %{SCRIPT_FILENAME}  !-d  
          RewriteCond %{SCRIPT_FILENAME}  !-f  
          RewriteCond %{REQUEST_FILENAME} !-f  
          RewriteCond %{REQUEST_FILENAME} !-d  
          RewriteRule ^.* index.php  
      
      

      Und funktioniert bis jetzt in allen Fällen bis auf diesen perfekt.

      $_COOKIE['JavascriptProf']
      Das PHP funktioniert wie gesagt auch in jedem Fall ausser
      das Javascript Cookie wird nicht gesetzt - was der Fall ist
      (in der oben beschriebenen Situation).

  2. Hi,

    Befinde ich mich auf: "http://localhost/projektordner/seite1/"
    kann das Cookie problemlos gesetzt werden. Lasse ich jedoch das
    letze Slash weg und "befinde" mich "http://localhost/projektordner/seite1"
    wird das Cookie nicht gesetzt,.. oder kann von PHP nicht mehr ausgelesen
    werden,..

    Nicht herumraten, sondern überprüfen:

    • Gesetzte Cookies vom Browser anzeigen lassen.
    • Firebug nehmen und schauen, ob Cookie beim nächsten Request an den Server übertragen wird.

    "http://localhost/projektordner/seite1(/)" ist in immer intern
    "http://localhost/projektordner/index.php".

    „Intern“ interessiert hier nicht.
    Für das Setzen sowie das Senden des Cookies an den Server ist für den Client ausschließlich der Pfad interessant, unter dem er die Ressource abgerufen hat.

    (Höchstens, dass du beim serverseitigen „internen“ Umschreiben des Requests etwas falsch machst und dir dabei der Cookie „verloren“ geht, wäre theoretisch denkbar.)

    Im Head des HTMLs befindet sich auch eine Base Angabe:
    <base href='http://localhost/projektordner/' />

    Das tät' ich lassen.
    BASE macht m.E. mehr Probleme, als es löst.
    Externe Ressourcen (CSS, Scripte, Bilder) mit einem / beginnend absolut-relativ zur Domainwurzel zu verlinken, ist m.E. vorzuziehen.

    Ich habe mich jetzt schon mit:
    document.cookie = "path=''; domain='';";
    gespielt bin jedoch auf keinen grünen Zweig gekommen,..

    Na ganz ohne einen Cookie-Namen kann's ja nichts werden.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Hi,
      Nicht herumraten, sondern überprüfen:

      • Gesetzte Cookies vom Browser anzeigen lassen.
      • Firebug nehmen und schauen, ob Cookie beim nächsten Request an den Server übertragen wird.

      Das habe ich per PHP gemacht und das Cookie wird sobald ich das Slash
      in der Adresse weglasse nicht mehr aktualisiert. Firebug sagt das selbe.
      Aber warum,..

      Ich habe mich jetzt schon mit:
      document.cookie = "path=''; domain='';";
      gespielt bin jedoch auf keinen grünen Zweig gekommen,..

      Na ganz ohne einen Cookie-Namen kann's ja nichts werden.

      Habe ich natürlich in der Praxis gemacht, hier nur nicht vollständig gepostet :)

  3. Peinlich Peinlich,.
    Hatte leider einen schreib Fehler drinnen (";" vergessen),
    die Angabe (path=/;) war nötig.

    1. Hallo,

      Peinlich Peinlich,.
      Hatte leider einen schreib Fehler drinnen (";" vergessen),
      die Angabe (path=/;) war nötig.

      Das immer das Problem, wenn man den Code nicht beispielhaft vollständig hat.

      Gruß

      jobo