PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Cookie setzten (http://www.selfphp.de/forum/showthread.php?t=12470)

ben207 07.02.2006 17:28:11

Cookie setzten
 
Hallo zusammen,

das Verwendung von Cookies, die ich setze klappt manchmal, manchmal nicht.
Meine Vorgehensweise:
Code:

$CookiValue =  $id. " \n";
$CookiValue .= "Erstellt am " . date("Y-m-d H_i_s") . "\n";
setcookie("CookieName_1", $CookiValue, 1000);

Also ich erstell erst den Cookiename dann den Cookietext und zum Schluss schreibe ich den Gültigkeitswert. Der Cookie wird erstell, aber wenn ich den gesetzten Cookie wider löschen möchte mit:
Code:

setcookie("CookieName_1", "", 0 );
das klappt nicht, der Cooki bleibt einfach bestehen.

Beim einloggen prüfe ich ob schon Cookie gesetzt worden ist mit:
Code:

if ( isset($_COOKIE["CookieName_1"] ))
        return TRUE ;
else
        return FALSE ;

Dieser Check klappt manchmal manchmal nicht ?
IE schein überhautp sie nicht akzeptiert zu haben.
Firfox nur manchmal.

Gibt es in der php.ini oder im Webserver Einstellungen, die das Verhalten der Cookie beeinflussen?
Danke im Voraus.

PHP 4.3.11, Win XP Prof, IIS 6.0, IE 6.0, Firefox 1.5.0.1

Grüße ben207

BigManu 08.02.2006 09:20:14

AW: Cookie setzten
 
versuche es mal mit

setcookie("CookieName_1", $CookiValue, time()+1000);

und zum logout:

setcookie("CookieName_1", $CookieValue, time()-1000);

das sollte auf jeden fall funktionieren!

ben207 08.02.2006 09:48:15

AW: Cookie setzten
 
Hallo,

für die Zeitangaben habe ich mir inzwieschen eine Funktion gefunden:
Code:

function tage ($anzahl)
{
    $sekunden = time() + 3600 * 24 * $anzahl;
    return $sekunden;
}

Es hat auch nicht viel geholfen :-(

BigManu 08.02.2006 09:51:54

AW: Cookie setzten
 
hast du mal meine codezeilen ausprobiert?

ben207 21.02.2006 17:15:30

AW: Cookie setzten
 
Hallo,

tschuldige, dass ich nicht früher geantwortet habe.

Habe Dein Vorschlag grade ausprobiert, es funktioniert Einwand frei.
Was muss ich mache um die "Lebensdauer" des Cookies zur verlängern?
Mit meiner Methode wird der Cookie nur unzuverlässig bearbeitet.

Grüße ben207

xabbuh 21.02.2006 21:16:11

AW: Cookie setzten
 
Zitat:

Zitat von ben207
Was muss ich mache um die "Lebensdauer" des Cookies zur verlängern?

Damit ein Cookie länger gültig ist, musst du einen entsprechend angepasst UNIX-Timestamp als 3. Parameter an setcookie() übergeben.

BigManu 22.02.2006 08:25:19

AW: Cookie setzten
 
einfach die zahl hinten erhöhen oder verringern:

setcookie("CookieName_1", $CookiValue, time()+"ZAHL IN SEKUNDEN");

und logout dann wieder

setcookie("CookieName_1", $CookiValue, time()-"ZAHL IN SEKUNDEN");

Grüße,
BigManu

ben207 22.02.2006 11:54:49

AW: Cookie setzten
 
Hallo,

habe bissen rum probiert, für die Tage habe mir eine externen Funktion gebaut(eigentlich aus dem Netz gezogen):
Code:

funktion tage ($tage)
{
#        $sekunden = time() + 3600 * 24 * $tage;
        $sekunden = 3600 * 24 * $tage;
        return $sekunden;
}

Übergeben werden die Tage, sie werden aus Sekunden ungerechten, den Sekunden Teil habe ich auskommentiert.
und direkt bei setzten der Cookie eingebaute:
Code:

setcookie("CookieName_1", $CookiValue, ( time() + tabe(1000) ) );
Macht das ein Unterschied ob ich die Zeitberechnung direkt in der PHP Funktion "setcookie" mache oder nicht, wenn ich sie in der Funktion mache wird der Cookie gesetzt.
Aus meiner kurzen Erfahrung macht das was aus, falls jemand weis warum, würde ich gerne eine Erklärung bekommen.

Der Cookie wird gesetzt, aber mit löschen klappt das nicht so ganz :-(
Cookie löschen sieht bei mir so aus:
Code:

setcookie("CookieName_1", $CookiValue, (time() - tage(1000) ) );
Die Variable "$CookiValue" habe ich Mal mit Inhalt gelassen, Mal nur ein Leerzeichen, Mal nur initialisiert.
also:
Code:

$CookiValue = " "; // Leerzeichen
$CookiValue = ""; // initialieseiren
$CookiValue = "jergend ein Text";

Liegt es an dem Wert der Variable "$CookieValue" oder dem Datum, dass der Cookie nicht gelöscht wird?

Grüße ben207

xabbuh 22.02.2006 18:19:22

AW: Cookie setzten
 
Zitat:

Zitat von ben207
PHP-Code:

funktion tage ($tage)
{
#    $sekunden = time() + 3600 * 24 * $tage;
    
$sekunden 3600 24 $tage;
    return 
$sekunden;



Gibt es einen besonderen Anlass, dass du die obere Werzuweisung der Variablen $sekunden auskommentiert und durch die untere ersetzt hast? So berechnest du lediglich wieviele Sekunden $tage Tage haben. Die Anzahl an Sekunden musst du aber noch zum dem aktuellen Datum addieren, um das Ablaufdatum zu erhalten.

Zitat:

Zitat von ben207
PHP-Code:

setcookie("CookieName_1"$CookiValue, ( time() + tabe(1000) ) ); 

Macht das ein Unterschied ob ich die Zeitberechnung direkt in der PHP Funktion "setcookie" mache oder nicht, wenn ich sie in der Funktion mache wird der Cookie gesetzt.

Ob die Berechnung durch eine extra Funktion oder direkt in setcookie() erfolgt, ist unerheblich, so lange die Berechnung korrekt ist.

Zitat:

Zitat von ben207
Der Cookie wird gesetzt, aber mit löschen klappt das nicht so ganz :-(

Woran machst du fest, dass der Cookie nicht gelöscht wird?

ben207 23.02.2006 10:41:49

AW: Cookie setzten
 
Hallo,

mit dem Datum wollte ich Gewissheit erlange, wo das Datum berechten werden muss, das Auskommentieren in der Funktion "tage" ist nur zum testen.

Zitat:

Woran machst du fest, dass der Cookie nicht gelöscht wird?
Im Firefox sehe ich die Cookie über den plugin "AnEC Cookie Dietor", wenn ich mich auslogge und beim ausloggen "löschen" ich den Cookie mit
Code:

setcookie("CookieName_1", $CookiValue, ( time() - tabe(1000) ) );
ist der Cookie noch da.
Beim IE funktioniert das löschen problemlos, das auslesen der Cookie dagegen weniger.
Also wenn ich das Fenster einfach nur schlisse, der Cookie ist da, wie geplant, wenn ich den Browser öffnen und die Seite aufrufen wird der Cookie beim ersten laden nicht erkannt, erst nach dem zweitem Lade wird der Cookie erkannt.
Woran kann diese Verhalten von IE liegen?

Grüße ben207


Alle Zeitangaben in WEZ +2. Es ist jetzt 15:30:06 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.