Tombol formulir frontend sedang ditimpa

11

Saat ini saya mengalami masalah dengan formulir frontend di mana tombol formulir entah bagaimana ditimpa dan menampilkan kunci formulir yang salah. Saat ini saya sedang men-debug masalah ini pada formulir login pelanggan.

Ini adalah snapshot dari kode di login.phtml, yang saya setup untuk melihat apa nilai formkey itu.

  <?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'.
  ?>

ok jadi sekarang setelah saya melanjutkan eksekusi kode, itu membuat halaman berhasil.

Dan sekarang saya pergi untuk memeriksa input kunci form tersembunyi pada browser chrome saya, namun, ia mencetak form key yang sama sekali berbeda dari ' KeyA '. Mari beri nama kunci formulir baru ini ' KeyB '.

Sekarang saya mencoba dan melakukan login, dan mengirimkan formulir. Saya memeriksa permintaan yang dikirim, dan memang melewati variabel kunci dari nilai yang mencerminkan 'KeyB'.

Saya telah menempatkan beberapa breakpoint pada fungsi ' validasi ' dari

Magento \ Framework \ Data \ Form \ FormKey \ Validator


Ini adalah pemeriksa perbandingan saya. Dengan benar, $ formKey dan $ a harus cocok. Namun, tidak demikian.

 $formKey = $request->getParam('form_key', null); // outputs 'KeyB'
 $a = $this->_formKey->getFormKey(); // outputs 'KeyA'


Jadi, validasi gagal, dan itu mengarahkan saya kembali ke halaman login tanpa pesan kesalahan apa pun.

Hal yang perlu diperhatikan:

  1. Perilaku ini hanya muncul di chrome dan Microsoft EDGE.
  2. Firefox berfungsi dengan baik, tidak ada penulisan ulang yang terjadi
  3. Kunci formulir yang dicetak tampaknya berubah pada setiap penyegaran. $ recovervedKey tidak me-refresh setiap waktu

Hal yang saya coba:

  1. setup: upgrade dan setup: static-content: deploy
  2. var / cache dibersihkan dan var / generasi
  3. menghapus cache browser dan mode penyamaran

Aku hanya tidak bisa membayangkan mengapa form-key ditimpa?

Setiap bantuan atau petunjuk mengapa ini terjadi akan sangat bagus. Terima kasih sudah membaca

Pembaruan - Saya telah melakukan beberapa debugging dan saya pikir bahwa page-cache.js menyebabkan masalah dengan mengatur kembali form form. Ini disebabkan oleh fakta bahwa, ini sedang memeriksa cookie saya jika cookie 'form_key' disetel, jika tidak, buat kunci formulir baru dan simpan ke cookie. Masalahnya adalah, itu tidak dapat menyimpan cookie, itu sebabnya ia terus membuat kunci formulir baru.

Perbarui - Saya telah memecahkan masalah. Ini karena masalah domain cookie. Terima kasih

Derek
sumber
Terima kasih banyak untuk mendokumentasikan perbaikan. Menghabiskan waktu men-debug masalah melihat perilaku yang sama - kunci formulir dihasilkan lagi dan lagi di front-end
Paras Sood
1
Dalam kasus saya itu adalah sistem cache magento, karena dimigrasikan dari pementasan env. Store -> Settings -> Confguration -> System -> Cache Halaman Penuh -> Aplikasi Caching: Setel ke Cache Internal (jika tidak yakin apakah pernis sudah habis atau tidak).
Miguel Felipe Guillen Calo
Memiliki masalah yang sama persis dan sedang melihat kunci formulir di validasi juga. Anda mengatakan ini karena masalah domain cookie, dapatkah Anda membagikan bagaimana Anda memperbaikinya? Terima kasih
Long MK Nguyễn

Jawaban:

0

Untuk kasus saya, saya menggunakan localhost di URL sehingga solusi berikut membantu saya.

Jika Anda menggunakan localhost di URL Anda di komputer lokal, maka gantilah dengan IP.

Maksud saya jika URL Anda

http: // localhost / Magento2 /

gantikan dengan

http://127.0.0.1/Magento2/

Semoga ini akan bekerja untuk Chrome & Edge dan Firefox juga.

Shuvankar Paul
sumber