解决 Notice: Undefined index: token in

这个是因为token的值还没有,导致的原因有很多。比如单页结算的某个XML文件就会导致。

token一般是登陆后才能获取,可是如果在不适当的地方调用就会有错误。我们可以看看下面代码:

  1. // 打开 admin/controller/common/header.php
  2. if (!isset($this->request->get[‘token’]) || !isset($this->session->data[‘token’]) || ($this->request->get[‘token’] != $this->session->data[‘token’])) {
  3.     $data[‘logged’] = ;
  4.     $data[‘home’] = $this->url->link(‘common/dashboard’, , ‘SSL’);
  5. else {
  6.     $data[‘logged’] = true;
  7.     //巴拉巴拉…
  8. }

可以看到,没有token的时候,没有GET/session到TOKEN的时候,这时候的登陆状态是否。在登陆状态是否的时候,token没有值,引用固然报错。

使用isset

下面是个示范例子,具体根据具体代码使用,把可能空值的变量使用系统函数 isset()

  1. //源代码
  2. $data[‘d_shopunity’] = $this->url->link(‘d_shopunity/extension’, ‘token=’.$this->request->get[‘token’], ‘SSL’);
  3. //使用 isset()
  4. $data[‘d_shopunity’] = $this->url->link(‘d_shopunity/extension’, ‘token=’.isset($this->request->get[‘token’]), ‘SSL’);

修改插入地方

默认是在index的function里第一行插入,我们修改在48行(else)后即可,因为这时候token的值已经有了。如图阴影的地方。

这里只是个举例,其他的参考实际情况。一般这个报错会指定路径,看看路径这段代码是所属哪个XML的就去哪个XML文件修改,不知道的可以复制所在行代码,利用编辑器批量搜索下xml文件,也有可能是ocmod文件里的,如果是ocmod文件里的请去数据库查找。具体看扩展文章。

扩展文章

PHP DEBUG技巧-Division by zero报错处理

上面这篇文章里有一个很详细的DEBUG思路。

 

发布者

yumanutong

网名 yumanutong ,简称小草,可以付费找我解决问题哦。