Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Cookie setzen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Cookie setzen


 
Godfrey
04-09-2005, 00:18 
 
Hallo,

ich habe das Problem, dass ich mein Cookie zwar lokal beim Testen setzen kann, es dann aber nicht gesetzt wird wenn es Online ist. Das Cookie wird in einer Funktion gesetzt.

function set_cookie(){
global $_COOKIE;
setcookie($this->cookie_name.'_session',
$this->session,time()+$this->cookie_time,'/');
setcookie($this->cookie_name.'_username',
$this->username,time()+$this->cookie_time,'/');
}


Lokal wird folgendes Cookie erstellt:
LOGIN_session
5881a229bdafcf38bed1048e5ef91249
localhost/
1024
1561514368
29806492
3830520464
29733066
*
LOGIN_username
admin
localhost/
1024
1561514368
29806492
3830830464
29733066
*


Kann es sein dass man irgendwo in der Ini einstellen muss, dass ein Cookie erzeugt werden darf? Der Code wird auf jeden Fall durchlaufen, das habe ich mit einer "echo"-Ausgabe getestet.

 
davidovich
04-09-2005, 08:30 
 
Ich kann dir zwar nicht bei deinem Problem helfen, aber ist $_COOKIE kein globales Supperarray? Wenn ja muss man es nihct in der function als global markieren.

 
ghostgambler
04-09-2005, 11:10 
 
Original geschrieben von Godfrey
ich habe das Problem, dass ich mein Cookie zwar lokal beim Testen setzen kann, es dann aber nicht gesetzt wird wenn es Online ist. Das Cookie wird in einer Funktion gesetzt.
schonmal geguckt, ob dein Browser das Cookie abblockt, wegen irgendwelcher Sicherheitseinstellungen?

 
hhcm
04-09-2005, 11:10 
 
Original geschrieben von Godfrey
Kann es sein dass man irgendwo in der Ini einstellen muss, dass ein Cookie erzeugt werden darf? Der Code wird auf jeden Fall durchlaufen, das habe ich mit einer "echo"-Ausgabe getestet.
Versuchs in deinem script mal mit

ini_set("session.use_cookies", "1");


Original geschrieben von davidovich
Ich kann dir zwar nicht bei deinem Problem helfen, aber ist $_COOKIE kein globales Supperarray? Wenn ja muss man es nihct in der function als global markieren.

$_COOKIE ist eine superglobale. Damit geb ich dir recht. Die Zeile ist überflüssig. $_HTTP_COOKIE_VARS jedoch (darum auch veraltet) müsste noch mit global deklariert werden..

 
Godfrey
04-09-2005, 15:39 
 
Danke für die Antworten. Habe den Code mal so abgeändert:

function set_cookie(){
global $_HTTP_COOKIE_VARS;
ini_set("session.use_cookies", "1");
setcookie($this->cookie_name.'_session',
$this->session,time()+$this->cookie_time,'/');
setcookie($this->cookie_name.'_username',
$this->username,time()+$this->cookie_time,'/');
}


Leider hat sich nichts verändert. Das Cookie wird nicht gesetzt.

Am Browser kann es nicht liegen, hab ich überprüft und es werden bei mir ja auch Cookies erlaubt. Lokal wird es nach wie vor erzeugt, nur Online nicht mehr. Irgendwie bringt mich sowas zum Verzweifeln.

Daran, dass das Cookie in einer Klasse erstell wird kann es doch nicht liegen?

 
hhcm
04-09-2005, 16:52 
 
Original geschrieben von Godfrey
Danke für die Antworten. Habe den Code mal so abgeändert:

function set_cookie(){
global $_HTTP_COOKIE_VARS;
ini_set("session.use_cookies", "1");
setcookie($this->cookie_name.'_session',
$this->session,time()+$this->cookie_time,'/');
setcookie($this->cookie_name.'_username',
$this->username,time()+$this->cookie_time,'/');
}



