gpt4 book ai didi

php - jquery、 session 和 php session_id();

转载 作者:行者123 更新时间:2023-12-01 03:45:26 24 4
gpt4 key购买 nike

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

session_id 作为 session id 存储在数据库中。

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

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

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

更新:好的,现在根据下面的答案和评论,我真的不想在隐藏字段中使用 session id。我当然不想在 html 页面中显示 session id。

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

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

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

我用来启动 session 的代码是...

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

我不太明白这个警告的含义,所以这就是为什么我考虑通过隐藏的 html 字段发送 session ID。

我想解决方案是修复警告并尝试正确执行操作...

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

最佳答案

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

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:

我向您建议这个解决方案的原因是我认为在需要时动态获取 session ID而不是以静态方式存储它更好,因为这个标识符可能会被修改、删除等,而用户则花时间填写表格。
不幸的是,这个缺陷非常常见并且令人烦恼。提交表单后,我们没有被处理,而是被重定向到登录页面,丢失了所有发送的数据。

关于php - jquery、 session 和 php session_id();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com