Właśnie wykonałem nową instalację Magento 1.9.0.1 i widzę bardzo dziwne zachowanie w formularzu logowania klienta.
W Chrome (wersja 36) formularz logowania nie działa. Właśnie przekierowano mnie na stronę logowania. Brak komunikatu o błędzie. Jednak po otwarciu nowego okna incognito mogę się zalogować. Myśląc, że to był problem z plikami cookie, usunąłem wszystkie moje pliki cookie z przeglądarki, spróbowałem ponownie i uzyskałem te same wyniki. W obu przypadkach jestem w stanie zalogować się do panelu administracyjnego bez żadnych problemów.
Próbowałem tego również w przeglądarce Firefox i Safari. Firefox Widziałem to samo (ale nie konsekwentnie i mogłem to naprawić, usuwając pliki cookie) i nie mogłem replikować w Safari.
Nigdy nie miałem z tym problemu w żadnej innej wersji Magento. Czy istnieje jakaś fundamentalna zmiana w sposobie, w jaki Magento obsługuje pliki cookie w wersji 1.9 i / lub czy jest coś, co mogę zrobić, aby uczynić to bardziej stabilnym?
źródło
www
npabc.com
. przekierowania do niegowww.abc.com
. W tym przypadku przeglądarkawww
ustawiała pliki cookie dla obu i loginy specjalnie przestały działać, ale jeśli ręcznie usunę ciasteczko, które nie było logowań, zacznę ponownie działać. Czy możesz sprawdzić, czy to samo dotyczy Ciebie?Odpowiedzi:
Miałem ten sam problem ....
Odpowiedź jest taka, że Twój motyw nie zawiera zmiennej o nazwie
form_key
.Tak jak stwierdzono powyżej, muszę dodać:
dodajesz go zaraz po
<ul class="form-list">
do każdego z moich
login.phtml
plików motywu.Możesz także mieć problemy z aktualizacją ilości produktów w koszyku
Oto znaczenie
form_keys
:Od samego początku backend Magento zawierał klucz formularza, który chronił przed atakami XSS [1]. W Magento 1.8 klucz formularza wszedł do interfejsu z prawie tego samego powodu: w celu ochrony przed przesłaniem formularza z innej strony internetowej za pomocą przeglądarki. złośliwy atakujący może dodawać elementy do koszyka, gdy jesteś w innej karcie przeglądarki, a nawet realizować dla Ciebie zamówienie. Zależy to od przewidywalnych adresów URL, ponieważ witryna nie będzie miała dostępu do rzeczywistej zawartości HTML na karcie przeglądarki, na której czeka Twoje zamówienie Magento. Wszystko wysyłane do sklepu Magento prześle jednak pliki cookie, a tym samym wykorzysta sesję.
Dodając unikalny klucz do każdego formularza lub do każdego linku generującego akcję na serwerze, adres URL lub treść formularza nie są już przewidywalne. Klucz formularza jest przechowywany w danych sesji i sprawdzany po przesłaniu do serwera. Jeśli się nie zgadzają, pojawia się błąd klucza formularza i działanie nie zostało zakończone.
źródło
<?php echo $this->getBlockHtml('formkey'); ?>
raczej niż duże wejście.Może być:
cookie setting issue in Chrome browser
LUB
Magento 1.9 używa
form key validation at customer loggin and register
strony.Na
Post action
nim sprawdź klucz formularzausing function _validateFormKey()
na kontrolerzeform key issue: form key missing
więc dodaj ten kod w swoim formularzuLUB
Cookie domain setting issue
Goto Check ustawienie jest prawidłowe lub niew
Admin>System>configuration>General>Web>Session Cookie Management
źródło
if (!$this->_validateFormKey()) {
zwraca false, co oznacza, że Magento nie może zweryfikować dostarczonego klucza. Każdy pomysł, dlaczego tak się dzieje?Ponieważ wydaje się, że problem dotyczy plików cookie, spróbuj wydłużyć czas życia pliku cookie do 86400 poniżej
Przyczyną może być domyślnie czas życia ciasteczka ustawiony na 3600 (1 godzina). Ale jeśli czas komputera użytkowników końcowych upłynie przed czasem serwera, pliki cookie nie zostaną ustawione dla frontonu Magento, jak również dla backendu. Na przykład czas komputera użytkownika końcowego jest o 1 godzinę do przodu niż czas serwera, co oznacza, że plik cookie (identyfikator sesji użytkownika) wygaśnie, gdy tylko użytkownik zaloguje się lub spróbuje dodać element.
źródło
Dla przyszłych czytelników: Istnieje wiele możliwych przyczyn tego problemu. Podczas logowania niektóre wyjątki są pomijane ze względów bezpieczeństwa, więc Twój problem się nie pojawi
var/log/exception.log
.Aby zdiagnozować problem:
app/code/core/Mage/Customer/controllers/AccountController.php
i przejdź dologinPostAction
metody.Mage::logException($e);
połączenie i zapisz zmianęNie zapomnij cofnąć zmian w
app/code/core/Mage/Customer/controllers/AccountController.php
!Przyczyną mojego problemu było to, że klasa nie ładowała się automatycznie, ponieważ moduł (niepoprawnie) miał
<codePool>community</codePool>
zamiast tego<codePool>local</codePool>
.źródło
Rozwiązałem problem, dodając poniższy wiersz kodu w trwałym pliku phtml do logowania.
źródło
ok po półgodzinnych zmaganiach dowiedziałem się dokładnie, w których folderach login.phtml muszę zmienić. Więc idź do
i wklej
po
Otóż to.
źródło
Jeśli używasz pamięci podręcznej Varnish, może występować inny problem. Cytuję rozwiązanie, które znalazłem gdzie indziej. https://github.com/nexcess/magento-turpentine/issues/169
źródło
Przyczyną tego problemu jest to, że niestandardowy formularz logowania nie zawiera żadnego klucza_formularza, a weryfikacja klucza formularza odbywa się w loginPostAction of Magento.
Możesz to naprawić, jak poniżej:
Odnaleźć:
i wklej to zaraz po powyższym kodzie:
źródło
Powyższe działało dla mnie absolutnie w porządku, ale aktualizowałem z Magento 1.4.1 do 1.9.1, więc ogromny skok. Pliki nie były nigdzie w powyższej lokalizacji, ale znajdowały się w folderze app / design / frontend / BASE.
Ten folder podstawowy zawiera wiele wspólnych plików od Magento 1.4, więc przeczytałem ... Mam nadzieję, że pozwoli to zaoszczędzić komuś wiele godzin pracy, które zajęło mi ..
źródło
Jeśli używasz dowolnego rozszerzenia do logowania społecznościowego, dodaj również klucz formularza do tego pliku login.phtm
źródło
Upewnij się, że php-mbstring jest zainstalowany i włączony na twoim serwerze.
Jeśli tak nie jest, logowanie administratora będzie działać, a klient nie.
To sprawdzenie można wykonać, sprawdzając dane wyjściowe
phpinfo()
lub tymczasowo włączając wyjątek logowania wokół linii177
w:app/code/core/Mage/Customer/controllers/AccountController.php
Należy pamiętać, że operacja może ujawnić hasło klienta w zapisanym śladzie wyjątku.
źródło
Miałem ten sam problem i rozwiązałem go, usuwając wszystkie pliki cookie. Problem wydaje się występować, jeśli masz wiele różnych sklepów Magento i logujesz się do nich w tym samym czasie.
źródło