我在我的网站上实施了评论部分。按下提交按钮后,将执行以下过程:ajax aproach。
问题发生在2号,请参阅下面的伪代码。
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.
有时,结果如下:
John Doe评论过某人的愿望清单。
其他时候$ _SESSION为空,会导致:
评论了某人的愿望清单。
我不知道问题出在哪里。但是,在Ajax调用中传递会话详细信息是一个好主意吗? 像这样(伪代码):
$.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
}
});
我对上面的解决方案有疑问,因为它可能不是市场上最好的实践,因为$ _SESSION变量在php页面的任何地方都可用。说到这个场景中最好的做法是什么?
最后,我的域名被网络管理员屏蔽(如下图所示):
来自的:comments.com
到:coolnamebynetad.com
掩蔽是罪魁祸首吗?我想不是因为$ _SESSION变量工作了一些时间,并且由于某些随机原因它没有。
答案 0 :(得分:1)
这是IE(也许还有其他一些浏览器)的问题 - 而且是因为IE不通过AJAX发送cookie - 简单的解决方案是手动发送名为PHPSESSID的cookie,然后启动具有特定ID的会话