Hallo zusammen, kurz zum “Problem”-System: - Shopware 4.3.0 - PHP 5.4 - Nginx. Mit einem Live-Link kann ich zu diesem Zeitpunkt leider nicht dienen. Im Frontend unseres Shopware-Shops (Shopware 4.3.0) werden auf jeglichen Seiten, auf denen Captchas angezeigt bzw. dynamisch generiert werden sollen, keine Überprüfungscodes bzw. Captchas angezeigt. Dies gilt für das Shopware-Kontaktformular (wird stets per SSL aufgerufen) sowie für jegliche andere Captcha-Generierungen wie z.B. für die Produktbewertungen. Nirgendwo ist ein Captcha zu entdecken. Im Code sieht alles o.k. aus, es ist alles genau definiert wie nach einer frischen Installation. An den Dateien, die die Captchas betreffen, wurden keine Änderungen vorgenommen. Datei: elements.tpl Pfad: /templates/_default/frontend/forms [code]{block name=‘frontend_forms_elements’}
{/block}{if $sSupport.sErrors.e || $sSupport.sErrors.v}
{/if} {$sSupport.sElements.$sError.error_msg} {/foreach} {if $sSupport.sErrors.e}
{/if} {/if} {if $sSupport.sErrors.e} {s name='SupportInfoFillRedFields'}{/s} {/if}
{eval var=$sElement.note}
{/if} {/if} {/foreach}{s name='SupportLabelInfoFields'}{/s}
/**
- Shopware Captcha Controller
/
class Shopware_Controllers_Widgets_Captcha extends Enlight_Controller_Action
{
/*- Pre dispatch action method
- Sets no render on some actions
*/
public function preDispatch()
{
$this->Front()->Plugins()->ViewRenderer()->setNoRender(); } /** * */ public function refreshCaptchaAction() { $rand = \Shopware\Components\Random::getAlphanumericString(32); $string = md5($rand); $string = substr($string, 0, 5); $imgResource = $this->getImageResource($string); ob_start(); imagepng($imgResource, null, 9); $img = ob_get_clean(); imagedestroy($imgResource); $img = base64_encode($img); echo ’ ![Captcha](data:image/png;base64,’ . $img. ‘)’; echo ‘’; } /** * Index action method * * Creates the captcha images and delivers it as a PNG * with the proper HTTP header. */ public function indexAction() { $random = $this->Request()->rand; $random = md5($random); $string = substr($random, 0, 5); $im = $this->getImageResource($string); $this->Response()->setHeader(‘Content-Type’, ‘image/png’, true); imagepng($im, null, 9); imagedestroy($im); } /** * Please note that the method loops through the template inheritances * to terminate the used font and background. * * @param string $string * @return resource */ public function getImageResource($string) { $captcha = ‘frontend/_resources/images/captcha/background.jpg’; $font = ‘frontend/_resources/images/captcha/font.ttf’; $template_dirs = Shopware()->Template()->getTemplateDir(); foreach ($template_dirs as $template_dir) { if (file_exists($template_dir . $captcha)) { $captcha = $template_dir . $captcha; break; } } foreach ($template_dirs as $template_dir) { if (file_exists($template_dir . $font)) { $font = $template_dir . $font; break; } } if (file_exists($captcha)) { $im = imagecreatefromjpeg($captcha); } else { $im = imagecreatetruecolor(162, 87); } if (!empty(Shopware()->Config()->CaptchaColor)) { $colors = explode(’,’, Shopware()->Config()->CaptchaColor); } else { $colors = explode(’,’, ‘255,0,0’); } $black = ImageColorAllocate($im, $colors[0], $colors[1], $colors[2]); $string = implode(’ ', str_split($string)); if (file_exists($font)) { for ($i = 0; $i <= strlen($string); $i++) { $rand1 = rand(35, 40); $rand2 = rand(15, 20); $rand3 = rand(60, 70); imagettftext($im, $rand1, $rand2, ($i + 1) * 15, $rand3, $black, $font, substr($string, $i, 1)); imagettftext($im, $rand1, $rand2, (($i + 1) * 15) + 2, $rand3 + 2, $black, $font, substr($string, $i, 1)); } for ($i = 0; $i < 8; $i++) { imageline($im, mt_rand(30, 70), mt_rand(0, 50), mt_rand(100, 150), mt_rand(20, 100), $black); imageline($im, mt_rand(30, 70), mt_rand(0, 50), mt_rand(100, 150), mt_rand(20, 100), $black); } } else { $white = ImageColorAllocate($im, 255, 255, 255); imagestring($im, 5, 40, 35, $string, $white); imagestring($im, 3, 40, 70, ‘missing font’, $white); } return $im; } } [/code] Die Kontaktseite, die ja wie bereits erwähnt strikt mit SSL aufgrufen wird, habe ich bereits per ‘forceSecure’ innerhalb der Captcha-Definierung gesondert getestet. ( Shopware-Datei: /templates/_default/frontend/forms/elements.tpl ) Auch dies führte nicht zu einer Anzeige eines Captchas. Ebenso diverse Versuche, die Datei “elements.tpl” anzupassen und es in diversen Template-Kombinationen zu versuchen, haben Nichts gebracht. Die Generierung selbst aber findet definitiv statt; dies stellt man bei Aufruf der beiden Links fest: domain.tld/widgets/captcha/refreshCaptcha (Standard) domain.tld/captcha/index/rand Wir haben weiterhin bereits die ‘background.jpg’ sowie den Captcha-Controller gegen frische Dateien aus dem jeweiligen Shop-Installer für Shopware 4.3.0 getauscht, es hätte ja auch an korrupten Files liegen können. Ebenso haben wir innerhalb der Datei die Anweisung für den Captcha-Controller in verschiedensten Kombinationen getestet.: z.B. {url module=widgets controller=Captcha action=refreshCaptcha}" getauscht gegen /captcha/index/rand/ Auch haben wir die hier allgemein-f25/captcha-brauchen-ewigkeiten-beim-erstellen-t12007.html präsentierte Lösung vergeblich testen müssen. Wir bitten dringend um Hilfestellung. Die einzige “Dokumentation” die wir zum Thema “Captchas innerhalb eines Shopware-Systemes” finden konnten, ist scheinbar die Erklärung, wie man im Backend die rgb-Farbe des zu generierenden Captchas eingibt. Hatte vielleicht Jemand bereits ein ähnliches / dasselbe Problem und könnte bitte seine Lösung hier innerhalb des Threads präsentieren…oder mir eine PN zukommen lassen? Besten Dank im Voraus für jegliche Unterstützung! Greetz, Dan