Wer hat denn von sowas gesprochen?

Die COOKIE_VARS sind veraltet.. Du solltest das ganze global gedöns weglassen (brauchst du bei $_COOKIE) nicht.

in deinem Script (nicht unbedingt in der funktion ini_set verwenden oder die php.ini ändern.

phpinfo() ausführen und nach der vermeindlichen session.use_cookies variable suchen wäre erst mal von vorteil um das ganze auszuschliessen.

 
Godfrey
04-09-2005, 17:31 
 
Hab die globals rausgeschmissen. Das mit den COOKIE_VARS hab ich wohl missverstanden, war aus dem Satz raus:

$_COOKIE ist eine superglobale. Damit geb ich dir recht. Die Zeile ist überflüssig. $_HTTP_COOKIE_VARS jedoch (darum auch veraltet) müsste noch mit global deklariert werden..

In der php.ini sind Cookies auch gesetzt. Also habe ich den extra ini im Code auch weggelassen. Sollte eigentlich alles funktionieren, trotzdem erstellt er mir Online das Cookie nicht...

Hab es auch mal mit dieser Funktion versucht:
void session_set_cookie_params(int lifetime [, string path [, string domain]])

leider mit dem gleichen Ergebniss. Weiss im Moment wirklich nicht weiter....

 
penizillin
04-09-2005, 17:41 
 
1. mach mal das E_ALL an.
2. kontrolliere mit irgendeinem http-traffic-analyzer, ob die entsprechenden header abgeschickt werden.

 
Godfrey
07-09-2005, 18:22 
 
So, bin mal wieder dazugekommen hier weiter zu testen. Da es ne private Page ist hab ich ja das Glück, dass es nicht so zeitkritisch ist. :)

Beim setzen der E-ALL habe ich die Fehlermeldungen:

Warning: Cannot modify header information - headers already sent by (output started
at /homepages/38/d29043923/htdocs/mot_preise/test.php:8)
in /homepages/38/d29043923/htdocs/mot_preise/test.php on line 10

Warning: Cannot modify header information - headers already sent by (output started
at /homepages/38/d29043923/htdocs/mot_preise/test.php:8)
in /homepages/38/d29043923/htdocs/mot_preise/test.php on line 11


erhalten.

Nach einigen Suchergebnissen konnte ich auch den Fehler finden. Es lag daran, dass das Setzen des Cookies innerhalb des Pageaufbaus stattfand. Das heisst, es wurden schon Daten vor dem Setzen an den Browser gesendet was das Setzen des Headers verhindertet. Danke an penizillin der den Entscheidenden Hinweis gegeben hat.

 
hhcm
07-09-2005, 18:40 
 
Danke an penizillin der den Entscheidenden Hinweis gegeben hat.

OKOK Danke an penizilin aber da hättest du schon viel früher drauf kommen können....
E_ALL wirst du hier im Forum in FAST jedem PHP Thread wiederfinden.
:teach:

TZTZTZ Schäm dich... :p

 
Godfrey
08-09-2005, 13:35 
 
Original geschrieben von hhcm
OKOK Danke an penizilin aber da hättest du schon viel früher drauf kommen können....
E_ALL wirst du hier im Forum in FAST jedem PHP Thread wiederfinden.
:teach:

TZTZTZ Schäm dich... :p

Hätt ich können, hab ich aber nicht. Und ich bin sicher nicht der einzige dem solche Fehler passieren. Aber muss man sich deshalb gleich so Oberlehrerhaft verhalten? Könnte mir gut vorstellen, dass auch Dir Anfangs solche oder ähnliche Fehler unterlaufen sind....:rolleyes:

 
hhcm
08-09-2005, 13:42 
 
Och ne.. Nicht direkt in den falschen hals bekommen.. Ich wollte nur soetwas sagen wie

:rtfm: oder :google:

*g*


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:00 Uhr.