0

昨日、 http: //forge.prestashop.com/browse/PSCFI-6967でprestashopコミュニティのバグを報告しました。誰かが私にそれの修正を提案しますか?

4

1 に答える 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']);
}

問題は、これら 2 つの中間で、より低いものに近いものを使用しているということです。

ご覧のとおり、後者には別のオプション パラメータ $ignoreGuest があり、デフォルトは true です。したがって、すべての検証がバイパスされます。

次の 2 つのいずれかを実行できます。

  • 1.5 と互換性のないコンポーネントがある場合は、最新バージョンの 1.4 (http://code.google.com/p/prestashop/downloads/detail?name=prestashop_1.4.8.3.zip&can=2&q=) にアップグレードしてください。そうである場合は、最新のものに進んでください。
  • 一方、迅速で汚い修正が必要な場合は、Customer クラスの関数をこの回答の 2 番目のものに変更してください。
于 2013-01-16T22:55:40.730 に答える