AJAX调用期间PHP会话随机丢失/清空
我已经在我的网站上实现了一个评论部分。按下submit按钮后,通过ajax aproach执行以下过程AJAX调用期间PHP会话随机丢失/清空,php,ajax,session,null,Php,Ajax,Session,Null,我已经在我的网站上实现了一个评论部分。按下submit按钮后,通过ajax aproach执行以下过程 注释保存在数据库中 更新注释日志(仍使用数据库),该日志记录注释的详细信息。(例如,“John Doe对某人的帖子发表了评论。”) 重新加载注释部分。现在可以看到新的评论 完成了 问题发生在2号,请参见下面的伪代码 session_start(); //1. saves the comment in the database. //2. this gets the current user
session_start();
//1. saves the comment in the database.
//2. this gets the current user who submitted the comment
// hence I used the $_SESSION variable
$log .= "$_SESSION['firstname'] $_SESSION['lastname'] "
. 'has commented on someone\'s wishlist.';
updateLog($log); // commits the log in the database.
有时,结果是:
约翰·多伊评论了某人的愿望清单
其他情况下,$\u会话为空,将导致:
评论了某人的愿望清单
我不知道问题出在哪里。但是在Ajax调用中传递会话细节是一个好主意吗?
像这样(伪代码):
我对上面的解决方案表示怀疑,因为它可能不是市场上的最佳实践,因为在php页面中到处都可以使用$u会话变量。说到这里,这种情况下的最佳实践是什么
最后,我的域名被网络管理员屏蔽(下图):
来自:comments.com
至:coolnamebynetad.com
这可能是罪魁祸首吗?我想这不是因为$_SESSION变量有时有效,但由于某些随机原因无效。这是IE(可能还有其他浏览器)的问题-这是因为IE不通过AJAX发送cookie-简单的解决方案是手动发送名为PHPSESSID的cookie,然后使用特定ID启动会话。Hi@SergeS首先谢谢,那么,这是在AJAX中使用会话的最佳方式/实践吗?谢谢@SergeS,我认为这不是正确的方式,因为我意识到我正在失去对其他用户会话的跟踪。我还认为这是受url屏蔽的影响。
$.ajax({
url: 'includes/request.php',
type: "POST",
data: {
firstname : $_SESSION['firstname'],
lastname : $_SESSION['lastname'],
//more details here.
success: function(result) {
// update the inner html of comment section
}
});