未定义的变量:_SESSION通过JavaScript触发器发送变量时

key*_*red 27 php session

在我的index.php文件中,我调用session_start()并设置了几个会话变量.在第二个PHP文件中,我想访问这些会话变量.

事实上,这个PHP文件纯粹是一个后端脚本,并在触发JavaScript函数时被POST.当POST调用尝试执行第二个PHP文件中的脚本时,错误日志报告:

_SESSION 是一个未定义的变量.

我试过调用start_session()session_regenerate_id()在第二个PHP文件的顶部,但问题仍然存在.

我假设发生的事情是因为它在POST中这个PHP文件在它自己的会话中,因为我仍然可以这样做$_COOKIE[ini_get('session.name')].

我试图传递给第二个PHP文件的信息不是任何需要保护的信息,但将来很高兴知道如何执行此操作:通过POST调用PHP文件并仍然拥有我的会话变量.

dec*_*eze 56

关于POST请求和会话没有任何特别之处.
您只需要session_start每个 要使用会话的文件请求的顶部调用,就是这样.

再考虑一下,它应该工作.

  • 这是不正确的.如果在同一执行中多次调用session_start(),您可能会收到警告(取决于您当前的警告级别):"会话已经启动 - 忽略session_start()".尝试if(!isset($ _ SESSION)){session_start(); } (2认同)
  • @deceze - 我觉得澄清是很重要的.很多人可能会错误地解释这一点. (2认同)

Gor*_*tem 7

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

这是大多数话题的答案.我一直在努力解决这个问题,我用这段代码解决了我的问题

    if (version_compare(PHP_VERSION, '5.4.0', '<')) {
        if(session_id() == '') {session_start();}
    } else  {
       if (session_status() == PHP_SESSION_NONE) {session_start();}
    }
Run Code Online (Sandbox Code Playgroud)