2017-06-03 5 views
1

das ist ein bisschen seltsam. Ok, ich arbeite mit einer Sitzung, um zu wissen, wann sich der Benutzer angemeldet hat. Wenn sich der Benutzer anmeldet, wird eine Sitzung erstellt.PHP-Sitzung funktioniert nur auf einigen Seiten

Das Problem, das ich habe, ist die Sitzung funktioniert nicht auf einigen Seiten. Wenn ich eine var_dump($_SESSION['u_up']); auf meiner Indexseite mache, wird die Sitzung angezeigt: array(1) { ["u_up"]=> string(7) "example" }, aber wenn ich einen Ajax-Aufruf an ein anderes Skript mache und dasselbe mache var_dump($_SESSION['u_up']);, wird ein leeres Array zurückgegeben: array(0){}.

Weiß jemand, warum das passiert? Ich habe session_start() oben auf beiden Dateien aber irgendwie mein zweites Skript wird nicht auf meinen Sitzungen aufheben. Jede Hilfe wird sehr geschätzt!

Das ist mein einfacher Ajax-Skript:

//Update to not view tutorial   
$.ajax({ 
    type: "POST", 
    url: 'http://192.168.1.75/php/script.php', 
    success: function(data){ 
     console.log(data); 
    } 
}); 
+0

Sind beide Seiten auf derselben Domain/Subdomain? –

+2

Der Code, den Sie zeigen, ist einfach nicht genug, um Lösungen zu finden, fügen Sie das Ajax-Skript und den wesentlichen Teil des PHP-Skripts, die nicht funktioniert –

+0

stellen Sie bitte sicher, dass Ihre 'php.ini' Datei hat dies:' session.use_cookies = 1 und Pfad wird für 'session_save' gesetzt. – NDFA

Antwort

0

Ok, so stellt sich heraus, ich die url in der Ajax-Anfrage ändern musste auf localhost. So endete es so aufzublicken:

//Update to not view tutorial   
$.ajax({ 
    type: "POST", 
    url: 'http://localhost/php/script.php', 
    success: function(data){ 
     console.log(data); 
    } 
}); 

Sie wissen nicht wirklich, warum ich localhost angeben müssen, anstatt in der Lage, mein Computer die IP angeben.

+0

[Unterschied zwischen 127.0.0.1 und IPv4-Adresse] (https://superuser.com/questions/897699/what-is-the-difference-between-127-0-0-1-and-my-assigned-ipv4- Adresse) – Fahmi

2

Sie eine Cross-Domain-Anfrage zu tun, 192.168.1.75 und localhost sind nicht die gleichen Domänen betrachtet und gemeinsam nutzen keine Cookies.

Aus Sicherheitsgründen enthalten Cross-Domain-Anfragen keine Cookies. Wenn Sie das phpsssid-cookie nicht senden, können Sie Ihre alte php-Sitzung nicht abrufen, wodurch Ihre Sitzung leer wird.

Darüber hinaus empfehle ich Ihnen, relativen Pfad zu verwenden, um solche Probleme in der Zukunft zu vermeiden.

$.ajax({ 
    type: "POST", 
    url: '/php/script.php', 
    success: function(data){ 
     console.log(data); 
    } 
}); 
Verwandte Themen