Şu anda form anahtarları bir şekilde üzerine yazılıyor ve yanlış form anahtarları görüntülüyor ön uç formları ile ilgili sorunlar yaşıyorum. Şu anda müşteri giriş formunda bu sorunu ayıklamaktayım.
Bu, formkey değerinin ne olduğunu görmek için ayarladığım login.phtml'deki kodun anlık görüntüsüdür.
<?php
$retrievedKey = $block->getBlockHtml('formkey');
echo $retrievedKey ;
// i made a breakpoint and inspected $retrievedKey, it returned a html output <input> ... </input> with a form key value of, let's name it 'keyA'.
?>
Tamam şimdi kod yürütme devam sonra, başarıyla sayfa oluşturur.
Ve şimdi krom tarayıcımda form anahtarı gizli girişini incelemeye gidiyorum, ancak ' KeyA'dan tamamen farklı bir form anahtarı yazdırıyor . Bu yeni form anahtarına ' KeyB ' adını verelim .
Şimdi bir giriş yapıp formu gönderiyorum. Gönderilen isteği inceledim ve gerçekten de 'KeyB'i yansıtan bir değer anahtar değişkeni geçiyor.
' Doğrulama ' işlevine bazı kesme noktaları yerleştirdim
Magento \ Framework \ Data \ Formu \ formkey \ Validator
Bu benim karşılaştırma denetçim. Sağda, $ formKey ve $ a eşleşmelidir. Ancak, öyle değil.
$formKey = $request->getParam('form_key', null); // outputs 'KeyB'
$a = $this->_formKey->getFormKey(); // outputs 'KeyA'
Böylece, doğrulama başarısız olur ve beni bu yüzden hiç hata mesajı olmadan giriş sayfasına geri yönlendirir .
Dikkat edilmesi gerekenler:
- Bu davranış, yalnızca krom ve Microsoft EDGE oluşur.
- Firefox iyi çalışıyor, üzerine yazma yok
- Yazdırılan form anahtarı her yenilemede değişiyor gibi görünüyor. $ retrievedKey her seferinde yenilenmiyor
Denediğim şeyler:
- kurulum: yükseltme ve kurulum: statik içerik: dağıtma
- var / cache ve var / generation temizlendi
- temizlenmiş tarayıcı önbelleği ve gizli mod
Form anahtarının neden üzerine yazıldığını kafamda bulamıyorum?
Bunun neden olduğuna dair herhangi bir yardım veya ipucu harika olurdu. Okuduğunuz için teşekkürler
Güncelleme - Bazı hata ayıklama yaptım ve page-cache.js form anahtarı yeniden ayarlayarak soruna neden olduğunu düşündüm . Bunun nedeni, bir 'form_key' çerezi ayarlanmışsa, çerezlerimi kontrol ediyor olması, yeni bir form anahtarı oluşturup çerezlere kaydetmesidir. Sorun şu ki, çerezi kaydedemiyor, bu yüzden yeni form anahtarları oluşturmaya devam ediyor.
Güncelleme - Sorunu çözdüm. Bu, çerez alan adı sorunlarından kaynaklanmaktadır. Teşekkürler