OpenCart - “无效令牌会话”错误 - 现在如何修复&防止将来?

时间:2016-02-26 07:26:47

标签: php session opencart token

OpenCart 2.0.3.1

问题#1:在管理员中,尝试编辑多个标签中的多个项目通常会导致错误消息“无效的令牌会话,请重新登录”。

问题#2:此错误消息似乎是以随机间隔发生的;我似乎无法确定“超时”。

问题#3:单击“保存”后出现错误消息,表示所有更改都丢失。我有许多标签打开了复杂的变化,我想知道是否有可能以某种方式将令牌会话“恢复”到URL中,所以我实际上可以保存它们。

1 个答案:

答案 0 :(得分:1)

我写了一个vQmod脚本,让我在管理标签打开时登录。随意使用它。 :)

<?xml version="1.0" encoding="UTF-8"?>
<modification>
    <id>Keep Admin Users Logged In - Opencart 2.x</id>
    <version>1.0</version>
    <vqmver>2.5.1</vqmver>
    <author>Tibor Besze</author>

    <file name="admin/controller/user/user.php">
        <operation error="skip">
            <search position="after"><![CDATA[class ControllerUserUser extends Controller {]]></search>
            <add trim="true"><![CDATA[
                public function pingUser() {
                    $this->response->addHeader('Content-Type: application/json');
                    $this->response->setOutput(json_encode(1));
                }
            ]]></add>
        </operation>
    </file>
    <file name="admin/controller/common/footer.php">
        <operation error="skip">
            <search position="before"><![CDATA[return $this->load->view('common/footer.tpl', $data);]]></search>
            <add trim="true"><![CDATA[
                if (isset($this->session->data['token'])) {
                    $data['token'] = $this->session->data['token'];
                }
            ]]></add>
        </operation>
    </file>
    <file name="admin/view/template/common/footer.tpl">
        <operation error="skip">
            <search position="before"><![CDATA[</body>]]></search>
            <add trim="true"><![CDATA[
              <?php if (isset($token)) { ?>
              <script type="text/javascript">
                $(document).ready(function() {
                  setInterval(function() {
                    $.ajax({
                      type: "POST",
                      url: "index.php?route=user/user/pingUser&token=<?php echo $token; ?>",
                      dataType: "json",
                      timeout: 10000
                    });
                  }, 15000);
                });
              </script>
              <?php } ?>
            ]]></add>
        </operation>
    </file>
</modification>