【问题标题】:PHP how to store GET variables to use it laterPHP如何存储GET变量以供以后使用
【发布时间】:2021-10-11 23:49:33
【问题描述】:

我编写了一个简单的 php(html) 脚本来显示状态。通过 JQUERY,状态更新会自动发生。一些参数由另一个脚本提供并通过GET 发送到状态脚本。 所以这个想法是使用S_SESSION

    if( session_status() == PHP_SESSION_NONE ) // if session status is none then start the session
{
    session_start();
    $_SESSION['dur'] = 10;
    $_SESSION['gDur'] =  0;
}else{
    error_log("ShowListeners Session: " . var_export($_SESSION, true),0);
}
if(isset($_GET['dur'])){
    error_log("ShowListeners GET: " . var_export($_GET, true) , 0);
    $_SESSION['dur'] = $_GET['dur'];
    $_SESSION['gDur'] =  $_GET['gDur'];
}

在我尝试读取会话数据的部分

    if(isset($_SESSION['dur']))
        $ret .= getTimeString($_SESSION['dur']);

$_SESSION['dur'] 始终不存在。我还可以看到,每次调用脚本时,都会调用session_start(),因为我看不到任何error_log!

是我出了什么问题,还是无法将数据存储在会话变量中?

编辑(2021-08-08)

与此同时,我阅读了很多关于SESSION 的信息。我了解,SESSION 与用户或 cookie 有关。但是我不清楚的是,是否有可能确保多个实例可以访问相同的SESSION 数据?例如,有一个实例正在运行,而另一个实例通过GET 进行数据更新。这个实例可以访问和修改第一个实例使用的SESSION日期吗?

【问题讨论】:

  • 如果有条件请从上面session_start()开始
  • 林山,我没听错吧?在检查状态之前我应该​​使用Session_start 吗?但是,session 无论如何都没有启动,session_status() 检查不再有意义?
  • if (session_status() == PHP_SESSION_NONE) 总是给出 1 表示 true 作为代码的输出
  • 对不起,运行多个 php 版本删除和添加 cmets 我也有点困惑

标签: php


【解决方案1】:

我认为您的第一个条件范围可能是您问题的原因...,您为什么不每次都调用“session_start()”?

这是我的建议,你可以试试:

session_start();
if(!isset($_SESSION['dur'])) {

    $_SESSION['dur'] = 10;
    $_SESSION['gDur'] =  0;
}
if(isset($_GET['dur'])) {

    $_SESSION['dur'] = (int) $_GET['dur'];
    $_SESSION['gDur'] = (int)  $_GET['gDur'];
}

【讨论】:

  • 好的,它适用于新实例。但我想将这些数据发送到所有已经在运行的实例。这可能吗?
  • 每个客户端都有不同的会话;如果您想共享所有内容,您可能需要考虑使用 redis 并根据所有请求从 redis 读取相同的密钥
猜你喜欢
  • 2012-02-29
  • 2017-11-28
  • 2013-03-12
  • 2013-08-27
  • 1970-01-01
  • 2011-11-07
  • 2012-05-25
  • 2020-04-07
  • 1970-01-01
相关资源
最近更新 更多