Unul dintre site-urile noastre a fost actualizat Drupal Core 7.83 la 7.87. Există un modul personalizat care extinde funcționalitatea formularelor web pentru unele dintre formularele de pe site. Fostul dezvoltator a scris o funcție pentru a genera un jeton de bază 64 unic, sigur pentru URL, folosind openssl, specificat prin lungime, pentru formularul web. Este folosit pentru a verifica dacă $token
trimis sub formă și există în cel al utilizatorului $_SESSION
. Această verificare împiedică vizitarea paginii de confirmare „Mulțumesc” a formularului fără autentificare, deoarece gestionatorii de trimitere a formularelor web sunt înlocuiți pentru ca datele de trimitere să fie salvate într-o bază de date externă.
Redirecționarea personalizată a paginii de confirmare este scrisă astfel:
$form_state['redirect'] = array("form-submission/$nid/mulțumesc", array("query" => array("token" => $token)));
Care este văzut în bara de adrese a browserului ca:
www.domain.com/form-submission/1/thank-you?token=YmFzZTY0dG9rZW4=
Înainte de actualizarea Drupal Core, lucrurile funcționau conform așteptărilor. Cu toate acestea, de atunci, orice trimitere care vine cu acea redirecționare personalizată aruncă a
403 GET token=YmFzZTY0dG9rZW4=
Acces interzis. Nu esti autorizat sa accesezi aceasta pagina.
La trimiterea formularului.
Când modific
$form_state['redirect'] = array("form-submission/$nid/mulțumesc", array("query" => array("token" => $token)));
la
$form_state['redirect'] = array("form-submission/$nid/multumesc");
apoi formularul trece uneori la pagina de confirmare personalizată, alteori nu. Rezultatele sunt inconsistente.
Formularul web și tokenul modulelor sunt actualizate.
Are cineva vreo perspectivă, instrumente, sfaturi pentru depanare sau ajutor pe care să le poată împărtăși?