2009-03-10 7 views
3

Ich entwickle auf meinem Mac-Notebook, ich benutze MAMP. Ich versuche, einen Cookie mit PHP zu setzen, und ich kann nicht. Ich habe die Domain verlassen, ich habe versucht, "\" für die Domain zu verwenden. Kein Glück.Wie setze ich einen Cookie auf localhost mit MAMP + MacOSx + PHP?

setcookie("username", "George", false, "/", false); 
setcookie("name","Joe"); 

Ich muss etwas offensichtlich fehlen. Ich brauche eine schnelle und einfache Lösung dafür. Ist dort eines?

Ich bin nichts Besonderes tun, einfach zu laden (über MAMP), um die Seite, http://localhost:8888/MAMP/lynn/setcookie.php

Das Skript hat den setcookie Code an der Spitze, vor dem auch die HTML-Tags zu schreiben. (obwohl ich es auch im BODY probiert habe). Ich lade die Seite in verschiedenen Browsern und öffne dann die Cookie-Liste. Ich weiß, dass die Browser Cookies akzeptieren, weil ich aktuelle in der Liste sehe. Nur nicht mein neuer.

+0

ist es, dass Sie das Cookie im Browser nicht sehen können oder dass es nicht auf der nächsten Seite wieder zu PHP zurückkehrt (var_dump ($ _ COOKIE))? –

+0

Ich kann den Cookie nicht im Browser oder unter den Cookie-Listen in verschiedenen Browsern sehen. – lynn

+1

Gibt es Leerzeichen vor dem öffnenden PHP-Tag Simon

Antwort

6

Aus der Dokumentation:

setcookie() legt einen Cookie zusammen mit dem Rest der HTTP-Header gesendet werden. Wie bei anderen Headern müssen Cookies vor jeder Ausgabe Ihres Skripts gesendet werden (dies ist eine Protokolleinschränkung). Dazu müssen Sie vor jeder Ausgabe Aufrufe an diese Funktion senden, einschließlich und Tags sowie Leerzeichen.

Ist es das?

edit:

Können Sie das Cookie vom Server gesendet werden, z.B. mit der Firefox-Erweiterung Tamper Data, oder Telnet? Können Sie sehen, dass es bei der nächsten Anfrage vom Browser zurückgeschickt wird? Was ist der Rückgabewert von setcookie()? Funktioniert es nicht in allen Browsern oder nur in einigen?

+0

Scheint nicht das Problem zu sein. – lynn

+1

Alle Leerzeilen im PHP-Skript vor dem Aufruf von setcookie()? Oder vielleicht sogar Leerzeilen vor dem ersten

+0

Ja !! Das war's. – lynn

0
<?php 
ob_start(); 
if (isset($_COOKIE['test'])) { 
    echo 'cookie is fine<br>'; 
    print_r($_COOKIE); 
} else { 
    setcookie('test', 'cookie test content', time()+3600); /* expire in 1 hour */ 
    echo 'Trying to set cookie. Reload page plz';  
} 

bereits.

0

"localhost" herausnehmen und nur eine leere Zeichenfolge funktionierte für mich.

Verwandte Themen