2017-08-07 1 views
0

Ich habe hier und anderswo alles angeschaut, nichts scheint zu funktionieren!PHP Session ID Reset beim Laden der Seite

Hier ist die Frage:

  • Auf Seite zu laden, auf session_start() Aufruf, ich habe eine PHP-Session-ID zugewiesen bekommen.
  • Sobald ich die Seite aktualisieren, bekomme ich eine neue Session-ID und das macht die $_SESSION Variable leer.

PHP Version ist: 5.6.30-0+deb8u1

habe ich ein kleines Skript außerhalb der Anwendung zu replizieren:

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

echo '<pre>'; 
echo 'orig session.cookie_domain = '.ini_get('session.cookie_domain').PHP_EOL; 
echo 'orig session.cookie_secure = '.ini_get('session.cookie_secure').PHP_EOL; 
ini_set('session.cookie_domain', '.mydomain.com'); 
ini_set('session.cookie_secure', 'Off'); 
echo 'new session.cookie_domain = '.ini_get('session.cookie_domain').PHP_EOL; 
echo 'new session.cookie_secure = '.ini_get('session.cookie_secure').PHP_EOL; 
echo '-------------'.PHP_EOL; 
print_r($_COOKIE); 
session_start(); 
print_r($_COOKIE); 
setcookie(ini_get('session.name'), session_id(), 0, '/', ini_get('session.cookie_domain'), false, false); 
print_r($_COOKIE); 
echo '-------------'.PHP_EOL; 
echo 'session id: '.session_id().PHP_EOL; 
echo '-------------'.PHP_EOL; 
$_SESSION[session_id()][] = date('Y-m-d H:i:s'); 
print_r($_SESSION); 
echo '</pre>'; 
//phpinfo(); 

Ausgabe des Skripts ist:

orig session.cookie_domain = 
orig session.cookie_secure = 
new session.cookie_domain = .mydomain.com 
new session.cookie_secure = Off 
------------- 
Array 
(
    [__cfduid] => ddxxx 
    [_ga] => GA1.2.xxxx 
    [wp-settings-time-2] => 1500996194 
    [_gid] => GA1.3.xxxx 
) 
Array 
(
    [__cfduid] => ddxxx 
    [_ga] => GA1.2.xxxx 
    [wp-settings-time-2] => 1500996194 
    [_gid] => GA1.3.xxxx 
) 
Array 
(
    [__cfduid] => ddxxx 
    [_ga] => GA1.2.xxxx 
    [wp-settings-time-2] => 1500996194 
    [_gid] => GA1.3.xxxx 
) 
------------- 
session id: 7n4mm16s525mpqo99r242p90l3 
------------- 
Array 
(
    [7n4mm16s525mpqo99r242p90l3] => Array 
     (
      [0] => 2017-08-07 16:01:18 
     ) 

) 
+0

Klingt wie Ihre Domain nicht korrekt eingestellt ist. Was ist die tatsächliche Domäne, die Sie verwenden, verglichen mit der, die Sie festgelegt haben? –

+0

Und welche URL gehen Sie in Ihrem Browser? Müssen Sie tatsächlich cookie_domain setzen? Was ist Ihr Anwendungsfall, um nicht nur den Host zu verwenden? –

+0

@ JonStirling gibt es eine Staging-Umgebung auf einer Sub-Domain, deshalb. Nicht einstellen tut das Gleiche. – pycvalade

Antwort

0

Nach vielen Nachforschungen kam es zu einem Varnish-Cache, der das Problem verursachte. Das Problem liegt darin, dass Varnish die Seite ohne Sitzungscookies zwischenspeichert, so dass sie nach einer Aktualisierung der Seite unbrauchbar wird.

Deaktivieren Varnish auf dem Server löste das Problem für mich.

fand auch heraus, das für diejenigen, die Varnish lieber aktiv zu halten, aber Sitzungen an der Arbeit: Cache-Control Header Fix

0

dies tun, um Die bestehende Sitzung beibehalten:

if(session_status() !== PHP_SESSION_ACTIVE) { 
    session_start(); 
} 
+0

immer noch nicht funktioniert .. In der App verwende ich auch das ohne Erfolg: if (! Session_id()) { session_start(); } – pycvalade

Verwandte Themen