Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AJAX调用期间PHP会话随机丢失/清空_Php_Ajax_Session_Null - Fatal编程技术网

AJAX调用期间PHP会话随机丢失/清空

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

我已经在我的网站上实现了一个评论部分。按下submit按钮后,通过ajax aproach执行以下过程

  • 注释保存在数据库中
  • 更新注释日志(仍使用数据库),该日志记录注释的详细信息。(例如,“John Doe对某人的帖子发表了评论。”)
  • 重新加载注释部分。现在可以看到新的评论
  • 完成了
  • 问题发生在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.
    
    有时,结果是:

    约翰·多伊评论了某人的愿望清单

    其他情况下,$\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
            }
        });