jQuery,会话和php session_id(); - php

我有一个session_id,用于在购物篮类型应用程序中标识用户。

session_id作为会话ID存储在数据库中。

当我更新购物车时,session_id,product_id和qty存储在购物篮表中。

我试图将一个项目添加到购物篮,然后在屏幕上显示更新的购物篮,而无需使用jquery刷新页面。

我是否将会话ID存储在一个隐藏的html字段中,或者是否有更好的方法让jQuery知道session_id是什么?

更新:
好的,所以现在基于下面的答案和评论,我真的不想在隐藏字段中使用会话ID。我当然不想在html页面中显示会话ID。

我可能需要回溯一点...

当ajax调用我的更新篮函数时,我面临以下错误...

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ..... /ajaxData.php on line 105

我用来启动会话的代码是...

if (!session_id()){
session_start();
}

我真的不明白这个警告的意思,所以这就是为什么我想通过隐藏的html字段发送会话ID。

我猜解决方案是修复警告内容,然后尝试正确执行操作...

对我的警告消息有什么建议吗?

参考方案

IMO必须在服务器中管理所有会话数据,如果您确实需要在前端将其异步获取。例如:

1.- jQuery的东西

$.get(
        window.location.href,
        {
            get_session_id : 1
        },
    function(data) {
    var session_id = data.session_id
    if ("" == session_id){
            // alert user
            // give a friendly way to proceed without loss user's time
            // return;
    }
    // use session_id
}, "json");

更新
为避免Warning: session_start() [function.session-start]...错误,请将此代码段尽早放入脚本中。在任何html输出之前。

2.-服务器的东西

// none output before this snippet

if ($_GET['get_session_id'])
{
    // get $session_id
    $output['session_id'] = $session_id ? $session_id : '';
    echo json_encode($output);
    exit;
}

更新2:

我向您提出此解决方案的原因是,我认为最好在需要时动态获取会话ID,而不是以静态方式存储会话ID,原因是可以在用户使用时修改,删除此标识符等。花时间填写表格。
不幸的是,这种缺陷非常普遍并且令人讨厌。提交表单,而不是进行处理,我们将重定向到登录页面,丢失所有发送的数据。

Cakephp 3.x如何获取session_id - php

在PHP中,要获取会话ID,我们必须像这样使用:session_id();如何在Cakephp 3.x中获取ID? 参考方案 您可以按以下方式访问会话ID,$this->request->session()->id()

php session header()重定向后丢失 - php

这是我第一次尝试创建会话。另外,成功登录后,我使用header()函数重定向页面,但是在重定向的页面上,我不再有会话。有代码:建立工作阶段:function userLogin($user){ session_start(); $_SESSION['username'] = $user; header("Location: /~…

PHP Memcached会话突然失效 - php

session.save_handler = memcached session.save_path = "127.0.0.1:11211" session.gc_maxlifetime = 86400 其余的标准。我希望自上次用户访问该页面以来,该会话至少可以保留86400秒,即,如果我在5分钟后启动了一个会话并访问了该页面,则该会话应…

PHP:将数据从二维数组复制到一维数组的最快方法 - php

我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…

PHP防止注销后返回页面 - php

我有一个受保护的页面,该页面仅显示登录用户的数据,一旦用户单击注销链接,它将破坏会话数据并重定向到另一个页面。 header('Location: login.php');现在,一旦页面重定向到login.php,我就可以轻松地返回到受保护的后页,并且可以在那里查看所有信息,并且可以保留在该页面上,直到我刷新浏览器或关闭它。在Gmail等…