php-Presta Shop注册时出错
作者:互联网
最近,我为我的客户端进行了SEO优化,我不得不更改服务器上的某些功能,例如使用PHP 7和Presta Shop管理面板中的功能,以启用缓存和SEO链接.
我不使用Presta Shop,也不熟悉它,但是其中一些更改破坏了代码.
当新用户尝试注册时,会收到该错误:
Fatal error: Uncaught Error: Access to undeclared static property: Validate::$data in /home/unikalna/public_html/classes/ObjectModel.php:1032 Stack trace: #0 /home/unikalna/public_html/controllers/front/AuthController.php(406): ObjectModelCore->validateController() #1 /home/unikalna/public_html/controllers/front/AuthController.php(252): AuthControllerCore->processSubmitAccount() #2 /home/unikalna/public_html/classes/controller/Controller.php(171): AuthControllerCore->postProcess() #3 /home/unikalna/public_html/classes/Dispatcher.php(373): ControllerCore->run() #4 /home/unikalna/public_html/index.php(28): DispatcherCore->dispatch() #5 {main} thrown in /home/unikalna/public_html/classes/ObjectModel.php on line 1032
并且如果它已经注册并尝试购买东西.
版本:PrestaShop™1.6.0.6
解决:Presta Shop 1.6不能与PHP 7一起使用
解决方法:
/home/unikalna/public_html/classes/ObjectModel.php:1032
旧代码
if (!empty($value) || $value === '0' || ($field == 'postcode' && $value == '0')) {
if (isset($data['validate']) && !Validate::$data['validate']($value) && (!empty($value) || $data['required'])) {
$errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
} else {
if (isset($data['copy_post']) && !$data['copy_post']) {
continue;
}
if ($field == 'passwd') {
if ($value = Tools::getValue($field)) {
$this->{$field} = Tools::encrypt($value);
}
} else {
$this->{$field} = $value;
}
}
}
替换为以下代码块
新密码
if (!empty($value) || $value === '0' || ($field == 'postcode' && $value == '0')) {
if (isset($data['validate']) && !call_user_func('Validate::'.$data['validate'],$value) && (!empty($value) || $data['required'])) {
$errors[$field] = '<b>'.self::displayFieldName($field, get_class($this), $htmlentities).'</b> '.Tools::displayError('is invalid.');
} else {
if (isset($data['copy_post']) && !$data['copy_post']) {
continue;
}
if ($field == 'passwd') {
if ($value = Tools::getValue($field)) {
$this->{$field} = Tools::encrypt($value);
}
} else {
$this->{$field} = $value;
}
}
}
标签:prestashop,prestashop-1-6,php 来源: https://codeday.me/bug/20191027/1943760.html