Ich habe die Domäne jdavis.software
und zwei Subdomains om.jdavis.software
und api.jdavis.software
haben. Ich versuche einfach, einen asynchronen (Ajax) Anruf von der om
zu der api
, die eine $_SESSION
Variable setzt, dann laden Sie die gleiche om
Seite und zeigen Sie die Sitzung. Ich habe die session.cookie_domain = .jdavis.software
in meiner php.ini festgelegt, so dass Sitzungserstellung von der gleichen Stammdomäne ist.Sitzungsverwaltung - Cross Subdomains
Domains:
Apache vhost config: (sowohl für Unterdomänen und ihre relativen Verzeichnisse)
AllowOverride All
Header set Access-Control-Allow-Credentials "true"
Header set Access-Control-Allow-Origin "*"
api.jdavis.software/test.php
<?php
session_start();
function test(){
$_SESSION['test'] = 123;
}
test();
print_r($_SESSION);
exit();
?>
om.jdavis.software/index.php
<?php
session_start();
print_r($_SESSION);
?>
<!DOCTYPE html>
<html>
<head>
<script>
var ajax = function(data){
http = new XMLHttpRequest();
http.open((data.method) ? data.method : "POST", (data.url) ? data.url : "/");
http.send(data.params);
http.onreadystatechange=()=>{
if(http.status != 404){
http.addEventListener("load", data.callback);
}
else{
console.log("Error: Issue with server call...");
}
}
};
function submitForm(form) {
var form = new FormData(form);
ajax({
url: "http://api.jdavis.software/test.php",
method: "POST",
params: form,
callback: function(e){
console.log(e.target.response);
}
});
event.stopPropagation();
event.preventDefault();
return false;
};
</script>
</head>
<body>
<form onSubmit="submitForm(this);">
<input type="submit">
</form>
</body>
</html>
Die sessions_id-Gruppen sind gleich, und wenn ich print_r($_SESSION)
nachdem ich Führen Sie den Ajax-Anruf und laden Sie die Seite neu, druckt nicht einmal die ID ...
Frage: Warum sind nicht die $_SESSION
Variablen drucken?
Sie müssen uns alle relevanten Code zeigen. Bitte lesen Sie: [Wie erstellt man ein minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) und auch [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/ help/how-to-ask) –
@MagnusEriksson es ist buchstäblich '$ _SESSION ['test'] = 123' in meinem Code nach der Authentifizierung erfolgreich ist, die Cookies (session_id) ist die gleiche auf beiden aber wenn ich' var_dump ($ _ SESSION) 'nichts druckt aus. –
Haben Sie die Sitzungscookie-Domain so eingerichtet, dass sie den Subdomains entspricht? Haben Sie 'session_start()' vor dem Setzen/Lesen der '$ _SESSION' super global? Haben Sie "PHP-Sitzungen über Sub-Domains" gegooglet? Das Problem, wenn wir den Code nicht sehen können, ist, dass wir keine Ahnung haben, was Sie getan haben/nicht getan haben, und wir müssen entweder anfangen zu raten oder nach allem zu fragen. –