Problem mit setcookie(). Fehler bei der Installation?

JuppZupp

Grünschnabel
Hallo zusammen,

bin neu hier, aber vielleicht ist jemand von Euch trotzdem so freundlich mir zu helfen.

Mein System: WinXP Prof., Apache 2.0.49, PHP5 RC2 und MySql4.0.20.d.

Problem:

Ich versuche auf einer Seite (ganz zum Anfang) eine Variable abzufragen:

<?
if (isset($AlteZeit)) {
if ($Zeit ==$AlteZeit) {
$Alte = true;
}
}
setcookie("AlteZeit", $Zeit);
?>

Wenn ich mir anschliessend den Inhalt des Ordners "Cookies" anschaue, wurde dieser nicht eingetragen.

Hat jemand eine Idee? Muss ich in der php.ini etwas ändern?
 
Aus der Referenz:
setcookie() definiert ein mit den HTTP Header-Informationen zu übertragendes Cookie. Wie andere Header auch, müssen Cookies vor irgendwelchen anderen Ausgaben Ihres Skriptes gesendet werden (dies ist eine Einschränkung des Protokolls). Sie müssen deshalb solche Funktionsaufrufe vor irgendwelchen Ausgaben, inklusive <html>- oder <head>-Tags sowie irgendwelcher Whitespaces tätigen. Erfolgte bereits vor dem Aufruf dieser Funktion eine Ausgabe erfolgt sein, gibt setcookie() scheitern und FALSE zurückgeben. War setcookie() erfolgreich, wird TRUE zurückgegeben. Dies sagt jedoch nichts darüber aus, ob der Benutzer das Cookie auch akzeptiert hat.

Also: Cookie vor allen anderen Ausgaben setzen und den Rückgabewert prüfen! Ist dieser "false", so ist das Setzen fehlgeschlagen.

Gruß

EDIT: sehe grade, dass Die Ausgabe bei Dir am Anfang erfolgt. Prüfe dennoch den Rückgabewert und setze vielleicht einen Wert für die Lebensdauer. Notfalls kann das Cookie auch mit JS gesetzt werden.
 
Zuletzt bearbeitet:
Danke für die Antwort, aber: der Code-Ausschnitt steht ganz am Anfang! Vor <html><head>.....
Sorry: habe gerade erst Dein Edit gesehen. Frage, wie überprüfe ich die Lebensdauer?
 
Danke für die Antwort aber ich vermute, dass der Fehler bei der Installation liegt, da ich auch mit isset() keine Variablen bei einem erneuten Aufruf der Seite abfragen kann. HILFE Ich verzweifle.
 
So muss es gehen:
PHP:
setcookie("Testcookie", Inhalt, time()+3600);
Das Cookie hält eine Stunde. Wenn das "Verfallsdatum" nicht angegeben ist, wird es auch nicht gesetzt. Das hat überhaupt nichts mit der Installation zu tun.
 
Danke für den Hinweis. Brachte aber leider auch keinen Erfolg. Desweiteren habe ich das Problem, dass ich bei einem erneuten Seitenaufruf keinerlei Variablen abfragen kann. Ganz am Anfang versuche ich halt die Variable AlteZeit abzufragen und ggf. einen Cookie zu schreiben. Danach überprüfe ich eine andere Variable (loeschen), die eigentlich bei einem erneuten Aufruf der Seite vorhanden sein sollte:

<?
if (isset($AlteZeit)) {
if ($Zeit ==$AlteZeit) {
$Alte = true;
}
}
setcookie("AlteZeit", $Zeit, time() + 3600);
?>
<?
if ($loeschen) {
$AlteSaetze = explode("@", $Bestelldaten);
$Zahl = count($AlteSaetze);
.....und so weiter

Die Variable übergebe ich später auf der Seite mit dem Befehl:

<td width="10%" align="center">
<a href="warenkorb.php?loeschen=1&$nr=<? echo $nr ?>&Gruppe=<? echo$Gruppe ?>&Zeit=<? echo time() ?>">l&ouml;schen</a>
</td>

Tja, leider ist die if-Abfrage immer false. Hat jemand eine Idee, was ich falsch mache?
 
Habe den "Fehler" gefunden. Ich habe jetzt mal in der php.ini den Eintrag "Register_Global" auf ON gesetzt. Siehe da, es funktioniert.

Allerdings: Sollte man das so machen? Oder gibt es da Sicherheitsbedenken? Wäre nett, wenn mir jemand diese Frage beantworten könnte.
 
Zurück