Christian: setCookie aus Unterverzeichnis

Hi !

Habe ein kleines Problem mit "setCookie".
Ich besitze eine Haupt- und eine Nebendomain:

www.domain-haupt.de

Im Verzeichnis dieser Hauptdomain liegt ein Ordner auf den meine Nebendomain zugreift:

www.domain-neben.de (greift auf Verzeichnis "/neben" zu)
 (man kann auch sagen: www.domain-haupt.de/neben)

Vom root verzeichnis aus kann ich in einem php script mit folgendem php code ein cookie setzen:

setcookie ("bluemadness[mitgliedsname]", $mitgliedsname, time()+(60*60*24*30));

Sobald ich aber dieses php script in das unterverzeichnis der nebendomain schiebe und über die nebendomain aufrufe passiert nichts! Rufe ich das untervezeichnis (das eigentlich zur nebendomain gehört) über die hautdomain auf funktioniert das cookie setzten.

Also: www.haupt-domain.de/neben/cookie.php --> Klappt !
Aber: www.neben-domain.de/cookie.php --> Klappt nicht !?

Warum ? Ich muss bei dem Cookie noch einen Pfad angeben wenn ich es setzte richtig ? Habe schon bei php.net geschaut aber ich weiss nicht wie das funktionieren soll.

Hoffe auf Hilfe !
Gruss Christian

  1. Also: www.haupt-domain.de/neben/cookie.php --> Klappt !
    Aber: www.neben-domain.de/cookie.php --> Klappt nicht !?

    "Geht nicht" gibt's nicht. Was soll denn das bedeuten, wird kein Cookie gesetzt, kannst Du den Cookie nicht benutzen, explodiert der Rechner?

    Warum ? Ich muss bei dem Cookie noch einen Pfad angeben wenn ich es setzte richtig ?

    Du mußt nicht, es kommt darauf an, wo Du was benutzen willst. Grundsätzlich ist es aber nicht möglich, Cookies von Domain x in Domain y zu benutzen (wohl aber von x in z.x).

    Habe schon bei php.net geschaut aber ich weiss nicht wie das funktionieren soll.

    Was genau an

    bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])

    und den nachfolgenden zwei Seiten dazu verstehst Du nicht? Siehe http://www.php.net/manual/de/function.setcookie.php.

    Gruß,
      soenk.e

    1. Ich tue folgendes:

      setcookie ("mein_cookie", "ein_wert", time()+3600, "/meinpfad", "domain.de", 0)

      Ist das korrekt ?

      Gruss Christian

      1. Hallo Christian,

        Ist das korrekt ?

        Was haben deine Tests desbezüglich ergeben?

        Grüße
          David

        --
        >>Nobody will ever need more than 640k RAM!<<
        1981 Bill Gates
        1. Hallo Christian,

          Ist das korrekt ?
          Was haben deine Tests desbezüglich ergeben?

          Grüße
            David

          Es funktioniert nicht ! Es wird einfach kein Cookie gesetzt.
          Was schlagt ihr vor ?

          Gruss Christian

          1. Es funktioniert nicht ! Es wird einfach kein Cookie gesetzt.
            Was schlagt ihr vor ?

            Gib' bitte die URLs der beiden betreffenden Seiten inklusive Quellcode und Vorgehensweise raus (es dürfen auch sehr gerne runtergestrippte Skripte sein, Hauptsache der Fehler tritt auf). Es ist bei solchen Sachen, die von einer Reihe von Umgebungsparametern abhängen, immer recht schwierig mit theoretischen Beispielen.

            Gruß,
              soenk.e

            1. Hauptdomain ist: www.utopian.de !

              Im Unterverzeichnis /bluemadness befindet sich das Material für die Nebendomain www.blue-madness.de.

              Klick dich mal hier vorbei: http://www.utopian.de/bluemadness/index.php und gehe in dem oberen Kasten rechts auf "LOGIN". Gib hier ein:

              User: test
              Pass: 1234567

              --> Klappt! Cookie wird gesetzt.

              Versuch nun das gleiche nochmal, in dem du das Script über die Nebendomain ansteuerst:

              Klick auf http://www.blue-madness.de/index.php und den Vorgang wiederholen.

              --> Klappt nicht ! Cookie wird nicht gesetzt.

              Ich besitze eine große Logindatei, die bei erfolgreichem Login die userdaten in ein cookie schreibt (leider bisher noch unverschlüsselt). Nach dem Login erfolgt wie gewohnt ein abgleich mit der DB und bei erfolgreicher Validierung der Person wird folgende Funktion aufgerufen:

              function login_ok($mitgliedsname,$passwort,$userid){
                 setcookie ("bluemadness[mitgliedsname]", $mitgliedsname, time()+(60*60*24*30));
                 setcookie ("bluemadness[passwort]", $passwort, time()+(60*60*24*30));
                 setcookie ("bluemadness[userid]", $userid, time()+(60*60*24*30));
                 include("weiterleitung.php");
               }

              Die Funktion funktionierte auf meinem lokalen Apache erste Sahne ! Nun geht aber nichts mehr, es sei denn ich steuere das Script über die Hauptdomain an.

              Hoffe ihr könnt mir helfen!
              Gruss Christian

              1. Folglich lautet mein neues setCookie Verfahren:

                setcookie ("bluemadness[mitgliedsname]", $mitgliedsname, time()+3600,"/bluemadness/",".utopian.de",0);
                   setcookie ("bluemadness[passwort]", $passwort, time()+3600,"/bluemadness/",".utopian.de",0);
                   setcookie ("bluemadness[userid]", $userid, time()+3600,"/bluemadness/",".utopian.de",0);

                Pustekuchen ! Geht nicht.
                Wo liegt mein Fehler ?

                Gruss Christian

              2. Klick dich mal hier vorbei: http://www.utopian.de/bluemadness/index.php und gehe in dem oberen Kasten rechts auf "LOGIN". Gib hier ein:

                Also http://www.utopian.de/bluemadness/login.php ?

                User: test
                Pass: 1234567

                --> Klappt! Cookie wird gesetzt.

                Nein, da passiert gar nichts. Es kommt dasselbe Formular wieder, keine Fehlermeldung ("falsche Nutzerdaten" o.ä.) und schon gar kein Cookie.

                Anmelden konnte ich mich leider auch nicht sofort ("selftest"). Und Du solltest die Mailadresse zumindest ein klein wenig prüfen, die im Anmeldeformular angegeben wird.

                Klick auf http://www.blue-madness.de/index.php und den Vorgang wiederholen.

                Ich besitze eine große Logindatei, die bei erfolgreichem Login die userdaten in ein cookie schreibt (leider bisher noch unverschlüsselt).

                Das ist -unabhängig vom Fehler- schlecht, verschlüsselt oder nicht; diese Daten haben außerhalb Deines Servers nichts zu suchen. Insbesondere für die Rausgabe des Passwortes solltest Du drei Tage mit der Gänsefederkitzelfolter malträtiert werden. Jawohl.

                Verwende Sessions, session_start() und $_SESSION sind nicht aufwändig.

                function login_ok($mitgliedsname,$passwort,$userid){
                   setcookie ("bluemadness[mitgliedsname]", $mitgliedsname, time()+(60*60*24*30));

                Das sollte funktionieren.

                include("weiterleitung.php");

                Nur nebenbei: include() wegen zwei Zeilen

                header("HTTP/1.0 303 See other");
                  header("Location: http://usw");

                ist möglicherweise ein wenig übertrieben :)

                setcookie ("bluemadness[mitgliedsname]", $mitgliedsname, time()+3600,"/bluemadness/",".utopian.de",0);

                Dieser Aufruf dürfte IMHO unter blue-madness.de nicht funktionieren (falsche Domain, falscher Pfad). Die Null am Ende kannst Du weglassen.

                Gruß,
                  soenk.e

  2. Hallo Christian,

    Warum ?

    Weil das Cookie nur für den Ordner (incl. Unterordner) gilt, in dem es
    gesetzt wird.

    Ich muss bei dem Cookie noch einen Pfad angeben wenn ich es setzte richtig ?

    Exakt.

    Habe schon bei php.net geschaut aber ich weiss nicht wie das funktionieren soll.

    So, wie es bei setCookie() im Manual steht. Was verstehst du daran nicht?

    Grüße
      David

    --
    >>Nobody will ever need more than 640k RAM!<<
    1981 Bill Gates
  3. Fehlanzeige! Es wird kein Cookie gesetzt, vorausgesetzt ich erlaube im Internet Explorer die Aufnahme aller Cookies.

    Gruss Christian

    1. Hallo Christian,

      Es wird kein Cookie gesetzt

      Woran machst du dies fest?

      Grüße
        David

      --
      >>Nobody will ever need more than 640k RAM!<<
      1981 Bill Gates