หนึ่งในเว็บไซต์ของเราได้รับการอัพเดต Drupal Core 7.83 เป็น 7.87 มีโมดูลแบบกำหนดเองที่ขยายฟังก์ชันเว็บฟอร์มสำหรับบางฟอร์มบนไซต์ นักพัฒนาเดิมเขียนฟังก์ชันเพื่อสร้างโทเค็น URL-safe base 64 ที่ไม่ซ้ำกันโดยใช้ opensl ที่ระบุโดยความยาวสำหรับเว็บฟอร์ม ใช้ในการตรวจสอบว่า โทเค็น $
ส่งในรูปแบบและมีอยู่ในของผู้ใช้ $_SESSION
. การตรวจสอบนี้ป้องกันหน้าการยืนยัน "ขอบคุณ" ของแบบฟอร์มจากการเข้าชมโดยไม่มีการรับรองความถูกต้อง เนื่องจากตัวจัดการการส่งแบบฟอร์มบนเว็บถูกแทนที่เพื่อให้ข้อมูลการส่งถูกบันทึกลงในฐานข้อมูลภายนอก
การเปลี่ยนเส้นทางหน้าการยืนยันแบบกำหนดเองเขียนเป็น:
$form_state['redirect'] = array("ส่งแบบฟอร์ม/$nid/thank-you", array("query" => array("token" => $token)));
ซึ่งเห็นได้ในแถบที่อยู่ของเบราว์เซอร์เป็น:
www.domain.com/form-submission/1/thank-you?token=YmFzZTY0dG9rZW4=
ก่อนการอัปเดต Drupal Core สิ่งต่างๆ ทำงานได้ตามที่คาดไว้ อย่างไรก็ตาม ตั้งแต่นั้นมา การส่งใด ๆ ที่มาพร้อมกับการเปลี่ยนเส้นทางที่กำหนดเองนั้นกำลังส่ง a
403 รับโทเค็น=YmFzZTY0dG9rZW4=
ปฏิเสธการเข้าใช้. คุณไม่ได้รับอนุญาตให้เข้าถึงหน้านี้
เมื่อส่งแบบฟอร์ม
เมื่อฉันแก้ไข
$form_state['redirect'] = array("ส่งแบบฟอร์ม/$nid/thank-you", array("query" => array("token" => $token)));
ถึง
$form_state['redirect'] = array("ส่งแบบฟอร์ม/$nid/thank-you");
บางครั้งแบบฟอร์มจะผ่านไปยังหน้าการยืนยันที่กำหนดเอง บางครั้งก็ไม่ผ่าน ผลลัพธ์ไม่สอดคล้องกัน
เว็บฟอร์มและโทเค็นของโมดูลเป็นปัจจุบัน
ใครบ้างมีข้อมูลเชิงลึก เครื่องมือ เคล็ดลับสำหรับการแก้ปัญหาหรือความช่วยเหลือที่สามารถแบ่งปันได้