【问题标题】:Opencart custom admin area -> invalid token sessionOpencart 自定义管理区域 -> 无效的令牌会话
【发布时间】:2015-04-03 11:30:32
【问题描述】:

我收到的上一个问题 (Opencart custom admin area -> queries only showing first record of tables) 的答案非常有帮助,因此我决定回来就同一项目寻求更多建议。

每当我重定向到自定义页面/控制器(即 /admin/index.php?route=custom/verkopen,来自 /admin/index.php?route=custom/hoofdpagina)时,我都会被要求再次登录因为令牌会话无效。我尝试用谷歌搜索并自己弄清楚,但我发现的解决方案要么不完整,要么不适合我。

这是我的代码:

主控制器:

<?php

class Controllercustomhoofdpagina extends Controller{ 
        public function index() {

    $template="custom/hoofdpagina.tpl"; // .tpl location and file

    $this->load->model('custom/hoofdpagina');

    $this->template = ''.$template.'';
    $this->response->setOutput($this->render());
}

}

?>

控制器子页面:

   <?php 

class Controllercustomverkopen extends Controller{


    public function Index(){

    $template="custom/verkopen.tpl"; // .tpl location and file

    $this->load->model('custom/hoofdpagina');

    $this->data['verkopen'] =                                             $this->model_custom_hoofdpagina->verkopenLijst();

     $this->template = ''.$template.'';
     $this->response->setOutput($this->render());

    }

    public function verkopenTonen(){
        $this->load->model('custom/hoofdpagina');
        $verkopen = $this->model_custom_hoofdpagina->verkopenLijst();
        return $verkopen;
    }

}




?>

型号:

<?php
class Modelcustomhoofdpagina extends Model {

public function verkopenLijst() {

  $query = $this->db->query("SELECT * FROM `shop_order_product`");
    if($query->num_rows > 0){
    $verkopen = array();
       foreach($query->rows as $result){
            $verkopen[] = array(
                'name' => $result['name'],
                'model'      => $result['model'],
                'quantity'      => $result['quantity'],
                'price'     => $result['price'],
                'total'     => $result['total'],
                'tax'     => $result['tax']);

        }
        return $verkopen;
    }

}

public function klantenLijst() {


    $query = $this->db->query("SELECT * FROM `shop_customer`");

    if($query->num_rows > 0){
    $klanten = array();
       foreach($query->rows as $result){
            $klanten[] = array(
                'first name' => $result['firstname'],
                'last name'      => $result['lastname'],
                'email'      => $result['email'],
                'telephone'     => $result['telephone'],
                'date added'     => $result['date_added']
                );

        }
        return $klanten;
    }
}

public function productenLijst() {


    $query = $this->db->query("SELECT * FROM `shop_product_description`");

    if($query->num_rows > 0){
    $producten = array();
       foreach($query->rows as $result){
            $producten[] = array(
                'name' => $result['name'],
                'description'      => $result['description']
                );

        }
        return $producten;
    }
}

public function productenAanpassen() {

   $this->request->post['name'];
   $this->request->post['text'];
   $this->request->post['description'];
   $this->request->post['price'];



}

}

?>

查看主要内容:

  <div class="container-fluid">

<div class = "row">
  <div class = "col-xs-12">
    <div class = "head font-effect-neon"> Admin Area </div>
  </div>
</div>

<div class="row">
  <div class="col-xs-3">
    <div class="button">
      <a href="http://maureen.codehub.be/ew/admin/index.php?route=custom/verkopen"><button class = "buttonverkopen font-effect-neon" name = "verkopen"> Verkopen </button></a>
    </div>
  </div>

  <div class="col-xs-3">
    <div class="button">
      <a href="http://maureen.codehub.be/ew/admin/index.php?route=custom/klanten"><button class = "buttonklanten font-effect-neon" name = "klanten"> Klanten </button></a>
    </div>
  </div>

  <div class="col-xs-3">
    <div class="button">
      <a href="http://maureen.codehub.be/ew/admin/index.php?route=custom/producten"><button class = "buttonproducten font-effect-neon" name = "producten"> Producten </button></a>
    </div>
  </div>

  <div class="col-xs-3">
    <div class="button">
      <a href="http://maureen.codehub.be/ew/admin/index.php?route=custom/aanpassen"><button class = "buttonaanpassen font-effect-neon" name = "aanpassen"> Aanpassen </button></a>
    </div>
  </div>
</div>


<div class = "row">
  <div class = "col-xs-4">
    <div class = "credits font-effect-neon"> Eindwerk </div>
  </div>
  <div class = "col-xs-4">
    <div class = "credits font-effect-neon"> VDO Webontwikkeling 2014-2015 </div>
  </div>
  <div class = "col-xs-4">
    <div class = "credits font-effect-neon"><span class="glyphicon glyphicon-copyright-mark"> Maureen van Eede </span></div>
  </div>

查看子页面:

<div class="container-fluid">

<div class = "row">
  <div class = "col-xs-12">
    <div class = "head font-effect-neon"> Verkopen </div>
  </div>
</div>

<div class="row">
  <div class="col-xs-12">
    <div class = "php1"> <pre>
      <?php
      foreach($verkopen as $verkoop){
          echo '<p>';
          echo 'Product:'. $verkoop['name'].'<br />';
          echo 'Prijs:'. $verkoop['price'];
          echo '</p>';
        }
        ?>
      </pre>
    </div>
  </div>
</div>

任何帮助将不胜感激。

【问题讨论】:

标签: php session customization opencart


【解决方案1】:

当您通过浏览器点击模块时,您已在 url 中添加会话令牌作为查询字符串, 像这样'token=' . $this-&gt;session-&gt;data['token']。 如果 url 中不存在会话令牌,它将永远不会转到您的自定义模块。

【讨论】:

    【解决方案2】:

    我在创建自己的模块时遇到了这个问题。
    解决这个问题的一个最简单的捷径是 在模板文件中添加 $_GET['token']。 这样每当管理员单击自定义模块链接时,都会在管理面板的仪表板中给出的 URL 中附加一个令牌。为了防止无效的令牌会话

    <li><a href="<?php echo DOMAIN_API_SYNC; ?>&token=<?php echo $_GET['token']; ?>" <i class="fa fa-key"></i> <span><?php echo "API ACCESS"; ?></span></a></li>
    

    在 config.php 中

    // URL
    define('DOMAIN_API_SYNC', 'Domain_Name.org/admin/index.php?route=yourdirectory/your_file');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-16
      • 2022-01-27
      • 2012-10-19
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      相关资源
      最近更新 更多