2003-04-01 16:12:34 +02:00
< ? php
2008-05-25 17:50:15 +02:00
/**
2008-05-25 22:33:13 +02:00
* WordPress User Page
*
* Handles authentication , registering , resetting passwords , forgot password ,
* and other user handling .
2008-05-25 17:50:15 +02:00
*
* @ package WordPress
*/
2009-04-20 23:50:29 +02:00
/** Make sure that the WordPress bootstrap has run before continuing. */
2008-05-21 07:59:27 +02:00
require ( dirname ( __FILE__ ) . '/wp-load.php' );
2003-04-01 16:12:34 +02:00
2008-06-11 19:25:55 +02:00
// Redirect to https login if forced to use SSL
2012-08-30 15:33:00 +02:00
if ( force_ssl_admin () && ! is_ssl () ) {
2008-06-11 19:25:55 +02:00
if ( 0 === strpos ( $_SERVER [ 'REQUEST_URI' ], 'http' ) ) {
2012-08-30 15:33:00 +02:00
wp_redirect ( set_url_scheme ( $_SERVER [ 'REQUEST_URI' ], 'https' ) );
2008-06-11 19:25:55 +02:00
exit ();
} else {
2012-08-30 15:33:00 +02:00
wp_redirect ( 'https://' . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'REQUEST_URI' ] );
2008-08-09 07:36:14 +02:00
exit ();
2008-06-11 19:25:55 +02:00
}
}
2008-05-25 17:50:15 +02:00
/**
2013-10-06 18:23:39 +02:00
* Output the login page header .
2008-05-25 17:50:15 +02:00
*
2013-10-06 18:23:39 +02:00
* @ param string $title Optional . WordPress Log In Page title to display in < title /> element . Default 'Log In' .
* @ param string $message Optional . Message to display in header . Default empty .
* @ param string $wp_error Optional . The error to pass . Default empty .
2008-05-25 17:50:15 +02:00
* @ param WP_Error $wp_error Optional . WordPress Error Object
*/
2013-11-13 04:22:48 +01:00
function login_header ( $title = 'Log In' , $message = '' , $wp_error = '' ) {
global $error , $interim_login , $action ;
2006-10-04 18:47:50 +02:00
2009-06-03 23:29:02 +02:00
// Don't index any of these forms
2011-11-15 21:44:48 +01:00
add_action ( 'login_head' , 'wp_no_robots' );
2009-06-03 23:29:02 +02:00
2013-09-25 17:19:11 +02:00
if ( wp_is_mobile () )
add_action ( 'login_head' , 'wp_login_viewport_meta' );
2008-01-22 20:35:19 +01:00
if ( empty ( $wp_error ) )
$wp_error = new WP_Error ();
2010-01-24 00:07:56 +01:00
// Shake it!
2013-05-06 23:35:50 +02:00
$shake_error_codes = array ( 'empty_password' , 'empty_email' , 'invalid_email' , 'invalidcombo' , 'empty_username' , 'invalid_username' , 'incorrect_password' );
2013-10-06 18:23:39 +02:00
/**
* Filter the error codes array for shaking the login form .
*
* @ since 3.0 . 0
*
* @ param array $shake_error_codes Error codes that shake the login form .
*/
2010-01-24 00:07:56 +01:00
$shake_error_codes = apply_filters ( 'shake_error_codes' , $shake_error_codes );
2013-03-27 09:43:11 +01:00
if ( $shake_error_codes && $wp_error -> get_error_code () && in_array ( $wp_error -> get_error_code (), $shake_error_codes ) )
2010-01-24 00:07:56 +01:00
add_action ( 'login_head' , 'wp_shake_js' , 12 );
2012-04-10 03:19:30 +02:00
?> <!DOCTYPE html>
2013-12-03 21:11:22 +01:00
<!-- [ if IE 8 ] >
< html xmlns = " http://www.w3.org/1999/xhtml " class = " ie8 " < ? php language_attributes (); ?> >
<! [ endif ] -->
<!-- [ if ! ( IE 8 ) ] ><!-->
< html xmlns = " http://www.w3.org/1999/xhtml " < ? php language_attributes (); ?> >
<!--<! [ endif ] -->
2012-04-10 03:19:30 +02:00
< head >
2006-10-04 18:47:50 +02:00
< meta http - equiv = " Content-Type " content = " <?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?> " />
2011-06-09 00:22:07 +02:00
< title >< ? php bloginfo ( 'name' ); ?> › <?php echo $title; ?></title>
2012-04-10 03:19:30 +02:00
< ? php
2014-02-20 04:23:49 +01:00
wp_admin_css ( 'login' , true );
2009-06-04 00:15:22 +02:00
2013-03-13 11:08:16 +01:00
// Remove all stored post data on logging out.
// This could be added by add_action('login_head'...) like wp_shake_js()
// but maybe better if it's not removable by plugins
if ( 'loggedout' == $wp_error -> get_error_code () ) {
?>
< script > if ( " sessionStorage " in window ){ try { for ( var key in sessionStorage ){ if ( key . indexOf ( " wp-autosave- " ) !=- 1 ){ sessionStorage . removeItem ( key )}}} catch ( e ){}}; </ script >
< ? php
}
2013-10-06 18:23:39 +02:00
/**
* Enqueue scripts and styles for the login page .
*
* @ since 3.1 . 0
*/
2011-02-18 06:10:58 +01:00
do_action ( 'login_enqueue_scripts' );
2013-10-06 18:23:39 +02:00
/**
* Fires in the login page header after scripts are enqueued .
*
* @ since 2.1 . 0
*/
2012-01-29 19:47:41 +01:00
do_action ( 'login_head' );
if ( is_multisite () ) {
$login_header_url = network_home_url ();
2013-11-13 04:22:48 +01:00
$login_header_title = get_current_site () -> site_name ;
2012-01-29 19:47:41 +01:00
} else {
2014-03-03 03:33:24 +01:00
$login_header_url = __ ( 'https://wordpress.org/' );
2012-01-29 19:47:41 +01:00
$login_header_title = __ ( 'Powered by WordPress' );
}
2013-10-06 18:23:39 +02:00
/**
* Filter link URL of the header logo above login form .
*
* @ since 2.1 . 0
*
* @ param string $login_header_url Login header logo URL .
*/
$login_header_url = apply_filters ( 'login_headerurl' , $login_header_url );
/**
* Filter the title attribute of the header logo above login form .
*
* @ since 2.1 . 0
*
* @ param string $login_header_title Login header logo title attribute .
*/
2012-01-29 19:47:41 +01:00
$login_header_title = apply_filters ( 'login_headertitle' , $login_header_title );
2012-04-10 03:19:30 +02:00
2012-11-30 14:40:59 +01:00
$classes = array ( 'login-action-' . $action , 'wp-core-ui' );
2012-09-25 11:13:06 +02:00
if ( wp_is_mobile () )
$classes [] = 'mobile' ;
if ( is_rtl () )
$classes [] = 'rtl' ;
2013-02-28 09:57:17 +01:00
if ( $interim_login ) {
$classes [] = 'interim-login' ;
2013-03-27 09:43:11 +01:00
?>
< style type = " text/css " > html { background - color : transparent ;} </ style >
< ? php
if ( 'success' === $interim_login )
$classes [] = 'interim-login-success' ;
2013-02-28 09:57:17 +01:00
}
2013-10-06 18:23:39 +02:00
/**
* Filter the login page body classes .
*
* @ since 3.5 . 0
*
* @ param array $classes An array of body classes .
* @ param string $action The action that brought the visitor to the login page .
*/
2012-09-25 11:13:06 +02:00
$classes = apply_filters ( 'login_body_class' , $classes , $action );
2013-02-28 09:57:17 +01:00
2012-04-10 03:19:30 +02:00
?>
</ head >
2012-09-25 11:13:06 +02:00
< body class = " login <?php echo esc_attr( implode( ' ', $classes ) ); ?> " >
2012-01-29 19:47:41 +01:00
< div id = " login " >
< h1 >< a href = " <?php echo esc_url( $login_header_url ); ?> " title = " <?php echo esc_attr( $login_header_title ); ?> " >< ? php bloginfo ( 'name' ); ?> </a></h1>
2012-04-10 03:19:30 +02:00
< ? php
2012-01-29 19:47:41 +01:00
unset ( $login_header_url , $login_header_title );
2010-01-11 22:49:40 +01:00
2013-10-06 18:23:39 +02:00
/**
* Filter the message to display above the login form .
*
* @ since 2.1 . 0
*
* @ param string $message Login message text .
*/
$message = apply_filters ( 'login_message' , $message );
2012-04-10 03:19:30 +02:00
if ( ! empty ( $message ) )
echo $message . " \n " ;
2006-10-04 18:47:50 +02:00
2011-05-20 08:00:45 +02:00
// In case a plugin uses $error rather than the $wp_errors object
2006-10-04 18:47:50 +02:00
if ( ! empty ( $error ) ) {
2008-01-22 20:35:19 +01:00
$wp_error -> add ( 'error' , $error );
2006-10-04 18:47:50 +02:00
unset ( $error );
}
2008-01-22 20:35:19 +01:00
if ( $wp_error -> get_error_code () ) {
2008-02-22 23:07:53 +01:00
$errors = '' ;
$messages = '' ;
foreach ( $wp_error -> get_error_codes () as $code ) {
$severity = $wp_error -> get_error_data ( $code );
foreach ( $wp_error -> get_error_messages ( $code ) as $error ) {
if ( 'message' == $severity )
$messages .= ' ' . $error . " <br /> \n " ;
else
$errors .= ' ' . $error . " <br /> \n " ;
}
}
2013-10-06 18:23:39 +02:00
if ( ! empty ( $errors ) ) {
/**
* Filter the error messages displayed above the login form .
*
* @ since 2.1 . 0
*
* @ param string $errors Login error message .
*/
echo '<div id="login_error">' . apply_filters ( 'login_errors' , $errors ) . " </div> \n " ;
}
if ( ! empty ( $messages ) ) {
/**
* Filter instructional messages displayed above the login form .
*
* @ since 2.5 . 0
*
* @ param string $messages Login messages .
*/
echo '<p class="message">' . apply_filters ( 'login_messages' , $messages ) . " </p> \n " ;
}
2006-10-04 18:47:50 +02:00
}
} // End of login_header()
2010-10-04 17:32:54 +02:00
/**
* Outputs the footer for the login page .
*
* @ param string $input_id Which input to auto - focus
*/
function login_footer ( $input_id = '' ) {
2012-06-08 21:22:11 +02:00
global $interim_login ;
// Don't allow interim logins to navigate away from the page.
if ( ! $interim_login ) : ?>
2011-11-14 22:08:33 +01:00
< p id = " backtoblog " >< a href = " <?php echo esc_url( home_url( '/' ) ); ?> " title = " <?php esc_attr_e( 'Are you lost?' ); ?> " >< ? php printf ( __ ( '← Back to %s' ), get_bloginfo ( 'title' , 'display' ) ); ?> </a></p>
2012-06-08 21:22:11 +02:00
< ? php endif ; ?>
2011-06-10 04:37:37 +02:00
</ div >
2010-10-04 17:32:54 +02:00
2012-04-10 03:19:30 +02:00
< ? php if ( ! empty ( $input_id ) ) : ?>
< script type = " text/javascript " >
try { document . getElementById ( '<?php echo $input_id; ?>' ) . focus ();} catch ( e ){}
if ( typeof wpOnload == 'function' ) wpOnload ();
</ script >
< ? php endif ; ?>
2013-10-06 18:23:39 +02:00
< ? php
/**
* Fires in the login page footer .
*
* @ since 3.1 . 0
*/
do_action ( 'login_footer' ); ?>
2012-04-10 03:19:30 +02:00
< div class = " clear " ></ div >
</ body >
</ html >
< ? php
2010-10-04 17:32:54 +02:00
}
2010-01-24 00:07:56 +01:00
function wp_shake_js () {
2012-04-10 03:19:30 +02:00
if ( wp_is_mobile () )
2010-05-23 02:26:13 +02:00
return ;
2010-01-24 00:07:56 +01:00
?>
< script type = " text/javascript " >
2010-01-24 07:16:17 +01:00
addLoadEvent = function ( func ){ if ( typeof jQuery != " undefined " ) jQuery ( document ) . ready ( func ); else if ( typeof wpOnload != 'function' ){ wpOnload = func ;} else { var oldonload = wpOnload ; wpOnload = function (){ oldonload (); func ();}}};
function s ( id , pos ){ g ( id ) . left = pos + 'px' ;}
function g ( id ){ return document . getElementById ( id ) . style ;}
2010-05-23 13:06:44 +02:00
function shake ( id , a , d ){ c = a . shift (); s ( id , c ); if ( a . length > 0 ){ setTimeout ( function (){ shake ( id , a , d );}, d );} else { try { g ( id ) . position = 'static' ; wp_attempt_focus ();} catch ( e ){}}}
2010-01-24 07:16:17 +01:00
addLoadEvent ( function (){ var p = new Array ( 15 , 30 , 15 , 0 , - 15 , - 30 , - 15 , 0 ); p = p . concat ( p . concat ( p )); var i = document . forms [ 0 ] . id ; g ( i ) . position = 'relative' ; shake ( i , p , 20 );});
2010-01-24 00:07:56 +01:00
</ script >
< ? php
}
2013-09-25 17:19:11 +02:00
function wp_login_viewport_meta () {
?>
< meta name = " viewport " content = " width=device-width " />
< ? php
}
2008-05-25 17:50:15 +02:00
/**
2008-09-22 07:15:41 +02:00
* Handles sending password retrieval email to user .
2008-05-25 17:50:15 +02:00
*
* @ uses $wpdb WordPress Database object
*
* @ return bool | WP_Error True : when finish . WP_Error on error
*/
2008-01-22 20:35:19 +01:00
function retrieve_password () {
2013-11-13 04:22:48 +01:00
global $wpdb , $wp_hasher ;
2008-01-22 20:35:19 +01:00
$errors = new WP_Error ();
2011-10-24 23:31:30 +02:00
if ( empty ( $_POST [ 'user_login' ] ) ) {
2008-01-22 20:35:19 +01:00
$errors -> add ( 'empty_username' , __ ( '<strong>ERROR</strong>: Enter a username or e-mail address.' ));
2011-10-24 23:31:30 +02:00
} else if ( strpos ( $_POST [ 'user_login' ], '@' ) ) {
$user_data = get_user_by ( 'email' , trim ( $_POST [ 'user_login' ] ) );
if ( empty ( $user_data ) )
2008-01-22 20:35:19 +01:00
$errors -> add ( 'invalid_email' , __ ( '<strong>ERROR</strong>: There is no user registered with that email address.' ));
} else {
$login = trim ( $_POST [ 'user_login' ]);
2011-08-05 18:57:31 +02:00
$user_data = get_user_by ( 'login' , $login );
2008-01-22 20:35:19 +01:00
}
2013-10-06 18:23:39 +02:00
/**
* Fires before errors are returned from a password reset request .
*
* @ since 2.1 . 0
*/
do_action ( 'lostpassword_post' );
2008-01-22 20:35:19 +01:00
if ( $errors -> get_error_code () )
return $errors ;
2008-02-05 07:47:27 +01:00
2008-01-22 20:35:19 +01:00
if ( ! $user_data ) {
$errors -> add ( 'invalidcombo' , __ ( '<strong>ERROR</strong>: Invalid username or e-mail.' ));
return $errors ;
}
// redefining user_login ensures we return the right case in the email
$user_login = $user_data -> user_login ;
$user_email = $user_data -> user_email ;
2013-10-06 18:23:39 +02:00
/**
* Fires before a new password is retrieved .
*
2013-10-30 04:19:16 +01:00
* @ since 1.5 . 0
* @ deprecated 1.5 . 1 Misspelled . Use 'retrieve_password' hook instead .
2013-10-06 18:23:39 +02:00
*
* @ param string $user_login The user login name .
*/
do_action ( 'retreive_password' , $user_login );
/**
* Fires before a new password is retrieved .
*
2013-10-30 04:19:16 +01:00
* @ since 1.5 . 1
2013-10-06 18:23:39 +02:00
*
* @ param string $user_login The user login name .
*/
do_action ( 'retrieve_password' , $user_login );
2008-01-22 20:35:19 +01:00
2013-10-06 18:23:39 +02:00
/**
* Filter whether to allow a password to be reset .
*
* @ since 2.7 . 0
*
* @ param bool true Whether to allow the password to be reset . Default true .
* @ param int $user_data -> ID The ID of the user attempting to reset a password .
*/
$allow = apply_filters ( 'allow_password_reset' , true , $user_data -> ID );
2008-07-22 21:15:42 +02:00
if ( ! $allow )
return new WP_Error ( 'no_password_reset' , __ ( 'Password reset is not allowed for this user' ));
else if ( is_wp_error ( $allow ) )
return $allow ;
2008-08-09 07:36:14 +02:00
2013-10-06 13:28:42 +02:00
// Generate something random for a password reset key.
$key = wp_generate_password ( 20 , false );
/**
* Fires when a password reset key is generated .
*
* @ since 2.5 . 0
*
* @ param string $user_login The username for the user .
* @ param string $key The generated password reset key .
*/
do_action ( 'retrieve_password_key' , $user_login , $key );
// Now insert the key, hashed, into the DB.
if ( empty ( $wp_hasher ) ) {
require_once ABSPATH . 'wp-includes/class-phpass.php' ;
$wp_hasher = new PasswordHash ( 8 , true );
2008-02-25 08:34:24 +01:00
}
2013-10-06 13:28:42 +02:00
$hashed = $wp_hasher -> HashPassword ( $key );
$wpdb -> update ( $wpdb -> users , array ( 'user_activation_key' => $hashed ), array ( 'user_login' => $user_login ) );
2010-10-12 19:22:05 +02:00
$message = __ ( 'Someone requested that the password be reset for the following account:' ) . " \r \n \r \n " ;
2012-01-07 19:54:08 +01:00
$message .= network_home_url ( '/' ) . " \r \n \r \n " ;
2008-01-22 20:35:19 +01:00
$message .= sprintf ( __ ( 'Username: %s' ), $user_login ) . " \r \n \r \n " ;
2010-10-12 19:22:05 +02:00
$message .= __ ( 'If this was a mistake, just ignore this email and nothing will happen.' ) . " \r \n \r \n " ;
$message .= __ ( 'To reset your password, visit the following address:' ) . " \r \n \r \n " ;
2010-11-11 00:38:15 +01:00
$message .= '<' . network_site_url ( " wp-login.php?action=rp&key= $key &login= " . rawurlencode ( $user_login ), 'login' ) . " > \r \n " ;
2009-05-25 01:47:49 +02:00
2010-02-04 19:57:32 +01:00
if ( is_multisite () )
$blogname = $GLOBALS [ 'current_site' ] -> site_name ;
else
// The blogname option is escaped with esc_html on the way into the database in sanitize_option
// we want to reverse this for the plain text arena of emails.
$blogname = wp_specialchars_decode ( get_option ( 'blogname' ), ENT_QUOTES );
2009-12-14 23:09:54 +01:00
2010-02-04 19:57:32 +01:00
$title = sprintf ( __ ( '[%s] Password Reset' ), $blogname );
2009-05-25 01:47:49 +02:00
2013-10-06 18:23:39 +02:00
/**
* Filter the subject of the password reset email .
*
* @ since 2.8 . 0
*
* @ param string $title Default email title .
*/
$title = apply_filters ( 'retrieve_password_title' , $title );
/**
* Filter the message body of the password reset mail .
*
* @ since 2.8 . 0
*
* @ param string $message Default mail message .
* @ param string $key The activation key .
*/
$message = apply_filters ( 'retrieve_password_message' , $message , $key );
2009-05-25 01:47:49 +02:00
2014-03-28 03:43:04 +01:00
if ( $message && ! wp_mail ( $user_email , wp_specialchars_decode ( $title ), $message ) )
2013-05-08 23:27:31 +02:00
wp_die ( __ ( 'The e-mail could not be sent.' ) . " <br /> \n " . __ ( 'Possible reason: your host may have disabled the mail() function.' ) );
2008-01-22 20:35:19 +01:00
return true ;
}
2008-02-05 07:47:27 +01:00
//
2008-01-22 20:35:19 +01:00
// Main
//
2009-05-12 06:55:06 +02:00
$action = isset ( $_REQUEST [ 'action' ]) ? $_REQUEST [ 'action' ] : 'login' ;
2008-01-22 20:35:19 +01:00
$errors = new WP_Error ();
if ( isset ( $_GET [ 'key' ]) )
$action = 'resetpass' ;
2009-05-12 06:55:06 +02:00
// validate action so as to default to the login screen
2012-02-14 19:29:22 +01:00
if ( ! in_array ( $action , array ( 'postpass' , 'logout' , 'lostpassword' , 'retrievepassword' , 'resetpass' , 'rp' , 'register' , 'login' ), true ) && false === has_filter ( 'login_form_' . $action ) )
2009-05-12 06:55:06 +02:00
$action = 'login' ;
2008-01-22 20:35:19 +01:00
nocache_headers ();
header ( 'Content-Type: ' . get_bloginfo ( 'html_type' ) . '; charset=' . get_bloginfo ( 'charset' ));
2012-07-09 21:32:09 +02:00
if ( defined ( 'RELOCATE' ) && RELOCATE ) { // Move flag is set
2008-01-22 20:35:19 +01:00
if ( isset ( $_SERVER [ 'PATH_INFO' ] ) && ( $_SERVER [ 'PATH_INFO' ] != $_SERVER [ 'PHP_SELF' ]) )
$_SERVER [ 'PHP_SELF' ] = str_replace ( $_SERVER [ 'PATH_INFO' ], '' , $_SERVER [ 'PHP_SELF' ] );
2012-08-30 15:33:00 +02:00
$url = dirname ( set_url_scheme ( 'http://' . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'PHP_SELF' ] ) );
if ( $url != get_option ( 'siteurl' ) )
update_option ( 'siteurl' , $url );
2008-01-22 20:35:19 +01:00
}
//Set a cookie now to see if they are supported by the browser.
setcookie ( TEST_COOKIE , 'WP Cookie check' , 0 , COOKIEPATH , COOKIE_DOMAIN );
if ( SITECOOKIEPATH != COOKIEPATH )
setcookie ( TEST_COOKIE , 'WP Cookie check' , 0 , SITECOOKIEPATH , COOKIE_DOMAIN );
2013-10-06 18:23:39 +02:00
/**
* Fires when the login form is initialized .
2013-10-23 16:37:54 +02:00
*
2013-10-06 18:23:39 +02:00
* @ since 3.2 . 0
*/
2011-05-13 20:33:20 +02:00
do_action ( 'login_init' );
2013-10-06 18:23:39 +02:00
/**
* Fires before a specified login form action .
*
* The dynamic portion of the hook name , $action , refers to the action
* that brought the visitor to the login form . Actions include 'postpass' ,
* 'logout' , 'lostpassword' , etc .
2013-10-23 16:37:54 +02:00
*
2013-10-06 18:23:39 +02:00
* @ since 2.8 . 0
*/
2011-05-06 23:28:53 +02:00
do_action ( 'login_form_' . $action );
2009-05-12 06:55:06 +02:00
2007-11-27 09:03:33 +01:00
$http_post = ( 'POST' == $_SERVER [ 'REQUEST_METHOD' ]);
2013-05-06 23:35:50 +02:00
$interim_login = isset ( $_REQUEST [ 'interim-login' ]);
2006-10-04 18:47:50 +02:00
switch ( $action ) {
2012-02-14 19:29:22 +01:00
case 'postpass' :
2013-06-21 05:00:26 +02:00
require_once ABSPATH . 'wp-includes/class-phpass.php' ;
$hasher = new PasswordHash ( 8 , true );
2012-02-14 19:29:22 +01:00
2013-09-16 19:39:30 +02:00
/**
2013-10-06 18:23:39 +02:00
* Filter the life span of the post password cookie .
2013-09-16 19:39:30 +02:00
*
2013-10-06 18:23:39 +02:00
* By default , the cookie expires 10 days from creation . To turn this
* into a session cookie , return 0.
2013-09-16 19:39:30 +02:00
*
* @ since 3.7 . 0
2013-10-06 18:23:39 +02:00
*
2013-09-16 19:39:30 +02:00
* @ param int $expires The expiry time , as passed to setcookie () .
*/
$expire = apply_filters ( 'post_password_expires' , time () + 10 * DAY_IN_SECONDS );
setcookie ( 'wp-postpass_' . COOKIEHASH , $hasher -> HashPassword ( wp_unslash ( $_POST [ 'post_password' ] ) ), $expire , COOKIEPATH );
2012-02-14 19:29:22 +01:00
wp_safe_redirect ( wp_get_referer () );
exit ();
break ;
2006-10-04 18:47:50 +02:00
case 'logout' :
2008-09-28 23:05:37 +02:00
check_admin_referer ( 'log-out' );
2008-01-22 20:35:19 +01:00
wp_logout ();
2005-11-11 02:35:15 +01:00
2010-02-27 19:21:03 +01:00
$redirect_to = ! empty ( $_REQUEST [ 'redirect_to' ] ) ? $_REQUEST [ 'redirect_to' ] : 'wp-login.php?loggedout=true' ;
wp_safe_redirect ( $redirect_to );
2003-04-01 16:12:34 +02:00
exit ();
break ;
2006-10-04 18:47:50 +02:00
case 'lostpassword' :
case 'retrievepassword' :
2010-10-12 22:29:19 +02:00
2007-11-27 09:03:33 +01:00
if ( $http_post ) {
2008-01-22 20:35:19 +01:00
$errors = retrieve_password ();
if ( ! is_wp_error ( $errors ) ) {
2010-02-27 19:21:03 +01:00
$redirect_to = ! empty ( $_REQUEST [ 'redirect_to' ] ) ? $_REQUEST [ 'redirect_to' ] : 'wp-login.php?checkemail=confirm' ;
wp_safe_redirect ( $redirect_to );
2008-01-22 20:35:19 +01:00
exit ();
2006-10-04 18:47:50 +02:00
}
2005-02-05 03:19:00 +01:00
}
2006-10-04 18:47:50 +02:00
2013-10-06 13:28:42 +02:00
if ( isset ( $_GET [ 'error' ] ) ) {
if ( 'invalidkey' == $_GET [ 'error' ] )
$errors -> add ( 'invalidkey' , __ ( 'Sorry, that key does not appear to be valid.' ) );
elseif ( 'expiredkey' == $_GET [ 'error' ] )
$errors -> add ( 'expiredkey' , __ ( 'Sorry, that key has expired. Please try again.' ) );
}
2013-10-06 18:23:39 +02:00
$lostpassword_redirect = ! empty ( $_REQUEST [ 'redirect_to' ] ) ? $_REQUEST [ 'redirect_to' ] : '' ;
/**
* Filter the URL redirected to after submitting the lostpassword / retrievepassword form .
*
* @ since 3.0 . 0
*
* @ param string $lostpassword_redirect The redirect destination URL .
*/
$redirect_to = apply_filters ( 'lostpassword_redirect' , $lostpassword_redirect );
/**
* Fires before the lost password form .
*
2013-10-30 04:19:16 +01:00
* @ since 1.5 . 1
2013-10-06 18:23:39 +02:00
*/
do_action ( 'lost_password' );
2006-10-04 18:47:50 +02:00
2010-10-27 08:48:01 +02:00
login_header ( __ ( 'Lost Password' ), '<p class="message">' . __ ( 'Please enter your username or email address. You will receive a link to create a new password via email.' ) . '</p>' , $errors );
2008-11-15 00:01:16 +01:00
2013-03-03 22:11:40 +01:00
$user_login = isset ( $_POST [ 'user_login' ]) ? wp_unslash ( $_POST [ 'user_login' ]) : '' ;
2008-11-15 00:01:16 +01:00
2003-04-01 16:12:34 +02:00
?>
2011-11-14 22:08:33 +01:00
< form name = " lostpasswordform " id = " lostpasswordform " action = " <?php echo esc_url( site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?> " method = " post " >
2006-10-04 18:47:50 +02:00
< p >
2011-11-06 21:03:30 +01:00
< label for = " user_login " >< ? php _e ( 'Username or E-mail:' ) ?> <br />
2012-07-24 02:15:15 +02:00
< input type = " text " name = " user_login " id = " user_login " class = " input " value = " <?php echo esc_attr( $user_login ); ?> " size = " 20 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
2013-10-06 18:23:39 +02:00
< ? php
/**
* Fires inside the lostpassword < form > tags , before the hidden fields .
*
* @ since 2.1 . 0
*/
do_action ( 'lostpassword_form' ); ?>
2010-02-27 19:21:03 +01:00
< input type = " hidden " name = " redirect_to " value = " <?php echo esc_attr( $redirect_to ); ?> " />
2012-10-24 03:27:56 +02:00
< p class = " submit " >< input type = " submit " name = " wp-submit " id = " wp-submit " class = " button button-primary button-large " value = " <?php esc_attr_e('Get New Password'); ?> " /></ p >
2003-04-01 16:12:34 +02:00
</ form >
2006-12-04 01:53:33 +01:00
2008-01-14 10:11:41 +01:00
< p id = " nav " >
2011-11-14 22:08:33 +01:00
< a href = " <?php echo esc_url( wp_login_url() ); ?> " >< ? php _e ( 'Log in' ) ?> </a>
2013-10-06 18:23:39 +02:00
< ? php
if ( get_option ( 'users_can_register' ) ) :
$registration_url = sprintf ( '<a href="%s">%s</a>' , esc_url ( wp_registration_url () ), __ ( 'Register' ) );
/**
* Filter the registration URL below the login form .
*
2013-10-30 04:19:16 +01:00
* @ since 1.5 . 0
2013-10-06 18:23:39 +02:00
*
* @ param string $registration_url Registration URL .
*/
echo ' | ' . apply_filters ( 'register' , $registration_url );
endif ;
?>
2008-01-14 10:11:41 +01:00
</ p >
2004-10-04 08:23:53 +02:00
< ? php
2010-10-04 17:32:54 +02:00
login_footer ( 'user_login' );
2003-04-01 16:12:34 +02:00
break ;
2005-02-05 03:19:00 +01:00
case 'resetpass' :
2006-04-20 23:44:14 +02:00
case 'rp' :
2010-10-04 17:32:54 +02:00
$user = check_password_reset_key ( $_GET [ 'key' ], $_GET [ 'login' ]);
2006-10-04 18:47:50 +02:00
2010-10-04 17:32:54 +02:00
if ( is_wp_error ( $user ) ) {
2013-10-06 13:28:42 +02:00
if ( $user -> get_error_code () === 'expired_key' )
wp_redirect ( site_url ( 'wp-login.php?action=lostpassword&error=expiredkey' ) );
else
wp_redirect ( site_url ( 'wp-login.php?action=lostpassword&error=invalidkey' ) );
2010-10-04 17:32:54 +02:00
exit ;
2006-10-04 18:47:50 +02:00
}
2005-02-05 03:19:00 +01:00
2012-09-20 13:01:29 +02:00
$errors = new WP_Error ();
if ( isset ( $_POST [ 'pass1' ]) && $_POST [ 'pass1' ] != $_POST [ 'pass2' ] )
$errors -> add ( 'password_reset_mismatch' , __ ( 'The passwords do not match.' ) );
2013-10-06 18:23:39 +02:00
/**
* Fires before the password reset procedure is validated .
2013-10-23 16:37:54 +02:00
*
2013-10-06 18:23:39 +02:00
* @ since 3.5 . 0
*
* @ param object $errors WP Error object .
* @ param WP_User | WP_Error $user WP_User object if the login and reset key match . WP_Error object otherwise .
*/
2012-09-20 13:01:29 +02:00
do_action ( 'validate_password_reset' , $errors , $user );
2010-10-04 17:32:54 +02:00
2012-09-20 13:01:29 +02:00
if ( ( ! $errors -> get_error_code () ) && isset ( $_POST [ 'pass1' ] ) && ! empty ( $_POST [ 'pass1' ] ) ) {
2010-10-06 21:02:43 +02:00
reset_password ( $user , $_POST [ 'pass1' ]);
2011-11-14 22:08:33 +01:00
login_header ( __ ( 'Password Reset' ), '<p class="message reset-pass">' . __ ( 'Your password has been reset.' ) . ' <a href="' . esc_url ( wp_login_url () ) . '">' . __ ( 'Log in' ) . '</a></p>' );
2010-10-04 17:32:54 +02:00
login_footer ();
exit ;
}
2006-10-04 18:47:50 +02:00
2010-10-27 08:57:10 +02:00
wp_enqueue_script ( 'utils' );
wp_enqueue_script ( 'user-profile' );
2010-10-12 23:37:01 +02:00
2010-10-27 08:57:10 +02:00
login_header ( __ ( 'Reset Password' ), '<p class="message reset-pass">' . __ ( 'Enter your new password below.' ) . '</p>' , $errors );
2010-10-12 22:29:19 +02:00
2010-10-04 17:32:54 +02:00
?>
2013-07-03 23:29:53 +02:00
< form name = " resetpassform " id = " resetpassform " action = " <?php echo esc_url( site_url( 'wp-login.php?action=resetpass&key=' . urlencode( $_GET['key'] ) . '&login=' . urlencode( $_GET['login'] ), 'login_post' ) ); ?> " method = " post " autocomplete = " off " >
2010-10-12 23:37:01 +02:00
< input type = " hidden " id = " user_login " value = " <?php echo esc_attr( $_GET['login'] ); ?> " autocomplete = " off " />
2010-10-04 17:32:54 +02:00
< p >
2011-11-06 21:03:30 +01:00
< label for = " pass1 " >< ? php _e ( 'New password' ) ?> <br />
2010-10-12 23:37:01 +02:00
< input type = " password " name = " pass1 " id = " pass1 " class = " input " size = " 20 " value = " " autocomplete = " off " /></ label >
2010-10-04 17:32:54 +02:00
</ p >
< p >
2011-11-06 21:03:30 +01:00
< label for = " pass2 " >< ? php _e ( 'Confirm new password' ) ?> <br />
2010-10-12 23:37:01 +02:00
< input type = " password " name = " pass2 " id = " pass2 " class = " input " size = " 20 " value = " " autocomplete = " off " /></ label >
2010-10-04 17:32:54 +02:00
</ p >
2010-10-12 22:29:19 +02:00
2010-10-12 23:37:01 +02:00
< div id = " pass-strength-result " class = " hide-if-no-js " >< ? php _e ( 'Strength indicator' ); ?> </div>
2014-02-25 00:30:52 +01:00
< p class = " description indicator-hint " >< ? php _e ( 'Hint: The password should be at least seven characters long. To make it stronger, use upper and lower case letters, numbers, and symbols like ! " ? $ % ^ & ).' ); ?> </p>
2010-10-12 23:37:01 +02:00
2010-10-04 17:32:54 +02:00
< br class = " clear " />
2014-02-02 08:51:03 +01:00
< ? php
/**
* Fires following the 'Strength indicator' meter in the user password reset form .
*
* @ since 3.9 . 0
*
* @ param WP_User $user User undergoing the password reset .
*/
do_action ( 'resetpass_form' , $user );
?>
2012-10-24 03:27:56 +02:00
< p class = " submit " >< input type = " submit " name = " wp-submit " id = " wp-submit " class = " button button-primary button-large " value = " <?php esc_attr_e('Reset Password'); ?> " /></ p >
2010-10-04 17:32:54 +02:00
</ form >
< p id = " nav " >
2011-11-14 22:08:33 +01:00
< a href = " <?php echo esc_url( wp_login_url() ); ?> " >< ? php _e ( 'Log in' ); ?> </a>
2013-10-06 18:23:39 +02:00
< ? php
if ( get_option ( 'users_can_register' ) ) :
$registration_url = sprintf ( '<a href="%s">%s</a>' , esc_url ( wp_registration_url () ), __ ( 'Register' ) );
2013-10-22 19:21:32 +02:00
/** This filter is documented in wp-login.php */
2013-10-06 18:23:39 +02:00
echo ' | ' . apply_filters ( 'register' , $registration_url );
endif ;
?>
2010-10-04 17:32:54 +02:00
</ p >
< ? php
login_footer ( 'user_pass' );
2003-04-01 16:12:34 +02:00
break ;
2006-10-04 18:47:50 +02:00
case 'register' :
2010-01-23 23:50:37 +01:00
if ( is_multisite () ) {
2013-10-06 18:23:39 +02:00
$sign_up_url = network_site_url ( 'wp-signup.php' );
/**
* Filter the Multisite sign up URL .
*
* @ since 3.0 . 0
*
* @ param string $sign_up_url The sign up URL .
*/
wp_redirect ( apply_filters ( 'wp_signup_location' , $sign_up_url ) );
2010-01-16 00:40:29 +01:00
exit ;
}
2008-01-22 20:35:19 +01:00
if ( ! get_option ( 'users_can_register' ) ) {
2010-10-27 12:43:43 +02:00
wp_redirect ( site_url ( 'wp-login.php?registration=disabled' ) );
2006-10-04 18:47:50 +02:00
exit ();
}
2008-01-22 20:35:19 +01:00
$user_login = '' ;
$user_email = '' ;
2007-11-27 09:03:33 +01:00
if ( $http_post ) {
2013-03-01 17:28:40 +01:00
$user_login = $_POST [ 'user_login' ];
$user_email = $_POST [ 'user_email' ];
2008-01-22 20:35:19 +01:00
$errors = register_new_user ( $user_login , $user_email );
if ( ! is_wp_error ( $errors ) ) {
2010-02-27 19:21:03 +01:00
$redirect_to = ! empty ( $_POST [ 'redirect_to' ] ) ? $_POST [ 'redirect_to' ] : 'wp-login.php?checkemail=registered' ;
wp_safe_redirect ( $redirect_to );
2008-01-22 20:35:19 +01:00
exit ();
2006-10-04 18:47:50 +02:00
}
}
2013-10-06 18:23:39 +02:00
$registration_redirect = ! empty ( $_REQUEST [ 'redirect_to' ] ) ? $_REQUEST [ 'redirect_to' ] : '' ;
/**
* Filter the registration redirect URL .
*
* @ since 3.0 . 0
*
* @ param string $registration_redirect The redirect destination URL .
*/
$redirect_to = apply_filters ( 'registration_redirect' , $registration_redirect );
2008-01-22 20:35:19 +01:00
login_header ( __ ( 'Registration Form' ), '<p class="message register">' . __ ( 'Register For This Site' ) . '</p>' , $errors );
2006-10-04 18:47:50 +02:00
?>
2011-11-14 22:08:33 +01:00
< form name = " registerform " id = " registerform " action = " <?php echo esc_url( site_url('wp-login.php?action=register', 'login_post') ); ?> " method = " post " >
2006-10-04 18:47:50 +02:00
< p >
2011-11-06 21:03:30 +01:00
< label for = " user_login " >< ? php _e ( 'Username' ) ?> <br />
2013-03-03 22:11:40 +01:00
< input type = " text " name = " user_login " id = " user_login " class = " input " value = " <?php echo esc_attr(wp_unslash( $user_login )); ?> " size = " 20 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
< p >
2011-11-06 21:03:30 +01:00
< label for = " user_email " >< ? php _e ( 'E-mail' ) ?> <br />
2013-03-03 22:11:40 +01:00
< input type = " text " name = " user_email " id = " user_email " class = " input " value = " <?php echo esc_attr(wp_unslash( $user_email )); ?> " size = " 25 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
2013-10-06 18:23:39 +02:00
< ? php
/**
* Fires following the 'E-mail' field in the user registration form .
*
* @ since 2.1 . 0
*/
do_action ( 'register_form' );
?>
2006-10-04 18:47:50 +02:00
< p id = " reg_passmail " >< ? php _e ( 'A password will be e-mailed to you.' ) ?> </p>
2009-05-01 01:53:26 +02:00
< br class = " clear " />
2010-02-27 19:21:03 +01:00
< input type = " hidden " name = " redirect_to " value = " <?php echo esc_attr( $redirect_to ); ?> " />
2012-10-24 03:27:56 +02:00
< p class = " submit " >< input type = " submit " name = " wp-submit " id = " wp-submit " class = " button button-primary button-large " value = " <?php esc_attr_e('Register'); ?> " /></ p >
2006-10-04 18:47:50 +02:00
</ form >
2008-01-14 10:11:41 +01:00
< p id = " nav " >
2011-11-14 22:08:33 +01:00
< a href = " <?php echo esc_url( wp_login_url() ); ?> " >< ? php _e ( 'Log in' ); ?> </a> |
< a href = " <?php echo esc_url( wp_lostpassword_url() ); ?> " title = " <?php esc_attr_e( 'Password Lost and Found' ) ?> " >< ? php _e ( 'Lost your password?' ); ?> </a>
2008-01-14 10:11:41 +01:00
</ p >
2006-10-04 18:47:50 +02:00
< ? php
2010-10-04 17:32:54 +02:00
login_footer ( 'user_login' );
2006-10-04 18:47:50 +02:00
break ;
2006-11-19 08:56:05 +01:00
case 'login' :
2003-04-01 16:12:34 +02:00
default :
2008-08-21 19:40:38 +02:00
$secure_cookie = '' ;
2012-06-08 21:22:11 +02:00
$customize_login = isset ( $_REQUEST [ 'customize-login' ] );
2012-06-26 20:48:18 +02:00
if ( $customize_login )
wp_enqueue_script ( 'customize-base' );
2008-08-21 19:40:38 +02:00
// If the user wants ssl but the session is not ssl, force a secure cookie.
if ( ! empty ( $_POST [ 'log' ]) && ! force_ssl_admin () ) {
$user_name = sanitize_user ( $_POST [ 'log' ]);
2011-08-05 18:57:31 +02:00
if ( $user = get_user_by ( 'login' , $user_name ) ) {
2008-08-21 19:40:38 +02:00
if ( get_user_option ( 'use_ssl' , $user -> ID ) ) {
$secure_cookie = true ;
force_ssl_admin ( true );
}
}
}
if ( isset ( $_REQUEST [ 'redirect_to' ] ) ) {
2005-09-14 22:57:21 +02:00
$redirect_to = $_REQUEST [ 'redirect_to' ];
2008-08-21 19:40:38 +02:00
// Redirect to https if user wants ssl
2008-08-25 22:40:34 +02:00
if ( $secure_cookie && false !== strpos ( $redirect_to , 'wp-admin' ) )
2008-08-21 19:40:38 +02:00
$redirect_to = preg_replace ( '|^http://|' , 'https://' , $redirect_to );
} else {
2008-06-26 18:40:04 +02:00
$redirect_to = admin_url ();
2008-08-21 19:40:38 +02:00
}
2004-11-27 23:54:23 +01:00
2010-05-11 15:44:40 +02:00
$reauth = empty ( $_REQUEST [ 'reauth' ]) ? false : true ;
2010-01-08 20:10:50 +01:00
// If the user was redirected to a secure login form from a non-secure admin page, and secure login is required but secure admin is not, then don't use a secure
2011-12-14 00:45:31 +01:00
// cookie and redirect back to the referring non-secure admin page. This allows logins to always be POSTed over SSL while allowing the user to choose visiting
2010-01-08 20:09:37 +01:00
// the admin via http or https.
2008-08-21 19:40:38 +02:00
if ( ! $secure_cookie && is_ssl () && force_ssl_login () && ! force_ssl_admin () && ( 0 !== strpos ( $redirect_to , 'https' ) ) && ( 0 === strpos ( $redirect_to , 'http' ) ) )
2008-06-11 19:25:55 +02:00
$secure_cookie = false ;
2013-08-17 03:00:25 +02:00
// If cookies are disabled we can't log in even with a valid user+pass
if ( isset ( $_POST [ 'testcookie' ]) && empty ( $_COOKIE [ TEST_COOKIE ]) )
$user = new WP_Error ( 'test_cookie' , __ ( " <strong>ERROR</strong>: Cookies are blocked or not supported by your browser. You must <a href='http://www.google.com/cookies.html'>enable cookies</a> to use WordPress. " ));
else
$user = wp_signon ( '' , $secure_cookie );
2008-06-11 19:25:55 +02:00
2013-10-06 18:23:39 +02:00
$requested_redirect_to = isset ( $_REQUEST [ 'redirect_to' ] ) ? $_REQUEST [ 'redirect_to' ] : '' ;
/**
* Filter the login redirect URL .
*
* @ since 3.0 . 0
*
* @ param string $redirect_to The redirect destination URL .
* @ param string $requested_redirect_to The requested redirect destination URL passed as a parameter .
* @ param WP_User | WP_Error $user WP_User object if login was successful , WP_Error object otherwise .
*/
$redirect_to = apply_filters ( 'login_redirect' , $redirect_to , $requested_redirect_to , $user );
2008-08-26 19:57:03 +02:00
2010-05-11 15:44:40 +02:00
if ( ! is_wp_error ( $user ) && ! $reauth ) {
2009-10-11 13:26:59 +02:00
if ( $interim_login ) {
$message = '<p class="message">' . __ ( 'You have logged in successfully.' ) . '</p>' ;
2013-03-27 09:43:11 +01:00
$interim_login = 'success' ;
2012-06-26 20:48:18 +02:00
login_header ( '' , $message ); ?>
</ div >
2013-10-06 18:23:39 +02:00
< ? php
2013-10-22 19:21:32 +02:00
/** This action is documented in wp-login.php */
2013-10-06 18:23:39 +02:00
do_action ( 'login_footer' ); ?>
2012-06-26 20:48:18 +02:00
< ? php if ( $customize_login ) : ?>
2012-06-08 21:22:11 +02:00
< script type = " text/javascript " > setTimeout ( function (){ new wp . customize . Messenger ({ url : '<?php echo wp_customize_url(); ?>' , channel : 'login' }) . send ( 'login' ) }, 1000 ); </ script >
2012-06-26 20:48:18 +02:00
< ? php endif ; ?>
2012-06-08 21:22:11 +02:00
</ body ></ html >
2009-10-11 13:26:59 +02:00
< ? php exit ;
}
2010-10-07 21:34:18 +02:00
2011-01-22 19:29:43 +01:00
if ( ( empty ( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url () ) ) {
// If the user doesn't belong to a blog, send them to user admin. If the user can't edit posts, send them to their profile.
2011-08-04 05:09:27 +02:00
if ( is_multisite () && ! get_active_blog_for_user ( $user -> ID ) && ! is_super_admin ( $user -> ID ) )
2011-01-22 19:29:43 +01:00
$redirect_to = user_admin_url ();
elseif ( is_multisite () && ! $user -> has_cap ( 'read' ) )
2011-08-04 05:09:27 +02:00
$redirect_to = get_dashboard_url ( $user -> ID );
2011-01-22 19:29:43 +01:00
elseif ( ! $user -> has_cap ( 'edit_posts' ) )
2012-08-14 21:10:37 +02:00
$redirect_to = admin_url ( 'profile.php' );
2011-01-22 19:29:43 +01:00
}
2008-01-22 20:35:19 +01:00
wp_safe_redirect ( $redirect_to );
exit ();
2003-06-11 08:03:41 +02:00
}
2008-02-05 07:47:27 +01:00
2008-01-22 20:35:19 +01:00
$errors = $user ;
2013-03-27 09:43:11 +01:00
// Clear errors if loggedout is set.
if ( ! empty ( $_GET [ 'loggedout' ]) || $reauth )
2008-01-22 20:35:19 +01:00
$errors = new WP_Error ();
2007-02-27 16:24:54 +01:00
2013-03-27 09:43:11 +01:00
if ( $interim_login ) {
2013-05-06 23:35:50 +02:00
if ( ! $errors -> get_error_code () )
2013-03-27 09:43:11 +01:00
$errors -> add ( 'expired' , __ ( 'Session expired. Please log in again. You will not move away from this page.' ), 'message' );
} else {
// Some parts of this script use the main login form to display a message
if ( isset ( $_GET [ 'loggedout' ]) && true == $_GET [ 'loggedout' ] )
$errors -> add ( 'loggedout' , __ ( 'You are now logged out.' ), 'message' );
elseif ( isset ( $_GET [ 'registration' ]) && 'disabled' == $_GET [ 'registration' ] )
$errors -> add ( 'registerdisabled' , __ ( 'User registration is currently not allowed.' ));
elseif ( isset ( $_GET [ 'checkemail' ]) && 'confirm' == $_GET [ 'checkemail' ] )
$errors -> add ( 'confirm' , __ ( 'Check your e-mail for the confirmation link.' ), 'message' );
elseif ( isset ( $_GET [ 'checkemail' ]) && 'newpass' == $_GET [ 'checkemail' ] )
$errors -> add ( 'newpass' , __ ( 'Check your e-mail for your new password.' ), 'message' );
elseif ( isset ( $_GET [ 'checkemail' ]) && 'registered' == $_GET [ 'checkemail' ] )
$errors -> add ( 'registered' , __ ( 'Registration complete. Please check your e-mail.' ), 'message' );
elseif ( strpos ( $redirect_to , 'about.php?updated' ) )
$errors -> add ( 'updated' , __ ( '<strong>You have successfully updated WordPress!</strong> Please log back in to experience the awesomeness.' ), 'message' );
}
2006-10-04 18:47:50 +02:00
2013-10-06 18:23:39 +02:00
/**
* Filter the login page errors .
*
* @ since 3.6 . 0
*
* @ param object $errors WP Error object .
* @ param string $redirect_to Redirect destination URL .
*/
2013-05-06 23:35:50 +02:00
$errors = apply_filters ( 'wp_login_errors' , $errors , $redirect_to );
2010-05-11 15:44:40 +02:00
// Clear any stale cookies.
if ( $reauth )
wp_clear_auth_cookie ();
2008-11-20 04:23:15 +01:00
login_header ( __ ( 'Log In' ), '' , $errors );
2008-07-25 08:32:53 +02:00
if ( isset ( $_POST [ 'log' ]) )
2013-03-03 22:11:40 +01:00
$user_login = ( 'incorrect_password' == $errors -> get_error_code () || 'empty_password' == $errors -> get_error_code () ) ? esc_attr ( wp_unslash ( $_POST [ 'log' ])) : '' ;
2010-04-28 19:01:55 +02:00
$rememberme = ! empty ( $_POST [ 'rememberme' ] );
2003-04-01 16:12:34 +02:00
?>
2013-05-09 00:45:58 +02:00
< form name = " loginform " id = " loginform " action = " <?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?> " method = " post " >
2006-10-04 18:47:50 +02:00
< p >
2011-11-06 21:03:30 +01:00
< label for = " user_login " >< ? php _e ( 'Username' ) ?> <br />
2012-07-24 02:15:15 +02:00
< input type = " text " name = " log " id = " user_login " class = " input " value = " <?php echo esc_attr( $user_login ); ?> " size = " 20 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
< p >
2011-11-06 21:03:30 +01:00
< label for = " user_pass " >< ? php _e ( 'Password' ) ?> <br />
2012-07-24 02:15:15 +02:00
< input type = " password " name = " pwd " id = " user_pass " class = " input " value = " " size = " 20 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
2013-10-06 18:23:39 +02:00
< ? php
/**
* Fires following the 'Password' field in the login form .
*
* @ since 2.1 . 0
*/
do_action ( 'login_form' );
?>
2012-07-24 02:15:15 +02:00
< p class = " forgetmenot " >< label for = " rememberme " >< input name = " rememberme " type = " checkbox " id = " rememberme " value = " forever " < ? php checked ( $rememberme ); ?> /> <?php esc_attr_e('Remember Me'); ?></label></p>
2006-10-04 18:47:50 +02:00
< p class = " submit " >
2012-10-24 03:27:56 +02:00
< input type = " submit " name = " wp-submit " id = " wp-submit " class = " button button-primary button-large " value = " <?php esc_attr_e('Log In'); ?> " />
2009-10-11 13:26:59 +02:00
< ? php if ( $interim_login ) { ?>
< input type = " hidden " name = " interim-login " value = " 1 " />
< ? php } else { ?>
2009-05-05 21:43:53 +02:00
< input type = " hidden " name = " redirect_to " value = " <?php echo esc_attr( $redirect_to ); ?> " />
2009-10-11 13:26:59 +02:00
< ? php } ?>
2012-06-08 21:22:11 +02:00
< ? php if ( $customize_login ) : ?>
< input type = " hidden " name = " customize-login " value = " 1 " />
< ? php endif ; ?>
2008-01-22 20:35:19 +01:00
< input type = " hidden " name = " testcookie " value = " 1 " />
2006-10-04 18:47:50 +02:00
</ p >
2003-04-01 16:12:34 +02:00
</ form >
2006-12-04 01:53:33 +01:00
2013-01-23 03:08:44 +01:00
< ? php if ( ! $interim_login ) { ?>
2008-01-14 10:11:41 +01:00
< p id = " nav " >
2013-10-06 18:23:39 +02:00
< ? php if ( ! isset ( $_GET [ 'checkemail' ] ) || ! in_array ( $_GET [ 'checkemail' ], array ( 'confirm' , 'newpass' ) ) ) :
if ( get_option ( 'users_can_register' ) ) :
$registration_url = sprintf ( '<a href="%s">%s</a>' , esc_url ( wp_registration_url () ), __ ( 'Register' ) );
2013-10-22 19:21:32 +02:00
/** This filter is documented in wp-login.php */
2013-10-06 18:23:39 +02:00
echo apply_filters ( 'register' , $registration_url ) . ' | ' ;
endif ;
?>
2013-01-23 03:08:44 +01:00
< a href = " <?php echo esc_url( wp_lostpassword_url() ); ?> " title = " <?php esc_attr_e( 'Password Lost and Found' ); ?> " >< ? php _e ( 'Lost your password?' ); ?> </a>
2006-10-04 18:47:50 +02:00
< ? php endif ; ?>
2008-01-14 10:11:41 +01:00
</ p >
2010-06-01 17:54:00 +02:00
< ? php } ?>
2003-04-01 16:12:34 +02:00
2008-07-11 22:14:44 +02:00
< script type = " text/javascript " >
2010-01-24 00:07:56 +01:00
function wp_attempt_focus (){
2008-07-25 08:32:53 +02:00
setTimeout ( function (){ try {
2010-01-24 00:07:56 +01:00
< ? php if ( $user_login || $interim_login ) { ?>
2008-07-25 08:32:53 +02:00
d = document . getElementById ( 'user_pass' );
2010-12-11 05:59:49 +01:00
d . value = '' ;
2010-01-24 00:07:56 +01:00
< ? php } else { ?>
2010-01-26 23:49:05 +01:00
d = document . getElementById ( 'user_login' );
2010-12-11 05:59:49 +01:00
< ? php if ( 'invalid_username' == $errors -> get_error_code () ) { ?>
if ( d . value != '' )
2008-07-25 08:32:53 +02:00
d . value = '' ;
2010-12-13 22:21:50 +01:00
< ? php
2010-12-11 05:59:49 +01:00
}
} ?>
2008-07-25 08:32:53 +02:00
d . focus ();
2010-12-11 05:59:49 +01:00
d . select ();
2008-07-25 08:32:53 +02:00
} catch ( e ){}
}, 200 );
2010-01-24 00:07:56 +01:00
}
< ? php if ( ! $error ) { ?>
wp_attempt_focus ();
2008-07-25 08:32:53 +02:00
< ? php } ?>
2010-01-24 07:16:17 +01:00
if ( typeof wpOnload == 'function' ) wpOnload ();
2013-05-09 00:45:58 +02:00
< ? php if ( $interim_login ) { ?>
( function (){
try {
var i , links = document . getElementsByTagName ( 'a' );
for ( i in links ) {
if ( links [ i ] . href )
links [ i ] . target = '_blank' ;
}
} catch ( e ){}
}());
< ? php } ?>
2008-07-11 22:14:44 +02:00
</ script >
2003-04-01 16:12:34 +02:00
2011-06-10 04:37:37 +02:00
< ? php
login_footer ();
2003-04-01 16:12:34 +02:00
break ;
2003-06-11 08:03:41 +02:00
} // end action switch