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
*/
/** Make sure that the WordPress bootstrap has ran 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
2008-06-26 18:40:04 +02:00
if ( force_ssl_admin () && ! is_ssl () ) {
2008-06-11 19:25:55 +02:00
if ( 0 === strpos ( $_SERVER [ 'REQUEST_URI' ], 'http' ) ) {
wp_redirect ( preg_replace ( '|^http://|' , 'https://' , $_SERVER [ 'REQUEST_URI' ]));
exit ();
} else {
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
/**
* login_header () - Outputs the header for the login page
*
* @ package WordPress
* @ uses do_action () Calls the 'login_head' for outputting HTML in the Login
* header .
* @ uses apply_filters () Calls 'login_headerurl' for the top login link .
* @ uses apply_filters () Calls 'login_headertitle' for the top login title .
* @ uses apply_filters () Calls 'login_message' on the message to display in the
* header .
* @ uses $error The error global , which is checked for displaying errors .
*
* @ param string $title Optional . WordPress Login Page title to display in
* < title /> element .
* @ param string $message Optional . Message to display in header .
* @ param WP_Error $wp_error Optional . WordPress Error Object
*/
2008-01-22 20:35:19 +01:00
function login_header ( $title = 'Login' , $message = '' , $wp_error = '' ) {
global $error ;
2006-10-04 18:47:50 +02:00
2008-01-22 20:35:19 +01:00
if ( empty ( $wp_error ) )
$wp_error = new WP_Error ();
2006-10-04 18:47:50 +02:00
?>
<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.0 Transitional//EN " " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >
2006-10-07 21:12:33 +02:00
< html xmlns = " http://www.w3.org/1999/xhtml " < ? php language_attributes (); ?> >
2006-10-04 18:47:50 +02:00
< head >
< title >< ? php bloginfo ( 'name' ); ?> › <?php echo $title; ?></title>
< meta http - equiv = " Content-Type " content = " <?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?> " />
2008-03-08 23:43:58 +01:00
< ? php
2008-05-22 02:06:41 +02:00
wp_admin_css ( 'login' , true );
wp_admin_css ( 'colors-fresh' , true );
2008-07-11 22:14:44 +02:00
do_action ( 'login_head' ); ?>
2006-10-04 18:47:50 +02:00
</ head >
2006-12-04 01:53:33 +01:00
< body class = " login " >
2006-10-04 18:47:50 +02:00
2007-03-20 21:39:39 +01:00
< div id = " login " >< h1 >< a href = " <?php echo apply_filters('login_headerurl', 'http://wordpress.org/'); ?> " title = " <?php echo apply_filters('login_headertitle', __('Powered by WordPress')); ?> " >< ? php bloginfo ( 'name' ); ?> </a></h1>
2006-10-04 18:47:50 +02:00
< ? php
if ( ! empty ( $message ) ) echo apply_filters ( 'login_message' , $message ) . " \n " ;
2008-01-22 20:35:19 +01:00
// Incase a plugin uses $error rather than the $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 " ;
}
}
if ( ! empty ( $errors ) )
echo '<div id="login_error">' . apply_filters ( 'login_errors' , $errors ) . " </div> \n " ;
if ( ! empty ( $messages ) )
echo '<p class="message">' . apply_filters ( 'login_messages' , $messages ) . " </p> \n " ;
2006-10-04 18:47:50 +02:00
}
} // End of login_header()
2008-05-25 17:50:15 +02:00
/**
* retrieve_password () - Handles sending password retrieval email to user
*
* { @ internal Missing Long Description }}
*
* @ 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 () {
global $wpdb ;
$errors = new WP_Error ();
if ( empty ( $_POST [ 'user_login' ] ) && empty ( $_POST [ 'user_email' ] ) )
$errors -> add ( 'empty_username' , __ ( '<strong>ERROR</strong>: Enter a username or e-mail address.' ));
2008-08-27 22:47:01 +02:00
if ( strpos ( $_POST [ 'user_login' ], '@' ) ) {
2008-01-22 20:35:19 +01:00
$user_data = get_user_by_email ( trim ( $_POST [ 'user_login' ]));
if ( empty ( $user_data ) )
$errors -> add ( 'invalid_email' , __ ( '<strong>ERROR</strong>: There is no user registered with that email address.' ));
} else {
$login = trim ( $_POST [ 'user_login' ]);
$user_data = get_userdatabylogin ( $login );
}
do_action ( 'lostpassword_post' );
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 ;
do_action ( 'retreive_password' , $user_login ); // Misspelled and deprecated
do_action ( 'retrieve_password' , $user_login );
2008-07-23 18:36:10 +02:00
$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
2008-04-08 19:30:14 +02:00
$key = $wpdb -> get_var ( $wpdb -> prepare ( " SELECT user_activation_key FROM $wpdb->users WHERE user_login = %s " , $user_login ));
2008-02-25 08:34:24 +01:00
if ( empty ( $key ) ) {
// Generate something random for a key...
2008-04-25 19:12:25 +02:00
$key = wp_generate_password ( 20 , false );
2008-02-25 08:41:13 +01:00
do_action ( 'retrieve_password_key' , $user_login , $key );
2008-02-25 08:34:24 +01:00
// Now insert the new md5 key into the db
2008-04-08 19:30:14 +02:00
$wpdb -> query ( $wpdb -> prepare ( " UPDATE $wpdb->users SET user_activation_key = %s WHERE user_login = %s " , $key , $user_login ));
2008-02-25 08:34:24 +01:00
}
2008-01-22 20:35:19 +01:00
$message = __ ( 'Someone has asked to reset the password for the following site and username.' ) . " \r \n \r \n " ;
$message .= get_option ( 'siteurl' ) . " \r \n \r \n " ;
$message .= sprintf ( __ ( 'Username: %s' ), $user_login ) . " \r \n \r \n " ;
$message .= __ ( 'To reset your password visit the following address, otherwise just ignore this email and nothing will happen.' ) . " \r \n \r \n " ;
2008-06-11 19:25:55 +02:00
$message .= site_url ( " wp-login.php?action=rp&key= $key " , 'login' ) . " \r \n " ;
2008-01-22 20:35:19 +01:00
if ( ! wp_mail ( $user_email , sprintf ( __ ( '[%s] Password Reset' ), get_option ( 'blogname' )), $message ) )
die ( '<p>' . __ ( 'The e-mail could not be sent.' ) . " <br /> \n " . __ ( 'Possible reason: your host may have disabled the mail() function...' ) . '</p>' );
return true ;
}
2008-05-25 17:50:15 +02:00
/**
* reset_password () - Handles resetting the user ' s password
*
* { @ internal Missing Long Description }}
*
* @ uses $wpdb WordPress Database object
*
* @ param string $key Hash to validate sending user ' s password
* @ return bool | WP_Error
*/
2008-01-22 20:35:19 +01:00
function reset_password ( $key ) {
global $wpdb ;
$key = preg_replace ( '/[^a-z0-9]/i' , '' , $key );
if ( empty ( $key ) )
return new WP_Error ( 'invalid_key' , __ ( 'Invalid key' ));
2008-04-08 19:30:14 +02:00
$user = $wpdb -> get_row ( $wpdb -> prepare ( " SELECT * FROM $wpdb->users WHERE user_activation_key = %s " , $key ));
2008-01-22 20:35:19 +01:00
if ( empty ( $user ) )
return new WP_Error ( 'invalid_key' , __ ( 'Invalid key' ));
2008-02-25 08:41:13 +01:00
do_action ( 'password_reset' , $user );
2008-01-22 20:35:19 +01:00
// Generate something random for a password...
$new_pass = wp_generate_password ();
wp_set_password ( $new_pass , $user -> ID );
$message = sprintf ( __ ( 'Username: %s' ), $user -> user_login ) . " \r \n " ;
$message .= sprintf ( __ ( 'Password: %s' ), $new_pass ) . " \r \n " ;
2008-06-11 19:25:55 +02:00
$message .= site_url ( 'wp-login.php' , 'login' ) . " \r \n " ;
2008-01-22 20:35:19 +01:00
if ( ! wp_mail ( $user -> user_email , sprintf ( __ ( '[%s] Your new password' ), get_option ( 'blogname' )), $message ) )
die ( '<p>' . __ ( 'The e-mail could not be sent.' ) . " <br /> \n " . __ ( 'Possible reason: your host may have disabled the mail() function...' ) . '</p>' );
2008-07-29 22:21:34 +02:00
wp_password_change_notification ( $user );
2008-01-22 20:35:19 +01:00
return true ;
}
2008-05-25 17:50:15 +02:00
/**
* register_new_user () - Handles registering a new user
*
* { @ internal Missing Long Description }}
*
* @ param string $user_login User ' s username for logging in
* @ param string $user_email User ' s email address to send password and add
* @ return int | WP_Error Either user ' s ID or error on failure .
*/
2008-01-22 20:35:19 +01:00
function register_new_user ( $user_login , $user_email ) {
$errors = new WP_Error ();
$user_login = sanitize_user ( $user_login );
$user_email = apply_filters ( 'user_registration_email' , $user_email );
// Check the username
if ( $user_login == '' )
$errors -> add ( 'empty_username' , __ ( '<strong>ERROR</strong>: Please enter a username.' ));
elseif ( ! validate_username ( $user_login ) ) {
$errors -> add ( 'invalid_username' , __ ( '<strong>ERROR</strong>: This username is invalid. Please enter a valid username.' ));
$user_login = '' ;
} elseif ( username_exists ( $user_login ) )
$errors -> add ( 'username_exists' , __ ( '<strong>ERROR</strong>: This username is already registered, please choose another one.' ));
// Check the e-mail address
if ( $user_email == '' ) {
$errors -> add ( 'empty_email' , __ ( '<strong>ERROR</strong>: Please type your e-mail address.' ));
} elseif ( ! is_email ( $user_email ) ) {
$errors -> add ( 'invalid_email' , __ ( '<strong>ERROR</strong>: The email address isn’t correct.' ));
$user_email = '' ;
} elseif ( email_exists ( $user_email ) )
$errors -> add ( 'email_exists' , __ ( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ));
2008-02-13 19:42:07 +01:00
do_action ( 'register_post' , $user_login , $user_email , $errors );
2008-01-22 20:35:19 +01:00
$errors = apply_filters ( 'registration_errors' , $errors );
if ( $errors -> get_error_code () )
return $errors ;
$user_pass = wp_generate_password ();
$user_id = wp_create_user ( $user_login , $user_pass , $user_email );
if ( ! $user_id ) {
$errors -> add ( 'registerfail' , sprintf ( __ ( '<strong>ERROR</strong>: Couldn’t register you... please contact the <a href="mailto:%s">webmaster</a> !' ), get_option ( 'admin_email' )));
return $errors ;
}
wp_new_user_notification ( $user_id , $user_pass );
return $user_id ;
}
2008-02-05 07:47:27 +01:00
//
2008-01-22 20:35:19 +01:00
// Main
//
2008-02-02 19:42:09 +01:00
$action = isset ( $_REQUEST [ 'action' ]) ? $_REQUEST [ 'action' ] : '' ;
2008-01-22 20:35:19 +01:00
$errors = new WP_Error ();
if ( isset ( $_GET [ 'key' ]) )
$action = 'resetpass' ;
nocache_headers ();
header ( 'Content-Type: ' . get_bloginfo ( 'html_type' ) . '; charset=' . get_bloginfo ( 'charset' ));
if ( defined ( 'RELOCATE' ) ) { // Move flag is set
if ( isset ( $_SERVER [ 'PATH_INFO' ] ) && ( $_SERVER [ 'PATH_INFO' ] != $_SERVER [ 'PHP_SELF' ]) )
$_SERVER [ 'PHP_SELF' ] = str_replace ( $_SERVER [ 'PATH_INFO' ], '' , $_SERVER [ 'PHP_SELF' ] );
$schema = ( isset ( $_SERVER [ 'HTTPS' ]) && strtolower ( $_SERVER [ 'HTTPS' ]) == 'on' ) ? 'https://' : 'http://' ;
if ( dirname ( $schema . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'PHP_SELF' ]) != get_option ( 'siteurl' ) )
update_option ( 'siteurl' , dirname ( $schema . $_SERVER [ 'HTTP_HOST' ] . $_SERVER [ 'PHP_SELF' ]) );
}
//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 );
2007-11-27 09:03:33 +01:00
$http_post = ( 'POST' == $_SERVER [ 'REQUEST_METHOD' ]);
2006-10-04 18:47:50 +02:00
switch ( $action ) {
case 'logout' :
2003-04-01 16:12:34 +02:00
2008-01-22 20:35:19 +01:00
wp_logout ();
2005-11-11 02:35:15 +01:00
2006-10-04 18:47:50 +02:00
$redirect_to = 'wp-login.php?loggedout=true' ;
if ( isset ( $_REQUEST [ 'redirect_to' ] ) )
2006-06-27 07:38:56 +02:00
$redirect_to = $_REQUEST [ 'redirect_to' ];
2006-02-12 08:53:23 +01:00
2007-09-19 00:23:16 +02:00
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' :
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 ) ) {
wp_redirect ( 'wp-login.php?checkemail=confirm' );
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
2008-01-22 20:35:19 +01:00
if ( 'invalidkey' == $_GET [ 'error' ] ) $errors -> add ( 'invalidkey' , __ ( 'Sorry, that key does not appear to be valid.' ));
2006-10-04 18:47:50 +02:00
do_action ( 'lost_password' );
2008-01-22 20:35:19 +01:00
login_header ( __ ( 'Lost Password' ), '<p class="message">' . __ ( 'Please enter your username or e-mail address. You will receive a new password via e-mail.' ) . '</p>' , $errors );
2003-04-01 16:12:34 +02:00
?>
2008-06-26 18:40:04 +02:00
< form name = " lostpasswordform " id = " lostpasswordform " action = " <?php echo site_url('wp-login.php?action=lostpassword', 'login_post') ?> " method = " post " >
2006-10-04 18:47:50 +02:00
< p >
2008-01-22 20:35:19 +01:00
< label >< ? php _e ( 'Username or E-mail:' ) ?> <br />
2006-12-21 11:10:04 +01:00
< input type = " text " name = " user_login " id = " user_login " class = " input " value = " <?php echo attribute_escape(stripslashes( $_POST['user_login'] )); ?> " size = " 20 " tabindex = " 10 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
< ? php do_action ( 'lostpassword_form' ); ?>
2008-02-20 01:19:01 +01:00
< p class = " submit " >< input type = " submit " name = " wp-submit " id = " wp-submit " value = " <?php _e('Get New Password'); ?> " tabindex = " 100 " /></ 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 " >
2006-08-30 23:46:31 +02:00
< ? php if ( get_option ( 'users_can_register' )) : ?>
2008-06-11 19:25:55 +02:00
< a href = " <?php echo site_url('wp-login.php', 'login') ?> " >< ? php _e ( 'Log in' ) ?> </a> |
< a href = " <?php echo site_url('wp-login.php?action=register', 'login') ?> " >< ? php _e ( 'Register' ) ?> </a>
2006-10-04 18:47:50 +02:00
< ? php else : ?>
2008-06-11 19:25:55 +02:00
< a href = " <?php echo site_url('wp-login.php', 'login') ?> " >< ? php _e ( 'Log in' ) ?> </a>
2006-10-04 18:47:50 +02:00
< ? php endif ; ?>
2008-01-14 10:11:41 +01:00
</ p >
</ div >
< p id = " backtoblog " >< a href = " <?php bloginfo('url'); ?>/ " title = " <?php _e('Are you lost?') ?> " >< ? php printf ( __ ( '« Back to %s' ), get_bloginfo ( 'title' , 'display' )); ?> </a></p>
2006-12-04 01:53:33 +01:00
2008-07-11 22:14:44 +02:00
< script type = " text/javascript " >
try { document . getElementById ( 'user_login' ) . focus ();} catch ( e ){}
</ script >
2003-04-01 16:12:34 +02:00
</ body >
</ html >
2004-10-04 08:23:53 +02:00
< ? php
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' :
2008-01-22 20:35:19 +01:00
$errors = reset_password ( $_GET [ 'key' ]);
2006-10-04 18:47:50 +02:00
2008-01-22 20:35:19 +01:00
if ( ! is_wp_error ( $errors ) ) {
wp_redirect ( 'wp-login.php?checkemail=newpass' );
2006-10-04 18:47:50 +02:00
exit ();
}
2005-02-05 03:19:00 +01:00
2008-01-22 20:35:19 +01:00
wp_redirect ( 'wp-login.php?action=lostpassword&error=invalidkey' );
exit ();
2006-10-04 18:47:50 +02:00
2003-04-01 16:12:34 +02:00
break ;
2006-10-04 18:47:50 +02:00
case 'register' :
2008-01-22 20:35:19 +01:00
if ( ! get_option ( 'users_can_register' ) ) {
2006-10-04 18:47:50 +02:00
wp_redirect ( 'wp-login.php?registration=disabled' );
exit ();
}
2008-01-22 20:35:19 +01:00
$user_login = '' ;
$user_email = '' ;
2007-11-27 09:03:33 +01:00
if ( $http_post ) {
2006-10-04 18:47:50 +02:00
require_once ( ABSPATH . WPINC . '/registration.php' );
2008-01-22 20:35:19 +01:00
$user_login = $_POST [ 'user_login' ];
$user_email = $_POST [ 'user_email' ];
$errors = register_new_user ( $user_login , $user_email );
if ( ! is_wp_error ( $errors ) ) {
wp_redirect ( 'wp-login.php?checkemail=registered' );
exit ();
2006-10-04 18:47:50 +02:00
}
}
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
?>
2008-06-28 15:51:39 +02:00
< form name = " registerform " id = " registerform " action = " <?php echo site_url('wp-login.php?action=register', 'login_post') ?> " method = " post " >
2006-10-04 18:47:50 +02:00
< p >
2008-01-14 10:11:41 +01:00
< label >< ? php _e ( 'Username' ) ?> <br />
2006-12-21 11:10:04 +01:00
< input type = " text " name = " user_login " id = " user_login " class = " input " value = " <?php echo attribute_escape(stripslashes( $user_login )); ?> " size = " 20 " tabindex = " 10 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
< p >
2008-01-14 10:11:41 +01:00
< label >< ? php _e ( 'E-mail' ) ?> <br />
2006-12-21 11:10:04 +01:00
< input type = " text " name = " user_email " id = " user_email " class = " input " value = " <?php echo attribute_escape(stripslashes( $user_email )); ?> " size = " 25 " tabindex = " 20 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
< ? php do_action ( 'register_form' ); ?>
< p id = " reg_passmail " >< ? php _e ( 'A password will be e-mailed to you.' ) ?> </p>
2008-02-20 01:19:01 +01:00
< p class = " submit " >< input type = " submit " name = " wp-submit " id = " wp-submit " value = " <?php _e('Register'); ?> " tabindex = " 100 " /></ p >
2006-10-04 18:47:50 +02:00
</ form >
2008-01-14 10:11:41 +01:00
< p id = " nav " >
2008-06-11 19:25:55 +02:00
< a href = " <?php echo site_url('wp-login.php', 'login') ?> " >< ? php _e ( 'Log in' ) ?> </a> |
< a href = " <?php echo site_url('wp-login.php?action=lostpassword', 'login') ?> " title = " <?php _e('Password Lost and Found') ?> " >< ? php _e ( 'Lost your password?' ) ?> </a>
2008-01-14 10:11:41 +01:00
</ p >
2006-12-04 01:53:33 +01:00
</ div >
2008-01-14 10:11:41 +01:00
< p id = " backtoblog " >< a href = " <?php bloginfo('url'); ?>/ " title = " <?php _e('Are you lost?') ?> " >< ? php printf ( __ ( '« Back to %s' ), get_bloginfo ( 'title' , 'display' )); ?> </a></p>
2006-12-04 01:53:33 +01:00
2008-07-11 22:14:44 +02:00
< script type = " text/javascript " >
try { document . getElementById ( 'user_login' ) . focus ();} catch ( e ){}
</ script >
2006-10-04 18:47:50 +02:00
</ body >
</ html >
< ? php
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 = '' ;
// 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' ]);
if ( $user = get_userdatabylogin ( $user_name ) ) {
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
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 ;
$user = wp_signon ( '' , $secure_cookie );
2008-08-26 19:57:03 +02:00
$redirect_to = apply_filters ( 'login_redirect' , $redirect_to , isset ( $_REQUEST [ 'redirect_to' ] ) ? $_REQUEST [ 'redirect_to' ] : '' , $user );
2008-01-22 20:35:19 +01:00
if ( ! is_wp_error ( $user ) ) {
2005-07-15 03:24:08 +02:00
// If the user can't edit posts, send them to their profile.
2005-11-05 23:17:34 +01:00
if ( ! $user -> has_cap ( 'edit_posts' ) && ( empty ( $redirect_to ) || $redirect_to == 'wp-admin/' ) )
2008-05-27 19:46:01 +02:00
$redirect_to = admin_url ( 'profile.php' );
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 ;
// Clear errors if loggedout is set.
if ( ! empty ( $_GET [ 'loggedout' ]) )
$errors = new WP_Error ();
2007-02-27 16:24:54 +01:00
2008-01-22 20:35:19 +01:00
// If cookies are disabled we can't log in even with a valid user+pass
if ( isset ( $_POST [ 'testcookie' ]) && empty ( $_COOKIE [ TEST_COOKIE ]) )
$errors -> add ( '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. " ));
2006-10-04 18:47:50 +02:00
// Some parts of this script use the main login form to display a message
2008-02-22 23:07:53 +01:00
if ( isset ( $_GET [ 'loggedout' ]) && TRUE == $_GET [ 'loggedout' ] ) $errors -> add ( 'loggedout' , __ ( 'You are now logged out.' ), 'message' );
2008-02-02 19:42:09 +01:00
elseif ( isset ( $_GET [ 'registration' ]) && 'disabled' == $_GET [ 'registration' ] ) $errors -> add ( 'registerdiabled' , __ ( 'User registration is currently not allowed.' ));
2008-02-22 23:07:53 +01:00
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' );
2006-10-04 18:47:50 +02:00
2008-01-22 20:35:19 +01:00
login_header ( __ ( 'Login' ), '' , $errors );
2008-07-25 08:32:53 +02:00
if ( isset ( $_POST [ 'log' ]) )
$user_login = ( 'incorrect_password' == $errors -> get_error_code () || 'empty_password' == $errors -> get_error_code () ) ? attribute_escape ( stripslashes ( $_POST [ 'log' ])) : '' ;
2003-04-01 16:12:34 +02:00
?>
2008-06-26 18:40:04 +02:00
< form name = " loginform " id = " loginform " action = " <?php echo site_url('wp-login.php', 'login_post') ?> " method = " post " >
2008-02-02 19:42:09 +01:00
< ? php if ( ! isset ( $_GET [ 'checkemail' ]) || ! in_array ( $_GET [ 'checkemail' ], array ( 'confirm' , 'newpass' ) ) ) : ?>
2006-10-04 18:47:50 +02:00
< p >
2008-01-14 10:11:41 +01:00
< label >< ? php _e ( 'Username' ) ?> <br />
2008-07-25 08:32:53 +02:00
< input type = " text " name = " log " id = " user_login " class = " input " value = " <?php echo $user_login ; ?> " size = " 20 " tabindex = " 10 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
< p >
2008-01-14 10:11:41 +01:00
< label >< ? php _e ( 'Password' ) ?> <br />
2006-10-07 05:02:42 +02:00
< input type = " password " name = " pwd " id = " user_pass " class = " input " value = " " size = " 20 " tabindex = " 20 " /></ label >
2006-10-04 18:47:50 +02:00
</ p >
< ? php do_action ( 'login_form' ); ?>
2008-01-14 10:11:41 +01:00
< p class = " forgetmenot " >< label >< input name = " rememberme " type = " checkbox " id = " rememberme " value = " forever " tabindex = " 90 " /> < ? php _e ( 'Remember Me' ); ?> </label></p>
2006-10-04 18:47:50 +02:00
< p class = " submit " >
2008-03-14 09:40:53 +01:00
< input type = " submit " name = " wp-submit " id = " wp-submit " value = " <?php _e('Log In'); ?> " tabindex = " 100 " />
2006-12-21 11:10:04 +01:00
< input type = " hidden " name = " redirect_to " value = " <?php echo attribute_escape( $redirect_to ); ?> " />
2008-01-22 20:35:19 +01:00
< input type = " hidden " name = " testcookie " value = " 1 " />
2006-10-04 18:47:50 +02:00
</ p >
2007-07-15 19:50:38 +02:00
< ? php else : ?>
< p >& nbsp ; </ p >
< ? php endif ; ?>
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 " >
2008-02-02 19:42:09 +01:00
< ? php if ( isset ( $_GET [ 'checkemail' ]) && in_array ( $_GET [ 'checkemail' ], array ( 'confirm' , 'newpass' ) ) ) : ?>
2007-07-15 19:50:38 +02:00
< ? php elseif ( get_option ( 'users_can_register' )) : ?>
2008-06-11 19:25:55 +02:00
< a href = " <?php echo site_url('wp-login.php?action=register', 'login') ?> " >< ? php _e ( 'Register' ) ?> </a> |
< a href = " <?php echo site_url('wp-login.php?action=lostpassword', 'login') ?> " title = " <?php _e('Password Lost and Found') ?> " >< ? php _e ( 'Lost your password?' ) ?> </a>
2006-10-04 18:47:50 +02:00
< ? php else : ?>
2008-06-11 19:25:55 +02:00
< a href = " <?php echo site_url('wp-login.php?action=lostpassword', 'login') ?> " title = " <?php _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 >
2006-12-04 01:53:33 +01:00
2008-01-14 10:11:41 +01:00
</ div >
< p id = " backtoblog " >< a href = " <?php bloginfo('url'); ?>/ " title = " <?php _e('Are you lost?') ?> " >< ? php printf ( __ ( '« Back to %s' ), get_bloginfo ( 'title' , 'display' )); ?> </a></p>
2003-04-01 16:12:34 +02:00
2008-07-11 22:14:44 +02:00
< script type = " text/javascript " >
2008-07-25 08:32:53 +02:00
< ? php if ( $user_login ) { ?>
setTimeout ( function (){ try {
d = document . getElementById ( 'user_pass' );
d . value = '' ;
d . focus ();
} catch ( e ){}
}, 200 );
< ? php } else { ?>
2008-07-11 22:14:44 +02:00
try { document . getElementById ( 'user_login' ) . focus ();} catch ( e ){}
2008-07-25 08:32:53 +02:00
< ? php } ?>
2008-07-11 22:14:44 +02:00
</ script >
2003-04-01 16:12:34 +02:00
</ body >
</ html >
2003-06-11 08:03:41 +02:00
< ? php
2003-04-01 16:12:34 +02:00
break ;
2003-06-11 08:03:41 +02:00
} // end action switch
2008-07-29 22:21:34 +02:00
?>