V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shavy
V2EX  ›  PHP

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

  •  
  •   shavy · 2020-03-12 17:04:56 +08:00 · 3362 次点击
    这是一个创建于 1504 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    9 条回复    2020-03-13 17:39:17 +08:00
    b821025551b
        1
    b821025551b  
       2020-03-12 17:10:02 +08:00
    然后 index.php 通过 ajax 访问 func.php

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

    第一反应是你的 ajax 请求没带 cookie,但是你又说 localhost 有效,那么很大可能是权限没配置对,session 根本就没存储下来。
    mokeyjay
        2
    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
        3
    jugelizi  
       2020-03-12 17:10:16 +08:00 via iPhone
    ajax 请求带着 cookie 了吗
    cbasil
        4
    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
        5
    chen1164162915  
       2020-03-12 20:54:20 +08:00
    你所讲的 AJAX 是否指 CURL?
    manhere
        6
    manhere  
       2020-03-12 21:00:00 +08:00 via Android
    对比下 php 是否开启了 session 的 auto start
    gidot
        7
    gidot  
       2020-03-12 22:56:45 +08:00
    要么你试着先在 index.php 中获取 session id,并用 ajax 传到 func.php ,再从 func.php 头部 sessionstart 之前设置本次的 session id。
    imdong
        8
    imdong  
       2020-03-13 10:45:07 +08:00 via iPhone
    我怀疑是 cURL,请把 cookie 也传过去…
    而且,有必要这样做么??
    同一个站内的话,直接调用不就好了
    ETO
        9
    ETO  
       2020-03-13 17:39:17 +08:00
    检查一下 cookie 有没有带上去,然后在检查一下服务器上的 session 有没有开启,可以用 session_status()这个函数测试一下,然后再检查一下 session 的文件有没有写入权限。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1206 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:14 · PVG 07:14 · LAX 16:14 · JFK 19:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.