php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Kann PHP ermitteln ob Cookies erlaubt sind


 
0413
07-02-2003, 09:40 
 
Vielleicht kann mir mir ja noch einmal einer von euch hier helfen.
Ich suche jetzt schon seit zwei Tagen und finde es einfach nicht. Vielleicht kann PHP das auch garnicht aber ich es sollte es doch eigentlich können.
Gibt es die Möglichkeit mit PHP abzufragen ob beim User Cookies erlaubt sind? Meiner Meinung nach fängt das Problem ja schon damit an das PHP Serverseitig läuft aber ich kenn mich nicht so wirklich damit aus.
Davon abgesehen stellt sich für mich die Frage ob man vieleicht Java Script einbauen kann weil da kann ich mir vorstellen wie das funktioniert.
Also wenn einer einen guten Rat hat dann danke ich ihm jetzt schon mal.

 
gastgast
07-02-2003, 09:44 
 
1. cookie setzen

2. gesetzten cookiewert abfragen

3. falls vorhanden = cookies werden angenommen, falls nicht vorhanden = cookies werden nicht angenommen

 
BielWeb
07-02-2003, 09:58 
 
Hallo.

Du hast recht 0413, mit PHP ist das nicht ganz so einfach.
Man kann also nicht erst schrieben und in der nächsten Zeile überprüfen ob es geklappt hat.

1. Cookie setzten.
2. Die Seite muss dann neu geladen werden bzw. eine andere.
evt. mit header(), musst aber aufpassen das Du nicht in eine Schleife kommst.
3. Dort kannst Du dann Abfragen ob der Cookie gesetzt wurde.

Ich habe gerade ein Statistiktool geproggt, wo erfasst wird wieviel User Cookies zulassen.

Armin

 
0413
07-02-2003, 10:02 
 
das war auch meine erste Idee aber leider habe ich schnell festgestellt das das mit meiner Logik so nicht funktionieren kann. Was ich eigentlich machen wollte ist eine sessionnummer als cookie abzulegen. Das ganze ist für die index Seite und soll den User in einer mysql datenbank erfassen. damit jetzt die sessionnummer nicht leer ist wollte ich das datum und halt 'unknown' reinschreiben. mein Problem hier ist warscheinlich ein witz für Leute die täglich damit arbeiten aber ich komme nicht weiter. das stück code hier unten fürht ja zu garnichts aber welche möglichkeit nach dem gesetzten cookie zu fragen habe ich denn außer die variable im cookie abzufragen?

$datum1=date(d.m.Y.H.i.s);
setcookie("test",$datum1);
if(!$datum1)
{
$sessionid=("unknown".$datum1);
}
else if(!$sessionid)
{
mt_srand((double) microtime()*1000000);
$sessionid=md5(str_replace(".","",$REMOTE_ADDR)+
mt_rand(100000,999999));
setcookie("sessionid",$sessionid);
}

 
wahsaga
07-02-2003, 10:44 
 
$datum1=date(d.m.Y.H.i.s);
setcookie("test",$datum1);
if(!$datum1) {... }
dass das unsinn ist, müsstest du selber einsehen.
du selber gibst $datum1 einen wert, deshalb wird es in der nachfolgenden if-abfrage auch immer einen wert haben.

aber welche möglichkeit nach dem gesetzten cookie zu fragen habe ich denn außer die variable im cookie abzufragen?
du hast nur genau diese eine möglichkeit, allerdings, wie weiter oben schon erwähnt wurde, erst auf der nächsten seite die du aufrufst.

in der selben seite, in der du das cookie setzt, kannst du es nicht wieder abfragen.

damit das cookie vom client zum server übertragen wird, ist nämlich erstmal ein neuer request, also die anforderung einer neuen seite (oder der gleichen seite erneut) durch den browser notwendig.

 
TBT
07-02-2003, 11:24 
 
du könntest dich mal "kurz im Kreis drehen" und dann weiste ob Cookie oder nicht.


// keine Session per Cookie => neuer User oder keine Cookies erlaubt
if(!isset($HTTP_COOKIE_VARS['sessionid'])){
// keine Session per URL => neuer User
if(!isset($HTTP_GET_VARS['sessionid'])){
// Session starten
session_start();
// Cookie setzen
setcookie("sessionid",session_id());
// Seite nochmal aufrufen und Session anhängen
header("Location: ".getenv("REQUEST_URI").(strpos(getenv("REQUEST_URI"),"?")?"&":"?")."sessionid=".session_id());
exit();
}else{
// alte Session wiederholen und weitermachen
session_start();
}
}
// hier kommt der User hin, wenn entweder ein Cookie da ist, oder die Session per URL übergeben wurde

 
BielWeb
07-02-2003, 11:35 
 
@TBT
Wenn Du session_start benutzt, muss man nicht noch extra einen Cookie setzten.

 
TBT
07-02-2003, 11:46 
 
aber nur wenn in der PHP.ini eingetragen ist,
das Sessions per Cookie weiterzugeben sind:

session.use_cookies = 1

 
BielWeb
07-02-2003, 12:04 
 
@TBT
Ist doch in der Regel erlaubt. Oder gibt es Hoster wo das unterbunden wurde?


Alle Zeitangaben in WEZ +2. Es ist jetzt 04:53 Uhr.