คีย์แบบฟอร์มส่วนหน้าถูกเขียนทับ


11

ขณะนี้ฉันกำลังมีปัญหากับแบบฟอร์มส่วนหน้าโดยที่ปุ่มแบบฟอร์มถูกเขียนทับและแสดงแบบฟอร์มที่ไม่ถูกต้อง ขณะนี้ฉันกำลังดีบักปัญหานี้ในแบบฟอร์มการเข้าสู่ระบบลูกค้า

นี่คือสแน็ปช็อตของรหัสที่ login.phtml ซึ่งฉันตั้งค่าเพื่อดูว่าค่าคีย์ฟอร์มคืออะไร

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

ตกลงดังนั้นตอนนี้หลังจากที่ฉันดำเนินการรหัสต่อไปก็จะแสดงผลหน้าเว็บสำเร็จ

และตอนนี้ฉันไปตรวจสอบการป้อนคีย์ที่ซ่อนอยู่ในเบราว์เซอร์โครมของฉันอย่างไรก็ตามมันจะพิมพ์คีย์ฟอร์มที่แตกต่างอย่างสิ้นเชิงจาก ' KeyA ' เราจะตั้งชื่อคีย์ฟอร์มใหม่ ' KeyB '

ตอนนี้ฉันลองทำล็อกอินแล้วส่งแบบฟอร์ม ฉันตรวจสอบคำขอที่ถูกส่งไปและมันผ่านตัวแปรสำคัญในรูปแบบของค่าที่สะท้อนถึง 'KeyB'

ฉันได้วางจุดพักไว้ที่ฟังก์ชัน ' ตรวจสอบความถูกต้อง ' ของ

วีโอไอพี \ Framework \ Data \ แบบฟอร์ม \? formkey \ ตรวจสอบ


นี่คือตัวตรวจสอบการเปรียบเทียบของฉัน โดยขวา $ formKey และ $ a ควรตรงกัน อย่างไรก็ตามมันไม่ได้

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


ดังนั้นการตรวจสอบจึงล้มเหลวและมันนำฉันกลับไปที่หน้าเข้าสู่ระบบโดยไม่มีข้อความแสดงข้อผิดพลาดเลย

สิ่งที่ควรทราบ:

  1. ลักษณะการทำงานนี้เกิดขึ้นใน chrome และ Microsoft EDGE เท่านั้น
  2. Firefox ทำงานได้ดีไม่มีการเขียนทับเกิดขึ้น
  3. ดูเหมือนว่าจะมีการเปลี่ยนแปลงคีย์ฟอร์มที่พิมพ์ออกมาในการรีเฟรชแต่ละครั้ง $ pulledKey ไม่รีเฟรชทุกครั้ง

สิ่งที่ฉันได้ลอง:

  1. การตั้งค่า: อัพเกรดและตั้งค่า: เนื้อหาคงที่: ปรับใช้
  2. เคลียร์ var / cache และ var / generation
  3. ล้างแคชเบราว์เซอร์และโหมดไม่ระบุตัวตน

ฉันคิดไม่ออกว่าทำไมแบบฟอร์มคีย์ถึงถูกเขียนทับ?

ความช่วยเหลือหรือคำแนะนำเกี่ยวกับสาเหตุที่เกิดเหตุการณ์เช่นนี้จะยอดเยี่ยม ขอบคุณที่อ่าน

อัปเดต - ฉันทำการดีบักแล้วและฉันคิดว่าpage-cache.jsทำให้เกิดปัญหาโดยการตั้งค่าคีย์ฟอร์มอีกครั้ง นี่เป็นเพราะข้อเท็จจริงที่ว่ามันกำลังตรวจสอบคุกกี้ของฉันหากมีการตั้งค่าคุกกี้ 'form_key' หากไม่มีให้สร้างรหัสฟอร์มใหม่และบันทึกลงในคุกกี้ ปัญหาคือมันไม่สามารถบันทึกคุกกี้ได้นั่นคือสาเหตุที่มันยังคงสร้างคีย์ฟอร์มใหม่

อัปเดต - ฉันแก้ไขปัญหาแล้ว นี่คือเนื่องจากปัญหาโดเมนคุกกี้ ขอบคุณ


ขอบคุณมากสำหรับการบันทึกการแก้ไข ใช้เวลาสักครู่ในการดีบักปัญหาที่เห็นพฤติกรรมแบบเดียวกัน - สร้างคีย์ฟอร์มซ้ำแล้วซ้ำอีกในส่วนหน้า
Paras Sood

1
ในกรณีของฉันมันคือระบบแคชวีโอไอพีเนื่องจากถูกย้ายจาก env Store -> การตั้งค่า -> Confguration -> ระบบ -> แคชแบบเต็มหน้า -> แอปพลิเคชันแคช: ตั้งค่าเป็นแคชในตัว (หากไม่แน่ใจว่าวานิชนั้นเคลือบเงาอยู่หรือไม่)
Miguel Felipe Guillen Calo

มีปัญหาเดียวกันที่แน่นอนและกำลังตรวจสอบคีย์ฟอร์มในการตรวจสอบเช่นกัน คุณบอกว่าเกิดจากปัญหาโดเมนของคุกกี้คุณสามารถแบ่งปันวิธีที่คุณแก้ไขได้หรือไม่ ขอบคุณ
ยาว MK Nguyễn

คำตอบ:


0

สำหรับกรณีของฉันฉันใช้ localhost ใน URL ดังนั้นวิธีแก้ไขปัญหาต่อไปนี้จะช่วยฉันได้

หากคุณใช้ localhost ใน URL ของคุณในเครื่องคอมพิวเตอร์ดังนั้นแทนที่ด้วย IP

ฉันหมายความว่าถ้า URL ของคุณคือ

http: // localhost / Magento2 /

แทนที่ด้วย

http://127.0.0.1/Magento2/

หวังว่ามันจะใช้ได้กับ Chrome & Edge และ Firefox ด้วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.