FIX: Klant login probleem onder Magento 1.8.1.0

eCommerce24

Bij sommige klanten werkte de klantlogin niet meer correct na de update naar Magento 1.8.1.0. Zij konden weliswaar hun gegevens invoeren maar werden na het ‘versturen’ van de gegevens weer terug gestuurd naar de login pagina zonder ingelogd te zijn.

Het probleem ontstaat omdat er geen ‘form_key’ data meegestuurd wordt maar er wel een validatie op de ‘loginPostAction’ uitgevoerd wordt door Magento sinds versie 1.8.1.0. Dit zal veelal voorkomen wanneer men een template gebruikt anders dan de standaard Magento template.

De oplossing voor het probleem is vrij simpel: Men opent de volgende files (het kan zijn dat 1 van de 2 files niet aanwezig is in de template folder),

  • app/design/frontend/default/*templatenaam*/customer/form/login.phtml
  • app/design/frontend/default/*templatenaam*/persistent/customer/form/login.phtml

Ga vervolgens op zoek naar de volgende regel,

</pre>
<form id="login-form" action="<?php echo $this->getPostActionUrl() ?>" method="post">

Voeg de volgende regel daar direct onder aan toe,

<!--?php echo $this--->getBlockHtml('formkey'); ?>

Leeg nu de cache van Magento en het probleem met de klantlogin zou nu tot het verleden moeten behoren. Een andere oplossing (niet aan te raden) is het overschrijven van de core file.

Kopieer het bestand app/code/core/Mage/Customer/controllers/AccountController.php naar de volgende locatie app/code/local/Mage/Customer/controllers/AccountController.php en open de AccountController.php welke je zojuist gekopieerd hebt en voeg de volgende regel toe aan regel 139 vlak na het openen van de loginPostAction()

// generate form_key if missing or invalid
 if (!($formKey = $this->getRequest()->getParam('form_key', null)) || $formKey != Mage::getSingleton('core/session')->getFormKey()) {
 $this->getRequest()->setParams(array('form_key' =>Mage::getSingleton('core/session')->getFormKey()));
 }

Nog steeds problemen met de klantlogin? eCommerce24 helpt u graag verder.

Contact