为什么我不能从我的AJAX调用的PHP脚本中访问会话变量?

13 php ajax jquery

我有一个带有会话变量的PHP脚本,设置如下:

$_SESSION['VAR1'] = "test"
Run Code Online (Sandbox Code Playgroud)

现在,我通过jQuery启动的POST请求使用AJAX,因此我有一个名为ajax.php具有所有必需功能的脚本.

当我尝试echo $_SESSION['VAR1']在ajax.php中访问我的会话变量()时,它什么都不产生.

会话不能用于AJAX请求吗?

cle*_*tus 30

您需要在访问会话之前访问会话的每个页面上执行此操作:

session_start();
Run Code Online (Sandbox Code Playgroud)

这意味着在设置会话变量的页面和尝试检索它的AJAX页面上.两者都需要打电话session_start().

只要AJAX请求调用同一域中的脚本(从而获得对会话cookie的访问权限),就没有理由无法访问会话变量.毕竟AJAX请求只是另一个HTTP请求.


Sal*_*n A 5

确保两个页面的域名(即AJAX容器和AJAX脚本相同).这是一个例子:

http://mydomain.com/login.php           (set session variables here)
http://mydomain.com/ajax-container.php  (session variables are visible here)
http://mydomain.com/ajax-script.php     (session variables are visible here)
http://www.mydomain.com/ajax-script.php (session variables are NOT visible here)
Run Code Online (Sandbox Code Playgroud)

另一个:

http://www.mydomain.com/login.php          (set session variables here)
http://www.mydomain.com/ajax-container.php (session variables are visible here)
http://www.mydomain.com/ajax-script.php    (session variables are visible here)
http://mydomain.com/ajax-script.php        (session variables are NOT visible here)
Run Code Online (Sandbox Code Playgroud)