Shopware-Captchas werden generiert, aber nicht angezeigt.

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.sErrors.v} {foreach from=$sSupport.sErrors.v key=sKey item=sError} {if $sKey !=0&&$sSupport.sElements.$sError.error_msg}
{/if} {$sSupport.sElements.$sError.error_msg} {/foreach} {if $sSupport.sErrors.e}
{/if} {/if} {if $sSupport.sErrors.e} {s name='SupportInfoFillRedFields'}{/s} {/if}
{/if}
{foreach from=$sSupport.sElements item=sElement key=sKey} {if $sSupport.sFields[$sKey]||$sElement.note}
{$sSupport.sLabels.$sKey} {eval var=$sSupport.sFields[$sKey]}
{if $sElement.note}

{eval var=$sElement.note}

{/if} {/if} {/foreach}
{s name='SupportLabelCaptcha'}{/s}

{s name='SupportLabelInfoFields'}{/s}

  [/code] Ebenso entspricht der [b]Controller [/b] /engine/Shopware/Controllers/Widgets/[b]captcha.php[/b] 1:1 der Originaldatei: [code]<?php /** * Shopware 4 * Copyright ┬® shopware AG * * According to our dual licensing model, this program can be used either * under the terms of the GNU Affero General Public License, version 3, * or under a proprietary license. * * The texts of the GNU Affero General Public License with an additional * permission and of our proprietary license can be found at and * in the LICENSE file you have received along with this program. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * "Shopware" is a registered trademark of shopware AG. * The licensing of the program under the AGPLv3 does not imply a * trademark license. Therefore any rights, title and interest in * our trademarks remain entirely with us. */

/**

  • 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

Hallo, das Problem besteht noch immer, und wir möchten das System bald live schalten. Somit bitten wir dringend um Hilfe. Danke im Voraus… MfG Vamon

Hallo Vamon, nach dem Update von 4.1.0 auf 4.3.0 hing ich gerade an der selben Stelle und hab dann einfach mal die alte „elements.tpl“ wiederhergestellt und siehe da, It’s working! Vielleicht klappt das ja bei dir auch. :slight_smile:

[quote=“K.I.”]Hallo Vamon, nach dem Update von 4.1.0 auf 4.3.0 hing ich gerade an der selben Stelle und hab dann einfach mal die alte “elements.tpl” wiederhergestellt und siehe da, It’s working! Vielleicht klappt das ja bei dir auch. :)[/quote] Hi…leider hat das Nichts gebracht :frowning: @Shopware: Hat vielleicht noch Jemand noch Ideen dazu?