From: Kunal Mehta Date: Tue, 18 Oct 2016 21:16:04 +0000 (-0700) Subject: FormSpecialPage: Only add redirectparams for POST forms X-Git-Tag: 1.31.0-rc.0~5060^2 X-Git-Url: http://git.cyclocoop.org/data/%24%7Bnav_urls/membership/href%7D?a=commitdiff_plain;h=eec74de16ae1aa32ffbd3e31b7c9db7cb04045f2;p=lhc%2Fweb%2Fwiklou.git FormSpecialPage: Only add redirectparams for POST forms If the form is submitted via GET, using redirectparams doesn't make sense, and you end up with redirect params being included in the GET query string. And then if the form is submitted again, the redirectparams include the previous redirectparams, and so on. Change-Id: I9bc930e5dca557571b4658444fea6aec59c5797a --- diff --git a/includes/specialpage/FormSpecialPage.php b/includes/specialpage/FormSpecialPage.php index c28c456965..66c7d47ea9 100644 --- a/includes/specialpage/FormSpecialPage.php +++ b/includes/specialpage/FormSpecialPage.php @@ -107,14 +107,15 @@ abstract class FormSpecialPage extends SpecialPage { $form->addHeaderText( $headerMsg->parseAsBlock() ); } - // Retain query parameters (uselang etc) - $params = array_diff_key( - $this->getRequest()->getQueryValues(), [ 'title' => null ] ); - $form->addHiddenField( 'redirectparams', wfArrayToCgi( $params ) ); - $form->addPreText( $this->preText() ); $form->addPostText( $this->postText() ); $this->alterForm( $form ); + if ( $form->getMethod() == 'post' ) { + // Retain query parameters (uselang etc) on POST requests + $params = array_diff_key( + $this->getRequest()->getQueryValues(), [ 'title' => null ] ); + $form->addHiddenField( 'redirectparams', wfArrayToCgi( $params ) ); + } // Give hooks a chance to alter the form, adding extra fields or text etc Hooks::run( 'SpecialPageBeforeFormDisplay', [ $this->getName(), &$form ] );