请问如何在使用了 ajax 后,仍能访问到$_SESSION?

2020-03-12 17:04:56 +08:00
 shavy

现有 index.php ,该文件存储了一些诸如用户名,权限之类的信息进去$_SESSION,

然后 index.php 通过 ajax 访问 func.php ,func.php 处理请求后,返回 html 字符串显示在 index.php 指定的区域内。

现在的问题是,我在 func.php 里面,获取不到$_SESSION 信息,如何达成在 func.php 里访问到$_SESSION 的内容这个目的?

哦,忘记说了。同样的代码,在 localhost 下,func.php 是能够访问到$_SESSION。但是上传到公网服务器后就不行了。

请有经验的朋友指教,谢谢!

3516 次点击
所在节点    PHP
9 条回复
b821025551b
2020-03-12 17:10:02 +08:00
然后 index.php 通过 ajax 访问 func.php

这里的描述应该是 index.php 渲染出来的前端页面通过 ajax 的方式访问 func.php ;

第一反应是你的 ajax 请求没带 cookie,但是你又说 localhost 有效,那么很大可能是权限没配置对,session 根本就没存储下来。
mokeyjay
2020-03-12 17:10:09 +08:00
“ index.php 通过 ajax 访问 func.php” 是指 index 里面写 curl 发起 ajax 请求 func,还是用户访问 index 后通过用户的浏览器发起 ajax ?

上传到公网服务器后,index 和 func 还在同一个域名 /路径 下吗?你的 session cookie 作用域怎么设置的?
jugelizi
2020-03-12 17:10:16 +08:00
ajax 请求带着 cookie 了吗
cbasil
2020-03-12 17:15:47 +08:00
这个可能是你服务器 session 目录权限不够,centos 中 session 在 /var/lib/php/session,通过 ls all 查看权限,ps aux|grep php 查看 php-fpm 的 USER 是 root 还是 www,把 /var/lib/php/session 目录权限改为 php-fpm 执行的用户即可。
chen1164162915
2020-03-12 20:54:20 +08:00
你所讲的 AJAX 是否指 CURL?
manhere
2020-03-12 21:00:00 +08:00
对比下 php 是否开启了 session 的 auto start
gidot
2020-03-12 22:56:45 +08:00
要么你试着先在 index.php 中获取 session id,并用 ajax 传到 func.php ,再从 func.php 头部 sessionstart 之前设置本次的 session id。
imdong
2020-03-13 10:45:07 +08:00
我怀疑是 cURL,请把 cookie 也传过去…
而且,有必要这样做么??
同一个站内的话,直接调用不就好了
ETO
2020-03-13 17:39:17 +08:00
检查一下 cookie 有没有带上去,然后在检查一下服务器上的 session 有没有开启,可以用 session_status()这个函数测试一下,然后再检查一下 session 的文件有没有写入权限。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/652237

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX