Passen Sie das Erscheinungsbild von Magento Native Captcha an. Ändern Sie die Anzahl der Linien und Punkte


Antworten:


11

Die Art und Weise, wie Sie oben geantwortet haben, ist kein guter Ansatz.

Die Klasse Zend_Captcha_Imagehat Funktionen zum Ändern der Variablen bereitgestellt. Sie finden die Funktionen in derselben Klasse, die ungefähr so ​​aussehen wird:

public function setDotNoiseLevel ($dotNoiseLevel)
{
    $this->_dotNoiseLevel = $dotNoiseLevel;
    return $this;
}
/**
 * @param int $lineNoiseLevel
 */
public function setLineNoiseLevel ($lineNoiseLevel)
{
    $this->_lineNoiseLevel = $lineNoiseLevel;
    return $this;
}

Und Zend_Captcha_Imagewird auch auf eine Mage-Modellklasse erweitert, dh Mage_Captcha_Model_Zend. Sie können diese Mage-Modellklasse also einfach überschreiben, um diese Variablen festzulegen.

In Mage_Captcha_Model_Zend:

public function __construct($params)
{
    if (!isset($params['formId'])) {
        throw new Exception('formId is mandatory');
    }
    $this->_formId = $params['formId'];
    $this->setExpiration($this->getTimeout());

    $this->setDotNoiseLevel(10);     // Added code
    $this->setLineNoiseLevel(0);     // Added code
}

Ich setze diese Variablen im Konstruktor so, dass die Änderungen auch beim Laden von Seiten und auch beim Auffrischen von Captchas funktionieren.

Es ist besser, wenn Sie die obige Funktion überschreiben, anstatt die Magierkerndateien zu ändern.



3

Für Magento 2: Gehen Sie zu Vendor \ Magento \ Zendframework1 \ Library \ Zend \ Captcha \ Image.php

In dieser Datei finden Sie unten Funktionen, mit denen Sie das Captcha-Bild anpassen können.

     /**
     * Set dot noise level
     *
     * @param int $dotNoiseLevel
     * @return Zend_Captcha_Image
     */
    public function setDotNoiseLevel ($dotNoiseLevel)
    {
        $this->_dotNoiseLevel = $dotNoiseLevel;
        return $this;
    }

    /**
     * Set line noise level
     *
     * @param int $lineNoiseLevel
     * @return Zend_Captcha_Image
     */
    public function setLineNoiseLevel ($lineNoiseLevel)
    {
        $this->_lineNoiseLevel = $lineNoiseLevel;
        return $this;
    }

Sie können die Werte dieser Funktion in den Zeilennummern 122 und 129 ändern.

/**
 * Number of noise dots on image
 * Used twice - before and after transform
 *
 * @var int
 */
protected $_dotNoiseLevel = 100;
/**
 * Number of noise lines on image
 * Used twice - before and after transform
 *
 * @var int
 */
protected $_lineNoiseLevel = 5;

Danke Dinesh, dass du das geteilt hast. Es ist besser, wenn Sie eine neue Frage hinzufügen und diese Antwort als Antwort veröffentlichen. Es wird für diejenigen hilfreich sein, die danach suchen.
Jaimin Sutariya
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.