Prestashop 网站中的 body 标签后显示一个字母
A letter is displayed after body tag in Prestashop website
我有一个 prestashop 网站 http://www.myparaweb.com/,它在正文标签后显示一个 'l' 字母,它 return 也在 ajax json 之后的响应中编辑后台登录,以便登录永远不会成功。
我试图查看主题 header.tpl 和管理员 header.tpl 但我没有在那里找到它
附上代码截图和json return开头的'l'。
我想删除这封 'l' 信件。
谢谢
编辑:当我开始找到 'l' 字母出现的位置时,我调试了 Dispatcher class
中的 __constructor 函数
protected function __construct()
{ die("test");
$this->use_routes = (bool)Configuration::get('PS_REWRITING_SETTINGS');
...
}
这 return 像这样编辑 'l' 字母
<html><head></head><body>ltest</body></html>
Edit2:我试过像这样调试 getInstance 函数
public static function getInstance()
{ die('test');
if (!self::$instance) {
self::$instance = new Dispatcher();
}
return self::$instance;
}
我得到了
<html><head></head><body>ltest</body></html>
查看源代码时,l
字符出现在 <!DOCTYPE HTML>
声明之前。
l<!DOCTYPE HTML>
<html lang="fr-fr">
<head>
<meta charset="utf-8" />
<title>Default Ciblo theme</title>
因为它出现在每个页面上,我们确定它不是控制器,但它可能是 /classes/controller/FrontController.php
类。
如果我是你,我会通过在 Prestashop 进程的不同步骤打印 die("test")
来调试,以查找此字符的来源。从 FrontController
开始:
class FrontControllerCore extends Controller
{
public function __construct()
{
die("test");
[...]
}
}
然后尝试使用 init()
函数...然后 initContent()
最后 displayHeader
.
这可能是一个漫长的过程,需要您花费 1 小时或更长时间进行调试,但您一定会找到此错误的确切位置。
编辑: 从您的以下评论中,我们可以看出此错误发生在调用控制器之前。
然后我们将从/index.php
:
开始调试
<?php
/**
[...]
*/
die("test");
require(dirname(__FILE__).'/config/config.inc.php');
然后:
<?php
/**
[...]
*/
require(dirname(__FILE__).'/config/config.inc.php');
die("test");
Dispatcher::getInstance()->dispatch();
有了这个你就知道bug是不是发生在after的dispatcher之前了。如果它发生在配置文件中,请在该文件中对每一行重复该过程以查找导致此问题的包含。
编辑: 从您下面的评论来看,问题发生在 Dispatcher 调用之后,因此您必须深入研究 /classes/Dispatcher.php
。首先调试 __cunstructor()
函数,然后调试 dispatch()
函数。
请尝试搜索您编辑的所有框架文件。它可能在其中之一。
一种疯狂的查找方法是在所有 php 文件中搜索“ 1 ”。我使用 notepad++ 打开我编辑的文件夹中的所有 .php 文件以搜索“1”。由于代码中出现“1”的概率有限,因此您可以轻松找到它。转到每个子文件夹,搜索“.php”并在记事本++中打开所有文件,在所有打开的文档中搜索“1”。节省时间而不是遍历所有代码。
我有一个 prestashop 网站 http://www.myparaweb.com/,它在正文标签后显示一个 'l' 字母,它 return 也在 ajax json 之后的响应中编辑后台登录,以便登录永远不会成功。 我试图查看主题 header.tpl 和管理员 header.tpl 但我没有在那里找到它
附上代码截图和json return开头的'l'。
我想删除这封 'l' 信件。
谢谢
编辑:当我开始找到 'l' 字母出现的位置时,我调试了 Dispatcher class
中的 __constructor 函数protected function __construct()
{ die("test");
$this->use_routes = (bool)Configuration::get('PS_REWRITING_SETTINGS');
...
}
这 return 像这样编辑 'l' 字母
<html><head></head><body>ltest</body></html>
Edit2:我试过像这样调试 getInstance 函数
public static function getInstance()
{ die('test');
if (!self::$instance) {
self::$instance = new Dispatcher();
}
return self::$instance;
}
我得到了
<html><head></head><body>ltest</body></html>
查看源代码时,l
字符出现在 <!DOCTYPE HTML>
声明之前。
l<!DOCTYPE HTML>
<html lang="fr-fr">
<head>
<meta charset="utf-8" />
<title>Default Ciblo theme</title>
因为它出现在每个页面上,我们确定它不是控制器,但它可能是 /classes/controller/FrontController.php
类。
如果我是你,我会通过在 Prestashop 进程的不同步骤打印 die("test")
来调试,以查找此字符的来源。从 FrontController
开始:
class FrontControllerCore extends Controller
{
public function __construct()
{
die("test");
[...]
}
}
然后尝试使用 init()
函数...然后 initContent()
最后 displayHeader
.
这可能是一个漫长的过程,需要您花费 1 小时或更长时间进行调试,但您一定会找到此错误的确切位置。
编辑: 从您的以下评论中,我们可以看出此错误发生在调用控制器之前。
然后我们将从/index.php
:
<?php
/**
[...]
*/
die("test");
require(dirname(__FILE__).'/config/config.inc.php');
然后:
<?php
/**
[...]
*/
require(dirname(__FILE__).'/config/config.inc.php');
die("test");
Dispatcher::getInstance()->dispatch();
有了这个你就知道bug是不是发生在after的dispatcher之前了。如果它发生在配置文件中,请在该文件中对每一行重复该过程以查找导致此问题的包含。
编辑: 从您下面的评论来看,问题发生在 Dispatcher 调用之后,因此您必须深入研究 /classes/Dispatcher.php
。首先调试 __cunstructor()
函数,然后调试 dispatch()
函数。
请尝试搜索您编辑的所有框架文件。它可能在其中之一。 一种疯狂的查找方法是在所有 php 文件中搜索“ 1 ”。我使用 notepad++ 打开我编辑的文件夹中的所有 .php 文件以搜索“1”。由于代码中出现“1”的概率有限,因此您可以轻松找到它。转到每个子文件夹,搜索“.php”并在记事本++中打开所有文件,在所有打开的文档中搜索“1”。节省时间而不是遍历所有代码。