Mal wieder die Cookies!

icefire

Erfahrenes Mitglied
Hallo!

Ich habe hier einiges im Forum über Cookies gefunden und mir folgendes zusammen gereimt:
PHP:
$ip = $_SERVER['REMOTE_ADDR'];
if(isset($HTTP_COOKIE_VARS["MapVoting"]))
	{$ip_check = $HTTP_COOKIE_VARS["MapVoting"];}
		else{$ip_check = 0;}
if($ip_check != $ip)
	{setcookie("MapVoting", $ip, time()+60*60*24*30, "/downloads/");}
		else{echo "Du hast bereits gepostet!"; die();}

Selbstverständlich habe ich auch die übliche Fehlermeldung (Cannot add header...)! Ich lese nur, das ich ein Cookie als erstes setzen muss - also vor echo usw. - aber wo? Wenn ich es im File oben postiere kommt trotzdem die Fehlermeldung - und in der index.php habe ich bereits session_start (); stehen - das, was ich hier auch aus dem Forum entnommen habe bereits Header Informationen sendet! Also was ist denn eigentlich die beste Position für eine Cookiefunktion?
In den Tutorials steht auch, das ich mit
ob_start(); undob_end_flush(); das ganze steuern kann - aber wie? gehört das nur in die index.php (was auch schon drin ist) oder muss ich das überall da platzieren wo header Informationen gesendet werden? verstehe das nicht so recht.....
 
Hi,

Also:

Der Cookie wird über den document header gesetzt d.h es darf vorher keine Ausgabe statt finden da das Senden des Header dann schon abgeschlossen ist.

Die beste Möglichkeit nen Cookie zu setzen ist so früh wie möglich!

ob_start() startet die Ausgabepufferung. Das bedeutet das auch wenn Du n echo an ner bestimten Position setzt solange nichts geschrieben wird bis Du
ob_end_flush() oder ob_end_clean() aufrufst wobei zweiteres den Puffer löscht und ersteres den Puffer ausgiebt. ob_get_contents(); würde Dir den Puffer in eine Variable zurückgeben.

Mehr dazu findest Du HIER

Da Du aber schon eine session benutzt brauchst Du setcookie() doch garnicht mehr. Es reicht wenn Du in $_SESSION[MapVoting] oder so das einträgst was Du in den Cookie eintragen würdest :-)....
 
Zurück