2016-04-11 7 views
0

ich den folgenden Code bin mit:Session Modifikatoren

session_set_cookie_params(-1,'/','myAwesomeDomain.com',true,true); 

die PHPSESSID Cookie zu sichern.

Das Problem ist, dass ich nicht den Namen des Cookie ändern anderswo mit diesem:

session_name('_uid'); 

Meine Frage ist: Wie diese beiden Methoden zu bekommen, miteinander zu arbeiten? Gibt es auch eine Methode, um auf "Wenn die Browsersitzung endet" beim ersten Parameter der ersten Methode zu verweisen?

PS: Es gibt eine session_start() in der Datei: D

EDIT: ich auch Methoden mit der php.ini Datei basteln akzeptieren.

EDIT v2: Die Datei, die enthält das von jedem anderen getrennt ist und es spielt keine Rolle, wie viele Zeilen von Code, den ich dies tun müssen. Verwenden include_once().

EDIT v3: Das ist lächerlich. PHP setzt einen Punkt vor die Domain: sumPhpCookies
Jetzt bin ich total verloren warum das ist. (Ich benutze nicht einmal die session_name hier.)

EDIT v4: Code:

<?php 
// Somehow rename PHPSESSID cookie 
session_set_cookie_params(-1,'/','www.forcemagic.xyz',true,true); 
session_start(); ?> 
+0

Der Browser ist Client-Seite. Es gibt (leider) keine Möglichkeit herauszufinden, ob jemand seinen Browser geschlossen hat oder nicht, da er dem Server nichts darüber zurückgibt (und dort befindet sich auch PHP). Sitzungen sterben einfach ab, nachdem der Benutzer die Seite nicht innerhalb der angegebenen Lebensdauer neu geladen hat. - Eine Javascript-Lösung ist auch sehr ungenau. (Glaub mir, ich habe es versucht) – NoobishPro

+0

Okay, ich verstehe :) Dann, wenn Sie können, bitte helfen Sie mit der ersten Frage. Bereits bearbeitet: D – ForceMagic

+0

Nicht sicher, warum Sie 'session_set_cookie_params' brauchen. Sicher kann alles von einem einfachen 'Setcookie' gemacht werden – RiggsFolly

Antwort

1
session_name('_uid') 

As the manual says, sollte der Name alphanumerische Zeichen enthalten nur (Buchstaben, Ziffern), und darf nicht nur aus Ziffern bestehen, muss es mindestens einen Buchstaben enthalten.

So dass Unterstrich war eigentlich das Problem.

0

Die session_name hat tatsächlich vor die session_set_cookie_params erklärt werden.

http://php.net/manual/en/function.session-set-cookie-params.php siehe den Kommentar von "brandan, bildumgsroman.org"

Der Browser Client-Seite ist. Es gibt (leider) keine Möglichkeit herauszufinden, ob jemand seinen Browser geschlossen hat oder nicht, da er dem Server nichts darüber zurückgibt (und dort befindet sich auch PHP). Sitzungen sterben einfach ab, nachdem der Benutzer die Seite nicht innerhalb der angegebenen Lebensdauer neu geladen hat. - Eine Javascript-Lösung ist auch sehr ungenau. (Glaub mir, ich habe es versucht)

Es gibt jedoch eine Möglichkeit zu bestimmen, ob ein Browser geschlossen wurde oder nicht. Ich würde es jedoch nicht empfehlen;

Sie könnten einen wiederholten Ajax-Aufruf erstellen, der einen einfachen Zeitstempel in der Datenbank speichert, in dem ein Benutzer mit einer bestimmten Sitzung online ist. Dann können Sie einen Cronjob auf PHP ausführen, der diese Datenbank nach Keepalive-Zeitstempeln mit einem größeren Unterschied zwischen now und den letzten (2) Ping (s) prüft, und dann weiß der Cronjob, dass das Browsen beendet wurde.

+2

** Aus dem Handbuch * * _Stellen Sie die in der Datei php.ini definierten Cookie-Parameter ein. Die Wirkung dieser Funktion dauert nur für die Dauer des Skripts. Daher müssen Sie für jede Anfrage session_set_cookie_params() aufrufen, bevor session_start() aufgerufen wird_ – RiggsFolly

+0

Es funktioniert nicht: c BTW, ich habe das schon probiert. – ForceMagic

+0

@RiggsFolly Sie sagen, dass es eine bessere Praxis ist, es in der Ini-Datei zu setzen? Und wie stelle ich es ein?/ Sorry, ich bin ein Anfänger, wenn es um die Sitzungsbehandlung geht: P/ – ForceMagic

Verwandte Themen