[php] Prüfung auf Cookies

Du kannst einen Cookie setzen und direkt danach (Seite muss aber neugeladen werden) überprüfen, ob er vorhanden ist.
 
aber ohen neuladen also nur ne prüfung ob cookie setzen möglich is gibt es net?
 
Ich kenne keine Funktion die das prüft und mit Google habe ich auch keine andere Lösung gefunden. Das heißt aber nicht, dass sie nicht gibt. ;)

Vielleicht kennt ja jemand anderes eine...

EDIT: Oh, da war einer schneller. Und ich habe wohl nach den falschen Begriffen gesucht :rolleyes:
 
Ausser den genannten kenne ich keine weitere Möglichkeit. Sind doch beide aber praktisch anwendbar, oder nicht?
 
PHP:
function check_cookie()
{
    setcookie("TestCookie", "test");
    if (!isset($_COOKIE["TestCookie"]))
    {
        $check = 0;
    }
    else
    {
        $check = 1;
        setcookie("TestCookie", "test", time());
    }
    return $check;
}
So weit habe ich den Code bis jetzt funtioniert auch alles.
Nur nach setcookie("TestCookie", "test"); müsste ich es schafen das die Seite neugeladen wird weil das auslesen des cookie geht nicht direkt nach dem erstellen.
 
Wenn ich das so einfüge gibt firefox mir folgenend fehler:
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
 
Du kannst auch so eine Weiterleitung auf die Seite selbst machen:

Code:
Im Head:
<?php
if ($reload) {
  echo "<meta http-equiv='refresh' content='1; URL=$_SERVER[PHP_SELF]'>";
}
?>

Die Variable solltest du setzen, damit sich die Seite nur neulädt, wenn du es willst. Am besten holst du die über GET, aber das ist letztendlich egal.

Sprich du setzt den Cookie und die Variable, lädst dadurch nur einmal neu.
 
Mc.Alcatraz schrieb:
Wenn ich das so einfüge gibt firefox mir folgenend fehler:
Die aufgerufene Website leitet die Anfrage so um, dass sie nie beendet werden kann.
header() muss aufgerufen werden, bevor eine Ausgabe erfolgt ist. Um das zu erzwingen kann man ob_start() und ob_end_flush() verwenden.
Mehr Infos gibts hier.

//edit
Wird header() denn bei jedem Start der Seite aufgerufen?
Dann wird natürlich immer die aktuelle Seite geladen. Eine Art Endlosschleife.
 
Zuletzt bearbeitet:
PHP:
function check_cookie()
{
    setcookie("TestCookie", "test");
    $_COOKIE['TestCookie']='test';
    if (!isset($_COOKIE["TestCookie"]))
    {
        $check = 0;
    }
    else
    {
        $check = 1;
        setcookie("TestCookie", "test", time());
    }
    return $check;
}

Wieso nicht so ?
 
Dein script ist ja auch an disser stelle finde ich ein logischen bruch .. erst setzt du ein cookie un d schaust dann ob es gesetzt ist ? wieso soll man das verstehn ? es geht so nicht was du da machst da ein cookie mit den werte nüber schrieben werden muss mit dem man sie voher gesetzt hat also muss du setcookie("TestCookie", "test",''); dan machen beim 1. mal cookie setzen ...
 
naja ich setzte erst eines und will direkt danach prüfen ob es auch erstellt wurde? das ist die logik an der sache
 
PHP:
<?php

function delete_cookie() {
  setcookie("TestCookie", "test", time());		
}

function set_cookie() {
  setcookie("TestCookie", "test");		
}

function check_cookie() {
    return (isset($_COOKIE["TestCookie"]));
}


	if(check_cookie()) {
		delete_cookie();
		echo "ja";
	}else{
		set_cookie();
		header("Location: ".$_SERVER['PHP_SELF']);
  }
?>
Hast du dir das so vorgestellt?
Ich hab die Funktion halt auseinandergenommen, um keine Endlosschleife zu erzeugen.

//edit
Oder so?
PHP:
<?php

function delete_cookie() {
  setcookie("TestCookie", "test", time());		
}

function set_cookie() {
  setcookie("TestCookie", "test");		
}

function check_cookie() {
    return (isset($_COOKIE["TestCookie"]));
}

	if(!isset($_GET['action'])) die("ka");
	
	switch($_GET['action']) {
    case "set": set_cookie();
                echo "cookie gesetzt!";
                break;
								
    case "delete": delete_cookie();
                   echo "cookie gelöscht!";
                   break;
    case "check":  if(check_cookie()) 
                       echo "ja, gesetzt";
                   else
                       echo "nein, nicht gesetzt!";
                   break;
    default: die("was?");
  }
?>
Aufgerufen wird es mit:
.php?action=check
.php?action=set
.php?action=delete

@AlbertLast:
$_COOKIE['TestCookie']='test';
Auf diese Weise wird kein Cookie gesetzt. Die Überprüfung ergibt immer true, auch wenn es das Cookie gar nicht gibt.
 
Zuletzt bearbeitet:
Zurück
Oben