【问题标题】:wordpress losing the session on page refreshwordpress 在页面刷新时丢失会话
【发布时间】:2014-12-31 11:58:57
【问题描述】:

我正在尝试为 wordpress 开发一个插件,但我在会话中遇到了一个小问题。我为我的插件创建了自己的登录页面,当用户输入他的用户名/密码并按下登录按钮时,ajax 请求将数据发送到函数以检查用户详细信息是否正确。 ajax 调用的函数存储在我的插件的 index.php 中。在 ajax 调用的函数中使用 $_SESSION,我可以打印我想要的变量,该变量已在另一个文件中设置。然后,如果数据正确,则 ajax 会重新加载页面。当页面重新加载时,会话不再存在。有谁知道我该如何解决这个问题?我在本地服务器上实现了插件,它工作正常,但是当我将项目上传到服务器上的子域时,它停止工作。

AJAX 代码

    success: function(data) {
        console.log(data);
        if (data !='')
        {
            var obj = $.parseJSON(data);
            if (obj.status == "ok")
            {
                location.reload();
            }
        }

谢谢

【问题讨论】:

    标签: php ajax session wordpress


    【解决方案1】:

    您是否尝试过在 ajax 调用中使用 .RememberState 函数?通常这可能会应用于表单(因此,如果表单已部分填写并且用户刷新页面,他们的更改将被保留),但理论上我不明白为什么您不能在文档本身上使用它。查看此链接,它可能会更清楚地解释它

    http://shaneriley.com/jquery/remember_state/

    您希望在调用之前执行此操作,并且在成功回调中,您应该能够使用此 RememberState 返回到之前的活动会话。如果这不是您所指的,我很抱歉误解了您的问题。

    【讨论】:

    • Session 是在 AJAX 调用的函数上设置的,而不是在 AJAX 调用之前设置的
    • 你在处理ajax调用的成功回调吗?如果您确信会话已被设置,那将是您需要重新实例化会话的地方
    • 那么 $_SESSION 是否存储在从 ajax 调用返回的数据中?因为 location.reload() 没有接受任何参数,所以我认为它不会知道 $_SESSION 是什么。至少我是这么理解的
    • 基本上 ajax 调用了一个名为 A 的函数,它位于 index.php 中。那么这个函数需要另一个文件,其中包含传递用户和用户密码的登录函数。如果数据正确,则登录函数创建会话并根据结果返回给 A 函数 true 或 false。然后A函数将json_encoded结果返回给ajax
    猜你喜欢
    • 2023-03-25
    • 2014-07-20
    • 2019-05-16
    • 1970-01-01
    • 2017-03-22
    • 2014-08-16
    • 2013-05-02
    • 1970-01-01
    • 2014-05-24
    相关资源
    最近更新 更多