[wp-trac] [WordPress Trac] #23412: Password protected pages - redirect after login

WordPress Trac noreply at wordpress.org
Thu Feb 7 10:32:30 UTC 2013


#23412: Password protected pages - redirect after login
-----------------------------+---------------------------
 Reporter:  dood_cro         |       Type:  defect (bug)
   Status:  new              |   Priority:  normal
Milestone:  Awaiting Review  |  Component:  Accessibility
  Version:  3.5.1            |   Severity:  normal
 Keywords:                   |
-----------------------------+---------------------------
 Hi,

 I am using WP 3.5.1 and I have found out that after a successful login to
 a password protected page, WP won't redirect back.

 This is because referrer is empty.

 So I have modified page login script to have hidden "_wp_http_referer"
 field in form.

 After that, login redirects back to page normally.

 Here is my script:

         function my_password_form() {
             global $post;
             $label = 'pwbox-'.( empty( $post->ID ) ? rand() : $post->ID );
             $o = '<form class="protected-post-form" action="' .
 get_option( 'siteurl' ) . '/wp-login.php?action=postpass" method="post">
             <p>' . __( "To view this protected post, enter the password
 below:" ) . '</p>
             <label for="' . $label . '">' . __( "Password:" ) . '
 </label><input name="post_password" id="' . $label . '" type="password"
 size="20" /><input type="submit" name="Submit" value="' . esc_attr__(
 "Submit" ) . '" />
             <input type="hidden" name="_wp_http_referer"
 value="'.get_permalink().'" />
             </form>
             ';
             return $o;
         }
         add_filter( 'the_password_form', 'my_password_form' );



 This functions returns empty URL to wp-login.php script:

 function wp_get_referer() {
         $ref = false;
         if ( ! empty( $_REQUEST['_wp_http_referer'] ) )
                 $ref = $_REQUEST['_wp_http_referer'];
         else if ( ! empty( $_SERVER['HTTP_REFERER'] ) )
                 $ref = $_SERVER['HTTP_REFERER'];

         if ( $ref && $ref !== $_SERVER['REQUEST_URI'] )
                 return $ref;
         return false;
 }

 I hope this helps.

 I have tried this with all plugins disabled, and also on 20-12 theme, same
 error occurs.

 Bye,
 Dubravko

-- 
Ticket URL: <http://core.trac.wordpress.org/ticket/23412>
WordPress Trac <http://core.trac.wordpress.org/>
WordPress blogging software


More information about the wp-trac mailing list