Müşteri Girişi 1.9'da Çalışmıyor


42

Yeni bir Magento 1.9.0.1 yüklemesi yaptım ve müşteri giriş formu ile ilgili çok garip davranışlar görüyorum.

Chrome'da (sürüm 36) giriş formu çalışmıyor. Sadece giriş sayfasına yönlendirildim. Hata mesajı yok. Ancak, yeni bir Gizli Pencere açtığımda, giriş yapabiliyorum. Bunun bir çerez sorunu olduğunu düşünerek, tüm çerezlerimi tarayıcıdan temizledim ve tekrar denedim ve aynı sonuçları aldım. Her iki durumda da, herhangi bir sorun olmadan yönetici panelinde oturum açabiliyorum.

Bunu hem Firefox'ta hem de Safari'de de denedim. Firefox da aynı şeyin olduğunu görecektim (ama sürekli değil ve çerezleri temizleyerek düzeltebilirdim) ve Safari’de çoğaltılamadım.

Magento'nun başka bir versiyonunda bununla ilgili bir sorunum olmamıştı. Magento'nun 1.9 sürümündeki çerezleri işleme biçiminde bir çeşit temel değişiklik var mı ve / veya bunu daha istikrarlı hale getirmek için yapabileceğim bir şey var mı?


Bağlantıyı paylaşabilir ve kullanıcı /
MTM

Ne yazık ki hepsi işimin VPN'sinin arkasına bağlı.
Josh Pennington

Chrome'u yeniden yükleyin ve doğrulayın.
Niloct

Yeniden yükledikten sonra aynı sonuçlar.
Josh Pennington

1
bir zamanlar bir müşteri sitesinde benzer bir sorun yaşıyordum, sorun şu ki, wwwörneğin siteye erişilmeden örneğin abc.comyönlendirildi www.abc.com. Bu durumda, tarayıcı her ikisi için de çerezleri ayarlıyordu ve girişler özel olarak durduruldu, ancak wwwgirişler olmayan çerezleri manuel olarak silersem tekrar çalışmaya başlar. Sizde durumun aynı olup olmadığını kontrol edebilir misiniz?
MTM

Yanıtlar:


38

Bende de aynı problem vardı.

Cevap, temanızın adlandırılan bir değişken sağlamadığıdır form_key.

Sadece yukarıda belirtildiği gibi eklemek zorundayım:

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />

hemen sonra ekle <ul class="form-list">

login.phtmltema için dosyalarımın her birine .

Ayrıca, alışveriş sepeti öğelerinin güncelleme miktarıyla ilgili sorunlar yaşayabilirsiniz

İşte önemi form_keys:

Zamanın başlangıcından beri, Magento'nun arka ucu, XSS saldırılarına karşı korunan bir form anahtarı içeriyordu [1]. Magento 1.8 ile form anahtarı hemen hemen aynı nedenden ötürü ön tarafa girdi: tarayıcınızı kullanarak başka bir web sitesinden form gönderilmesine karşı korunmak için. Kötü amaçlı bir saldırgan, farklı bir tarayıcı sekmesindeyken sepetinize malzeme ekleyebilir veya sizin için bir sipariş bile doldurabilir. Bu, tahmin edilebilir URL’lere dayanır, çünkü site, Magento siparişinizin bekletildiği tarayıcı sekmesindeki gerçek HTML içeriğine erişemez. Ancak Magento mağazasına gönderilen her şey çerezlerinizi gönderir ve böylece oturumunuzu kullanır.

Her forma veya sunucuda bir eylem oluşturan her bağlantıya benzersiz bir anahtar ekleyerek, URL veya form içeriği artık öngörülemez hale gelir. Form anahtarı, oturum verilerinde depolanır ve sunucuya gönderildiğinde onaylanır. Eşleşmiyorlarsa, bir form anahtarı hatası alırsınız ve işlem tamamlanmaz.


3
Yukarıdaki "form_key" gizli girdisini aşağıdaki forma ekleyin: app / design / frontend / base / default / template / persistent / checkout / onepage / login.phtml
Flipmedia

5
Kullanılacak çok daha iyi kod snippet'i <?php echo $this->getBlockHtml('formkey'); ?>, büyük girdiden ziyade olur.
Navarr

