我昨天在http://forge.prestashop.com/browse/PSCFI-6967报告了 prestashop 社区的一个错误。有人建议我解决它吗?
问问题
672 次
1 回答
0
好吧,既然您还没有发布次要版本,我已经采用了第一个和最后一个次要版本并对它们进行了区分(准确地说是 Customer.php 类)。
这是1.4.0.1:
static public function customerExists($email, $return_id = false)
{
if (!Validate::isEmail($email))
die (Tools::displayError());
$result = Db::getInstance()->getRow('
SELECT `id_customer`
FROM `'._DB_PREFIX_.'customer`
WHERE `email` = \''.pSQL($email).'\'');
if ($return_id)
return intval($result['id_customer']);
else
return isset($result['id_customer']);
}
这是1.4.8.3:
public static function customerExists($email, $return_id = false, $ignoreGuest = true)
{
if (!Validate::isEmail($email))
die (Tools::displayError());
$result = Db::getInstance()->getRow('
SELECT `id_customer`
FROM `'._DB_PREFIX_.'customer`
WHERE `email` = \''.pSQL($email).'\''
.($ignoreGuest ? 'AND `is_guest` = 0' : ''));
if ($return_id)
return (int)($result['id_customer']);
else
return isset($result['id_customer']);
}
问题是,您使用的东西介于这两者之间并且更接近于较低的那个。
如您所见,后者有另一个可选参数 $ignoreGuest,默认为 true。因此,每个验证都被绕过。
您可以执行以下两种操作之一:
- 如果您的任何组件与 1.5 不兼容,请升级到最新版本的 1.4 (http://code.google.com/p/prestashop/downloads/detail?name=prestashop_1.4.8.3.zip&can=2&q=)。如果是 - 一直到最新。
- 另一方面,如果您只需要一个快速而肮脏的修复:将 Customer 类中的函数更改为此答案中的第二个。
于 2013-01-16T22:55:40.730 回答