setCookie aus Unterverzeichnis
Christian
- php
0 Sönke Tesch0 Christian0 David Tibbe0 Christian0 Sönke Tesch0 Christian0 Christian0 Sönke Tesch
0 David Tibbe0 Christian
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
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
Ich tue folgendes:
setcookie ("mein_cookie", "ein_wert", time()+3600, "/meinpfad", "domain.de", 0)
Ist das korrekt ?
Gruss Christian
Hallo Christian,
Ist das korrekt ?
Was haben deine Tests desbezüglich ergeben?
Grüße
David
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
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
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
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
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
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
Fehlanzeige! Es wird kein Cookie gesetzt, vorausgesetzt ich erlaube im Internet Explorer die Aufnahme aller Cookies.
Gruss Christian
Hallo Christian,
Es wird kein Cookie gesetzt
Woran machst du dies fest?
Grüße
David