Bunu form kapanış etiketinden önce yapıştırın <? Php echo $ this-> getBlockHtml ('formkey'); ?>
Tahir Yasin

güzel, bu benim için çalıştı. Çok teşekkür ederim oy verdim!
KodlamaMageSheen

Vay canına, bunun için çok uzun süre aradım>. Çok teşekkürler!
Keenora Fluffball

8

Olabilir:

cookie setting issue in Chrome browser

VEYA

Magento 1.9 form key validation at customer loggin and registersayfa kullanıyor .

Üzerinde kontrolördeki Post actionform anahtarını using function _validateFormKey()kontrol edin

form key issue: form key missing bu yüzden bu kodu formunuza ekleyin

<input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />

VEYA

Cookie domain setting issue Git kontrol ayarı doğru mu değil mi

en Admin>System>configuration>General>Web>Session Cookie Management


1
Giriş formu zaten form_key alanına sahip ve ben de Cookie Domain'ı ayarlıyorum ve bu da onu düzeltmedi.
Josh Pennington

lütfen çerezi tarayıcıdan sil veya Goto accountcontroller.php kontrol edin (! $ this -> _ validateFormKey ()) {çalışıp çalışmadığını
Amit Bera

Form anahtarı doğru olarak doğrulanıyor. Aslında loginPostAction gayet iyi çalışıyor gibi görünüyor.
Josh Pennington

1
@AmitBera Seninle tanışayım mı? Dilek listesi modülüyle ilgili bir sorunum mu var?
Butterfly,

@AmitBera Anahtarı belirledim ama hala çalışmıyor. Ayrıca accountcontroller.php if (!$this->_validateFormKey()) {, false değerini döndürür; bu, Magento'nun verilen anahtarı doğrulayamadığı anlamına gelir. Herhangi bir fikir neden oldu?
Arvind07

6

Sorun çerez ilgili gibi görünüyor gibi, çerez yaşam süresini artırmayı deneyin 86400 altında

Sytem -> Configuration -> Web -> Session and Cookie Management


Nedeni, varsayılan çerez ömrü 3600 (1 saat) olarak ayarlanmış olabilir. Ancak, son kullanıcıların bilgisayar zamanı sunucunun zamanından önce çalışırsa, çerezler Magento ön ucu ve arka ucu için ayarlanmaz. Örneğin, son kullanıcının bilgisayar saati, sunucunun saatinden 1 saat ileridir; bu, kullanıcı oturum açtığında veya bir öğe eklemeye çalıştığı anda, çerezin (kullanıcının oturum kimliğini elinde tutması) sona ereceği anlamına gelir.


4

Gelecekteki okuyucular için: Bu sorunun birçok olası nedeni var. Giriş sırasında, bazı özel durumlar günlüğü güvenlik nedeniyle engellenir, bu nedenle sorununuz görünmez var/log/exception.log.

Sorununuzu teşhis etmek için:

  1. app/code/core/Mage/Customer/controllers/AccountController.phpve loginPostActionyönteme git.
  2. Mage::logException($e);Aramaya geçici olarak karar vermeyin ve değişikliği kaydedin
  3. Aynı istisnayı tetiklemek için ön uçtan tekrar giriş yapmayı deneyin.
  4. İstisna günlüğündeki son hatalara bakın ve araştırın.
  5. Daha fazla istisna atılmadan önceki iki adımı tekrarlayın.

Değişiklikleri geri almayı unutma app/code/core/Mage/Customer/controllers/AccountController.php!

Sorunumun nedeni, bir sınıfın otomatik olarak yüklenememesiydi çünkü modül (yanlış) <codePool>community</codePool>yerine <codePool>local</codePool>.


Çözümünüzü denedim ama giriş yapamama rağmen oluşturulmadığı bir istisna.log yok!
Jon

4

Kalıcı giriş phtml dosyasına sadece aşağıdaki kod satırını ekleyerek bu sorunu düzelttim.

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />

1
Çözüm için teşekkürler. Neredeyse yarım gününü boşa harcadım. Ve sonunda bu çözümü buldum.
Gaurav Agrawal

3

Tamam yarım saat boyunca çalkalamadan sonra hangi klasörlerde login.phtml değiştirmek zorunda olduğumu öğrendim. Öyleyse git

/app/design/frontend/default/template-name/template/persistent/customer/form/

ve yapıştır

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />

sonra

<ul class="form-list">

bu kadar.


3

Varnish önbelleği kullanıyorsanız, farklı bir sorun olabilir. Başka bir yerde bulduğum bir çözümden alıntı yapıyorum. https://github.com/nexcess/magento-turpentine/issues/169

Ve işte başlıyoruz ... Son zamanlarda başıma bu sorunla girdiğimde giriş yaptığımda aynı isimde iki farklı çerez aldığımı fark ettim. "Frontend". "etki alanı" alanı. İlk çerezde etki alanı değeri "etkialanim.com", ikincisinde "etki alanı". Bu, bir kullanıcı zaten bir ön uç çerezine sahip olmadığında ve tarayıcısının URL'sinde "mydomain.com" yazdığında gerçekleşir. Bu, hatalı "ön uç" çerezinin ayarlanmasını tetikler ve işleri berbat eder! Sunucumuza geri dönersek, bir web kullanıcısı kendisine "www.mydomain.com" hizmetini vermek için "mydomain.com" adresine ulaşırsa bir kurala sahibiz. Bu, kullanıcının tarayıcısında, adres çubuğunda URL’nin "etkialanim.com.tr" den çevrildiği anlamına gelir. "www.mydomain.com" için. Bunun giriş sorunuyla ilgisi olduğundan emin değilim. Sadece söylüyorum. Çözüm: Terebentin önbelleğe alma seçeneklerinde magento konfigürasyonunda bir "Normalize host" seçeneği vardır. Bunu etkinleştirmeniz gerekir. İşte bu! Dağınıklıktan sonra çifte çerez yok! Bu yardımcı olur umarım!


2

Bu sorunun nedeni, özel giriş formunun herhangi bir form_key içermemesi ve loginPostAction of Magento'da gerçekleşen bir form anahtarı doğrulaması olmasıdır.

Aşağıdaki gibi düzeltebilirsiniz:

  1. App / design / frontend / [Paketiniz] / [Temanız] /template/customer/form/login.phtml adresine gidin.

bul:

ve hemen yukarıdaki koddan sonra yapıştırın:

<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>" />
  1. App / design / frontend / Your-package] / [Temanız] /template/persistent/customer/form/login.phtml adresine gidin ve aynı değişiklikleri uygulayın.

1

Yukarıdakiler benim için kesinlikle işe yaradı ama Magento 1.4.1'den 1.9.1'e yükseliyordum. Dosyalar yukarıdaki konumda bulunamadı, ancak app / design / frontend / BASE klasöründe bulundu.

/ App / tasarım / kullanıcı arayüzü / BASE / default / template / kalıcı / müşteri / form /

Bu temel klasör Magento 1.4'ten bu yana pek çok ortak dosyayı içeriyor, bu yüzden okudum ... Umarım bu bana bir kaç saat süren çalışmalarını kurtaracaktır.


1

Herhangi bir sosyal giriş uzantısı kullanıyorsanız, o zaman o login.phtm dosyasına da form anahtarı ekleyin.


1
<input name = "form_key" type = "hidden" value = "<? php echo Mage :: getSingleton ('çekirdek / oturum') -> getFormKey ()?>" />
Yatin Patel

1

Sunucunuzda php-mbstring'in kurulu ve etkin olduğundan emin olun.

Değilse, müşteri çalışmadığı sürece yönetici girişi çalışacaktır.

Bu kontrol, çıktının içine bakarak phpinfo()veya geçici olarak aşağıdaki satırlarda oturum açma istisnasını etkinleştirerek yapılabilir 177:app/code/core/Mage/Customer/controllers/AccountController.php

İşlemin, günlüğe kaydedilen istisna izinde müşteri şifresini ifşa edebileceğini unutmayın.


0

Aynı sorunu yaşadım ve tüm çerezleri silerek çözdüm. Birden fazla farklı magento mağazanız varsa ve bunlara aynı anda giriş yaparsanız, sorun ortaya çıkıyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.