37 * <title/> element. |
37 * <title/> element. |
38 * @param string $message Optional. Message to display in header. |
38 * @param string $message Optional. Message to display in header. |
39 * @param WP_Error $wp_error Optional. WordPress Error Object |
39 * @param WP_Error $wp_error Optional. WordPress Error Object |
40 */ |
40 */ |
41 function login_header($title = 'Log In', $message = '', $wp_error = '') { |
41 function login_header($title = 'Log In', $message = '', $wp_error = '') { |
42 global $error, $is_iphone, $interim_login; |
42 global $error, $interim_login, $current_site; |
43 |
43 |
44 // Don't index any of these forms |
44 // Don't index any of these forms |
45 add_filter( 'pre_option_blog_public', create_function( '$a', 'return 0;' ) ); |
45 add_action( 'login_head', 'wp_no_robots' ); |
46 add_action( 'login_head', 'noindex' ); |
|
47 |
46 |
48 if ( empty($wp_error) ) |
47 if ( empty($wp_error) ) |
49 $wp_error = new WP_Error(); |
48 $wp_error = new WP_Error(); |
|
49 |
|
50 // Shake it! |
|
51 $shake_error_codes = array( 'empty_password', 'empty_email', 'invalid_email', 'invalidcombo', 'empty_username', 'invalid_username', 'incorrect_password' ); |
|
52 $shake_error_codes = apply_filters( 'shake_error_codes', $shake_error_codes ); |
|
53 |
|
54 if ( $shake_error_codes && $wp_error->get_error_code() && in_array( $wp_error->get_error_code(), $shake_error_codes ) ) |
|
55 add_action( 'login_head', 'wp_shake_js', 12 ); |
|
56 |
|
57 ?><!DOCTYPE html> |
|
58 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>> |
|
59 <head> |
|
60 <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" /> |
|
61 <title><?php bloginfo('name'); ?> › <?php echo $title; ?></title> |
|
62 <?php |
|
63 |
|
64 wp_admin_css( 'wp-admin', true ); |
|
65 wp_admin_css( 'colors-fresh', true ); |
|
66 |
|
67 if ( wp_is_mobile() ) { ?> |
|
68 <meta name="viewport" content="width=320; initial-scale=0.9; maximum-scale=1.0; user-scalable=0;" /><?php |
|
69 } |
|
70 |
|
71 do_action( 'login_enqueue_scripts' ); |
|
72 do_action( 'login_head' ); |
|
73 |
|
74 if ( is_multisite() ) { |
|
75 $login_header_url = network_home_url(); |
|
76 $login_header_title = $current_site->site_name; |
|
77 } else { |
|
78 $login_header_url = __( 'http://wordpress.org/' ); |
|
79 $login_header_title = __( 'Powered by WordPress' ); |
|
80 } |
|
81 |
|
82 $login_header_url = apply_filters( 'login_headerurl', $login_header_url ); |
|
83 $login_header_title = apply_filters( 'login_headertitle', $login_header_title ); |
|
84 |
|
85 // Don't allow interim logins to navigate away from the page. |
|
86 if ( $interim_login ) |
|
87 $login_header_url = '#'; |
|
88 |
50 ?> |
89 ?> |
51 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
90 </head> |
52 <html xmlns="http://www.w3.org/1999/xhtml" <?php language_attributes(); ?>> |
91 <body class="login<?php if ( wp_is_mobile() ) echo ' mobile'; ?>"> |
53 <head> |
92 <div id="login"> |
54 <title><?php bloginfo('name'); ?> › <?php echo $title; ?></title> |
93 <h1><a href="<?php echo esc_url( $login_header_url ); ?>" title="<?php echo esc_attr( $login_header_title ); ?>"><?php bloginfo( 'name' ); ?></a></h1> |
55 <meta http-equiv="Content-Type" content="<?php bloginfo('html_type'); ?>; charset=<?php bloginfo('charset'); ?>" /> |
94 <?php |
56 <?php |
95 |
57 wp_admin_css( 'login', true ); |
96 unset( $login_header_url, $login_header_title ); |
58 wp_admin_css( 'colors-fresh', true ); |
97 |
59 |
|
60 if ( $is_iphone ) { ?> |
|
61 <meta name="viewport" content="width=320; initial-scale=0.9; maximum-scale=1.0; user-scalable=0;" /> |
|
62 <style type="text/css" media="screen"> |
|
63 form { margin-left: 0px; } |
|
64 #login { margin-top: 20px; } |
|
65 </style> |
|
66 <?php |
|
67 } elseif ( isset($interim_login) && $interim_login ) { ?> |
|
68 <style type="text/css" media="all"> |
|
69 .login #login { margin: 20px auto; } |
|
70 </style> |
|
71 <?php |
|
72 } |
|
73 |
|
74 do_action('login_head'); ?> |
|
75 </head> |
|
76 <body class="login"> |
|
77 |
|
78 <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> |
|
79 <?php |
|
80 $message = apply_filters('login_message', $message); |
98 $message = apply_filters('login_message', $message); |
81 if ( !empty( $message ) ) echo $message . "\n"; |
99 if ( !empty( $message ) ) |
82 |
100 echo $message . "\n"; |
83 // Incase a plugin uses $error rather than the $errors object |
101 |
|
102 // In case a plugin uses $error rather than the $wp_errors object |
84 if ( !empty( $error ) ) { |
103 if ( !empty( $error ) ) { |
85 $wp_error->add('error', $error); |
104 $wp_error->add('error', $error); |
86 unset($error); |
105 unset($error); |
87 } |
106 } |
88 |
107 |
104 echo '<p class="message">' . apply_filters('login_messages', $messages) . "</p>\n"; |
123 echo '<p class="message">' . apply_filters('login_messages', $messages) . "</p>\n"; |
105 } |
124 } |
106 } // End of login_header() |
125 } // End of login_header() |
107 |
126 |
108 /** |
127 /** |
|
128 * Outputs the footer for the login page. |
|
129 * |
|
130 * @param string $input_id Which input to auto-focus |
|
131 */ |
|
132 function login_footer($input_id = '') { |
|
133 global $interim_login; |
|
134 |
|
135 // Don't allow interim logins to navigate away from the page. |
|
136 if ( ! $interim_login ): ?> |
|
137 <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> |
|
138 <?php endif; ?> |
|
139 |
|
140 </div> |
|
141 |
|
142 <?php if ( !empty($input_id) ) : ?> |
|
143 <script type="text/javascript"> |
|
144 try{document.getElementById('<?php echo $input_id; ?>').focus();}catch(e){} |
|
145 if(typeof wpOnload=='function')wpOnload(); |
|
146 </script> |
|
147 <?php endif; ?> |
|
148 |
|
149 <?php do_action('login_footer'); ?> |
|
150 <div class="clear"></div> |
|
151 </body> |
|
152 </html> |
|
153 <?php |
|
154 } |
|
155 |
|
156 function wp_shake_js() { |
|
157 if ( wp_is_mobile() ) |
|
158 return; |
|
159 ?> |
|
160 <script type="text/javascript"> |
|
161 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();}}}; |
|
162 function s(id,pos){g(id).left=pos+'px';} |
|
163 function g(id){return document.getElementById(id).style;} |
|
164 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){}}} |
|
165 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);}); |
|
166 </script> |
|
167 <?php |
|
168 } |
|
169 |
|
170 /** |
109 * Handles sending password retrieval email to user. |
171 * Handles sending password retrieval email to user. |
110 * |
172 * |
111 * @uses $wpdb WordPress Database object |
173 * @uses $wpdb WordPress Database object |
112 * |
174 * |
113 * @return bool|WP_Error True: when finish. WP_Error on error |
175 * @return bool|WP_Error True: when finish. WP_Error on error |
114 */ |
176 */ |
115 function retrieve_password() { |
177 function retrieve_password() { |
116 global $wpdb; |
178 global $wpdb, $current_site; |
117 |
179 |
118 $errors = new WP_Error(); |
180 $errors = new WP_Error(); |
119 |
181 |
120 if ( empty( $_POST['user_login'] ) && empty( $_POST['user_email'] ) ) |
182 if ( empty( $_POST['user_login'] ) ) { |
121 $errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or e-mail address.')); |
183 $errors->add('empty_username', __('<strong>ERROR</strong>: Enter a username or e-mail address.')); |
122 |
184 } else if ( strpos( $_POST['user_login'], '@' ) ) { |
123 if ( strpos($_POST['user_login'], '@') ) { |
185 $user_data = get_user_by( 'email', trim( $_POST['user_login'] ) ); |
124 $user_data = get_user_by_email(trim($_POST['user_login'])); |
186 if ( empty( $user_data ) ) |
125 if ( empty($user_data) ) |
|
126 $errors->add('invalid_email', __('<strong>ERROR</strong>: There is no user registered with that email address.')); |
187 $errors->add('invalid_email', __('<strong>ERROR</strong>: There is no user registered with that email address.')); |
127 } else { |
188 } else { |
128 $login = trim($_POST['user_login']); |
189 $login = trim($_POST['user_login']); |
129 $user_data = get_userdatabylogin($login); |
190 $user_data = get_user_by('login', $login); |
130 } |
191 } |
131 |
192 |
132 do_action('lostpassword_post'); |
193 do_action('lostpassword_post'); |
133 |
194 |
134 if ( $errors->get_error_code() ) |
195 if ( $errors->get_error_code() ) |
159 $key = wp_generate_password(20, false); |
220 $key = wp_generate_password(20, false); |
160 do_action('retrieve_password_key', $user_login, $key); |
221 do_action('retrieve_password_key', $user_login, $key); |
161 // Now insert the new md5 key into the db |
222 // Now insert the new md5 key into the db |
162 $wpdb->update($wpdb->users, array('user_activation_key' => $key), array('user_login' => $user_login)); |
223 $wpdb->update($wpdb->users, array('user_activation_key' => $key), array('user_login' => $user_login)); |
163 } |
224 } |
164 $message = __('Someone has asked to reset the password for the following site and username.') . "\r\n\r\n"; |
225 $message = __('Someone requested that the password be reset for the following account:') . "\r\n\r\n"; |
165 $message .= get_option('siteurl') . "\r\n\r\n"; |
226 $message .= network_home_url( '/' ) . "\r\n\r\n"; |
166 $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n"; |
227 $message .= sprintf(__('Username: %s'), $user_login) . "\r\n\r\n"; |
167 $message .= __('To reset your password visit the following address, otherwise just ignore this email and nothing will happen.') . "\r\n\r\n"; |
228 $message .= __('If this was a mistake, just ignore this email and nothing will happen.') . "\r\n\r\n"; |
168 $message .= site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . "\r\n"; |
229 $message .= __('To reset your password, visit the following address:') . "\r\n\r\n"; |
169 |
230 $message .= '<' . network_site_url("wp-login.php?action=rp&key=$key&login=" . rawurlencode($user_login), 'login') . ">\r\n"; |
170 // The blogname option is escaped with esc_html on the way into the database in sanitize_option |
231 |
171 // we want to reverse this for the plain text arena of emails. |
232 if ( is_multisite() ) |
172 $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); |
233 $blogname = $GLOBALS['current_site']->site_name; |
173 |
234 else |
174 $title = sprintf(__('[%s] Password Reset'), $blogname); |
235 // The blogname option is escaped with esc_html on the way into the database in sanitize_option |
|
236 // we want to reverse this for the plain text arena of emails. |
|
237 $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); |
|
238 |
|
239 $title = sprintf( __('[%s] Password Reset'), $blogname ); |
175 |
240 |
176 $title = apply_filters('retrieve_password_title', $title); |
241 $title = apply_filters('retrieve_password_title', $title); |
177 $message = apply_filters('retrieve_password_message', $message, $key); |
242 $message = apply_filters('retrieve_password_message', $message, $key); |
178 |
243 |
179 if ( $message && !wp_mail($user_email, $title, $message) ) |
244 if ( $message && !wp_mail($user_email, $title, $message) ) |
180 die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>'); |
245 wp_die( __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') ); |
181 |
246 |
182 return true; |
247 return true; |
|
248 } |
|
249 |
|
250 /** |
|
251 * Retrieves a user row based on password reset key and login |
|
252 * |
|
253 * @uses $wpdb WordPress Database object |
|
254 * |
|
255 * @param string $key Hash to validate sending user's password |
|
256 * @param string $login The user login |
|
257 * @return object|WP_Error User's database row on success, error object for invalid keys |
|
258 */ |
|
259 function check_password_reset_key($key, $login) { |
|
260 global $wpdb; |
|
261 |
|
262 $key = preg_replace('/[^a-z0-9]/i', '', $key); |
|
263 |
|
264 if ( empty( $key ) || !is_string( $key ) ) |
|
265 return new WP_Error('invalid_key', __('Invalid key')); |
|
266 |
|
267 if ( empty($login) || !is_string($login) ) |
|
268 return new WP_Error('invalid_key', __('Invalid key')); |
|
269 |
|
270 $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s AND user_login = %s", $key, $login)); |
|
271 |
|
272 if ( empty( $user ) ) |
|
273 return new WP_Error('invalid_key', __('Invalid key')); |
|
274 |
|
275 return $user; |
183 } |
276 } |
184 |
277 |
185 /** |
278 /** |
186 * Handles resetting the user's password. |
279 * Handles resetting the user's password. |
187 * |
280 * |
188 * @uses $wpdb WordPress Database object |
281 * @param object $user The user |
189 * |
282 * @param string $new_pass New password for the user in plaintext |
190 * @param string $key Hash to validate sending user's password |
|
191 * @return bool|WP_Error |
|
192 */ |
283 */ |
193 function reset_password($key, $login) { |
284 function reset_password($user, $new_pass) { |
194 global $wpdb; |
|
195 |
|
196 $key = preg_replace('/[^a-z0-9]/i', '', $key); |
|
197 |
|
198 if ( empty( $key ) || !is_string( $key ) ) |
|
199 return new WP_Error('invalid_key', __('Invalid key')); |
|
200 |
|
201 if ( empty($login) || !is_string($login) ) |
|
202 return new WP_Error('invalid_key', __('Invalid key')); |
|
203 |
|
204 $user = $wpdb->get_row($wpdb->prepare("SELECT * FROM $wpdb->users WHERE user_activation_key = %s AND user_login = %s", $key, $login)); |
|
205 if ( empty( $user ) ) |
|
206 return new WP_Error('invalid_key', __('Invalid key')); |
|
207 |
|
208 // Generate something random for a password... |
|
209 $new_pass = wp_generate_password(); |
|
210 |
|
211 do_action('password_reset', $user, $new_pass); |
285 do_action('password_reset', $user, $new_pass); |
212 |
286 |
213 wp_set_password($new_pass, $user->ID); |
287 wp_set_password($new_pass, $user->ID); |
214 update_usermeta($user->ID, 'default_password_nag', true); //Set up the Password change nag. |
|
215 $message = sprintf(__('Username: %s'), $user->user_login) . "\r\n"; |
|
216 $message .= sprintf(__('Password: %s'), $new_pass) . "\r\n"; |
|
217 $message .= site_url('wp-login.php', 'login') . "\r\n"; |
|
218 |
|
219 // The blogname option is escaped with esc_html on the way into the database in sanitize_option |
|
220 // we want to reverse this for the plain text arena of emails. |
|
221 $blogname = wp_specialchars_decode(get_option('blogname'), ENT_QUOTES); |
|
222 |
|
223 $title = sprintf(__('[%s] Your new password'), $blogname); |
|
224 |
|
225 $title = apply_filters('password_reset_title', $title); |
|
226 $message = apply_filters('password_reset_message', $message, $new_pass); |
|
227 |
|
228 if ( $message && !wp_mail($user->user_email, $title, $message) ) |
|
229 die('<p>' . __('The e-mail could not be sent.') . "<br />\n" . __('Possible reason: your host may have disabled the mail() function...') . '</p>'); |
|
230 |
288 |
231 wp_password_change_notification($user); |
289 wp_password_change_notification($user); |
232 |
|
233 return true; |
|
234 } |
290 } |
235 |
291 |
236 /** |
292 /** |
237 * Handles registering a new user. |
293 * Handles registering a new user. |
238 * |
294 * |
239 * @param string $user_login User's username for logging in |
295 * @param string $user_login User's username for logging in |
240 * @param string $user_email User's email address to send password and add |
296 * @param string $user_email User's email address to send password and add |
241 * @return int|WP_Error Either user's ID or error on failure. |
297 * @return int|WP_Error Either user's ID or error on failure. |
242 */ |
298 */ |
243 function register_new_user($user_login, $user_email) { |
299 function register_new_user( $user_login, $user_email ) { |
244 $errors = new WP_Error(); |
300 $errors = new WP_Error(); |
245 |
301 |
246 $user_login = sanitize_user( $user_login ); |
302 $sanitized_user_login = sanitize_user( $user_login ); |
247 $user_email = apply_filters( 'user_registration_email', $user_email ); |
303 $user_email = apply_filters( 'user_registration_email', $user_email ); |
248 |
304 |
249 // Check the username |
305 // Check the username |
250 if ( $user_login == '' ) |
306 if ( $sanitized_user_login == '' ) { |
251 $errors->add('empty_username', __('<strong>ERROR</strong>: Please enter a username.')); |
307 $errors->add( 'empty_username', __( '<strong>ERROR</strong>: Please enter a username.' ) ); |
252 elseif ( !validate_username( $user_login ) ) { |
308 } elseif ( ! validate_username( $user_login ) ) { |
253 $errors->add('invalid_username', __('<strong>ERROR</strong>: This username is invalid. Please enter a valid username.')); |
309 $errors->add( 'invalid_username', __( '<strong>ERROR</strong>: This username is invalid because it uses illegal characters. Please enter a valid username.' ) ); |
254 $user_login = ''; |
310 $sanitized_user_login = ''; |
255 } elseif ( username_exists( $user_login ) ) |
311 } elseif ( username_exists( $sanitized_user_login ) ) { |
256 $errors->add('username_exists', __('<strong>ERROR</strong>: This username is already registered, please choose another one.')); |
312 $errors->add( 'username_exists', __( '<strong>ERROR</strong>: This username is already registered, please choose another one.' ) ); |
|
313 } |
257 |
314 |
258 // Check the e-mail address |
315 // Check the e-mail address |
259 if ($user_email == '') { |
316 if ( $user_email == '' ) { |
260 $errors->add('empty_email', __('<strong>ERROR</strong>: Please type your e-mail address.')); |
317 $errors->add( 'empty_email', __( '<strong>ERROR</strong>: Please type your e-mail address.' ) ); |
261 } elseif ( !is_email( $user_email ) ) { |
318 } elseif ( ! is_email( $user_email ) ) { |
262 $errors->add('invalid_email', __('<strong>ERROR</strong>: The email address isn’t correct.')); |
319 $errors->add( 'invalid_email', __( '<strong>ERROR</strong>: The email address isn’t correct.' ) ); |
263 $user_email = ''; |
320 $user_email = ''; |
264 } elseif ( email_exists( $user_email ) ) |
321 } elseif ( email_exists( $user_email ) ) { |
265 $errors->add('email_exists', __('<strong>ERROR</strong>: This email is already registered, please choose another one.')); |
322 $errors->add( 'email_exists', __( '<strong>ERROR</strong>: This email is already registered, please choose another one.' ) ); |
266 |
323 } |
267 do_action('register_post', $user_login, $user_email, $errors); |
324 |
268 |
325 do_action( 'register_post', $sanitized_user_login, $user_email, $errors ); |
269 $errors = apply_filters( 'registration_errors', $errors, $user_login, $user_email ); |
326 |
|
327 $errors = apply_filters( 'registration_errors', $errors, $sanitized_user_login, $user_email ); |
270 |
328 |
271 if ( $errors->get_error_code() ) |
329 if ( $errors->get_error_code() ) |
272 return $errors; |
330 return $errors; |
273 |
331 |
274 $user_pass = wp_generate_password(); |
332 $user_pass = wp_generate_password( 12, false); |
275 $user_id = wp_create_user( $user_login, $user_pass, $user_email ); |
333 $user_id = wp_create_user( $sanitized_user_login, $user_pass, $user_email ); |
276 if ( !$user_id ) { |
334 if ( ! $user_id ) { |
277 $errors->add('registerfail', sprintf(__('<strong>ERROR</strong>: Couldn’t register you... please contact the <a href="mailto:%s">webmaster</a> !'), get_option('admin_email'))); |
335 $errors->add( 'registerfail', sprintf( __( '<strong>ERROR</strong>: Couldn’t register you... please contact the <a href="mailto:%s">webmaster</a> !' ), get_option( 'admin_email' ) ) ); |
278 return $errors; |
336 return $errors; |
279 } |
337 } |
280 |
338 |
281 wp_new_user_notification($user_id, $user_pass); |
339 update_user_option( $user_id, 'default_password_nag', true, true ); //Set up the Password change nag. |
|
340 |
|
341 wp_new_user_notification( $user_id, $user_pass ); |
282 |
342 |
283 return $user_id; |
343 return $user_id; |
284 } |
344 } |
285 |
345 |
286 // |
346 // |
292 |
352 |
293 if ( isset($_GET['key']) ) |
353 if ( isset($_GET['key']) ) |
294 $action = 'resetpass'; |
354 $action = 'resetpass'; |
295 |
355 |
296 // validate action so as to default to the login screen |
356 // validate action so as to default to the login screen |
297 if ( !in_array($action, array('logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login'), true) && false === has_filter('login_form_' . $action) ) |
357 if ( !in_array( $action, array( 'postpass', 'logout', 'lostpassword', 'retrievepassword', 'resetpass', 'rp', 'register', 'login' ), true ) && false === has_filter( 'login_form_' . $action ) ) |
298 $action = 'login'; |
358 $action = 'login'; |
299 |
359 |
300 nocache_headers(); |
360 nocache_headers(); |
301 |
361 |
302 header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset')); |
362 header('Content-Type: '.get_bloginfo('html_type').'; charset='.get_bloginfo('charset')); |
303 |
363 |
304 if ( defined('RELOCATE') ) { // Move flag is set |
364 if ( defined('RELOCATE') ) { // Move flag is set |
305 if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) ) |
365 if ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != $_SERVER['PHP_SELF']) ) |
306 $_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] ); |
366 $_SERVER['PHP_SELF'] = str_replace( $_SERVER['PATH_INFO'], '', $_SERVER['PHP_SELF'] ); |
307 |
367 |
308 $schema = ( isset($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on' ) ? 'https://' : 'http://'; |
368 $schema = is_ssl() ? 'https://' : 'http://'; |
309 if ( dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) != get_option('siteurl') ) |
369 if ( dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) != get_option('siteurl') ) |
310 update_option('siteurl', dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) ); |
370 update_option('siteurl', dirname($schema . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']) ); |
311 } |
371 } |
312 |
372 |
313 //Set a cookie now to see if they are supported by the browser. |
373 //Set a cookie now to see if they are supported by the browser. |
314 setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN); |
374 setcookie(TEST_COOKIE, 'WP Cookie check', 0, COOKIEPATH, COOKIE_DOMAIN); |
315 if ( SITECOOKIEPATH != COOKIEPATH ) |
375 if ( SITECOOKIEPATH != COOKIEPATH ) |
316 setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN); |
376 setcookie(TEST_COOKIE, 'WP Cookie check', 0, SITECOOKIEPATH, COOKIE_DOMAIN); |
317 |
377 |
318 // allow plugins to override the default actions, and to add extra actions if they want |
378 // allow plugins to override the default actions, and to add extra actions if they want |
319 do_action('login_form_' . $action); |
379 do_action( 'login_init' ); |
|
380 do_action( 'login_form_' . $action ); |
320 |
381 |
321 $http_post = ('POST' == $_SERVER['REQUEST_METHOD']); |
382 $http_post = ('POST' == $_SERVER['REQUEST_METHOD']); |
322 switch ($action) { |
383 switch ($action) { |
|
384 |
|
385 case 'postpass' : |
|
386 if ( empty( $wp_hasher ) ) { |
|
387 require_once( ABSPATH . 'wp-includes/class-phpass.php' ); |
|
388 // By default, use the portable hash from phpass |
|
389 $wp_hasher = new PasswordHash(8, true); |
|
390 } |
|
391 |
|
392 // 10 days |
|
393 setcookie( 'wp-postpass_' . COOKIEHASH, $wp_hasher->HashPassword( stripslashes( $_POST['post_password'] ) ), time() + 864000, COOKIEPATH ); |
|
394 |
|
395 wp_safe_redirect( wp_get_referer() ); |
|
396 exit(); |
|
397 |
|
398 break; |
323 |
399 |
324 case 'logout' : |
400 case 'logout' : |
325 check_admin_referer('log-out'); |
401 check_admin_referer('log-out'); |
326 wp_logout(); |
402 wp_logout(); |
327 |
403 |
328 $redirect_to = 'wp-login.php?loggedout=true'; |
404 $redirect_to = !empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : 'wp-login.php?loggedout=true'; |
329 if ( isset( $_REQUEST['redirect_to'] ) ) |
405 wp_safe_redirect( $redirect_to ); |
330 $redirect_to = $_REQUEST['redirect_to']; |
|
331 |
|
332 wp_safe_redirect($redirect_to); |
|
333 exit(); |
406 exit(); |
334 |
407 |
335 break; |
408 break; |
336 |
409 |
337 case 'lostpassword' : |
410 case 'lostpassword' : |
338 case 'retrievepassword' : |
411 case 'retrievepassword' : |
|
412 |
339 if ( $http_post ) { |
413 if ( $http_post ) { |
340 $errors = retrieve_password(); |
414 $errors = retrieve_password(); |
341 if ( !is_wp_error($errors) ) { |
415 if ( !is_wp_error($errors) ) { |
342 wp_redirect('wp-login.php?checkemail=confirm'); |
416 $redirect_to = !empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : 'wp-login.php?checkemail=confirm'; |
|
417 wp_safe_redirect( $redirect_to ); |
343 exit(); |
418 exit(); |
344 } |
419 } |
345 } |
420 } |
346 |
421 |
347 if ( isset($_GET['error']) && 'invalidkey' == $_GET['error'] ) $errors->add('invalidkey', __('Sorry, that key does not appear to be valid.')); |
422 if ( isset($_GET['error']) && 'invalidkey' == $_GET['error'] ) $errors->add('invalidkey', __('Sorry, that key does not appear to be valid.')); |
|
423 $redirect_to = apply_filters( 'lostpassword_redirect', !empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '' ); |
348 |
424 |
349 do_action('lost_password'); |
425 do_action('lost_password'); |
350 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); |
426 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); |
351 |
427 |
352 $user_login = isset($_POST['user_login']) ? stripslashes($_POST['user_login']) : ''; |
428 $user_login = isset($_POST['user_login']) ? stripslashes($_POST['user_login']) : ''; |
353 |
429 |
354 ?> |
430 ?> |
355 |
431 |
356 <form name="lostpasswordform" id="lostpasswordform" action="<?php echo site_url('wp-login.php?action=lostpassword', 'login_post') ?>" method="post"> |
432 <form name="lostpasswordform" id="lostpasswordform" action="<?php echo esc_url( site_url( 'wp-login.php?action=lostpassword', 'login_post' ) ); ?>" method="post"> |
357 <p> |
433 <p> |
358 <label><?php _e('Username or E-mail:') ?><br /> |
434 <label for="user_login" ><?php _e('Username or E-mail:') ?><br /> |
359 <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" /></label> |
435 <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" /></label> |
360 </p> |
436 </p> |
361 <?php do_action('lostpassword_form'); ?> |
437 <?php do_action('lostpassword_form'); ?> |
|
438 <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" /> |
362 <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Get New Password'); ?>" tabindex="100" /></p> |
439 <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Get New Password'); ?>" tabindex="100" /></p> |
363 </form> |
440 </form> |
364 |
441 |
365 <p id="nav"> |
442 <p id="nav"> |
366 <?php if (get_option('users_can_register')) : ?> |
443 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e('Log in') ?></a> |
367 <a href="<?php echo site_url('wp-login.php', 'login') ?>"><?php _e('Log in') ?></a> | |
444 <?php if ( get_option( 'users_can_register' ) ) : ?> |
368 <a href="<?php echo site_url('wp-login.php?action=register', 'login') ?>"><?php _e('Register') ?></a> |
445 | <a href="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login' ) ); ?>"><?php _e( 'Register' ); ?></a> |
369 <?php else : ?> |
|
370 <a href="<?php echo site_url('wp-login.php', 'login') ?>"><?php _e('Log in') ?></a> |
|
371 <?php endif; ?> |
446 <?php endif; ?> |
372 </p> |
447 </p> |
373 |
448 |
374 </div> |
|
375 |
|
376 <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> |
|
377 |
|
378 <script type="text/javascript"> |
|
379 try{document.getElementById('user_login').focus();}catch(e){} |
|
380 </script> |
|
381 </body> |
|
382 </html> |
|
383 <?php |
449 <?php |
|
450 login_footer('user_login'); |
384 break; |
451 break; |
385 |
452 |
386 case 'resetpass' : |
453 case 'resetpass' : |
387 case 'rp' : |
454 case 'rp' : |
388 $errors = reset_password($_GET['key'], $_GET['login']); |
455 $user = check_password_reset_key($_GET['key'], $_GET['login']); |
389 |
456 |
390 if ( ! is_wp_error($errors) ) { |
457 if ( is_wp_error($user) ) { |
391 wp_redirect('wp-login.php?checkemail=newpass'); |
458 wp_redirect( site_url('wp-login.php?action=lostpassword&error=invalidkey') ); |
392 exit(); |
459 exit; |
393 } |
460 } |
394 |
461 |
395 wp_redirect('wp-login.php?action=lostpassword&error=invalidkey'); |
462 $errors = ''; |
396 exit(); |
463 |
397 |
464 if ( isset($_POST['pass1']) && $_POST['pass1'] != $_POST['pass2'] ) { |
|
465 $errors = new WP_Error('password_reset_mismatch', __('The passwords do not match.')); |
|
466 } elseif ( isset($_POST['pass1']) && !empty($_POST['pass1']) ) { |
|
467 reset_password($user, $_POST['pass1']); |
|
468 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>' ); |
|
469 login_footer(); |
|
470 exit; |
|
471 } |
|
472 |
|
473 wp_enqueue_script('utils'); |
|
474 wp_enqueue_script('user-profile'); |
|
475 |
|
476 login_header(__('Reset Password'), '<p class="message reset-pass">' . __('Enter your new password below.') . '</p>', $errors ); |
|
477 |
|
478 ?> |
|
479 <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"> |
|
480 <input type="hidden" id="user_login" value="<?php echo esc_attr( $_GET['login'] ); ?>" autocomplete="off" /> |
|
481 |
|
482 <p> |
|
483 <label for="pass1"><?php _e('New password') ?><br /> |
|
484 <input type="password" name="pass1" id="pass1" class="input" size="20" value="" autocomplete="off" /></label> |
|
485 </p> |
|
486 <p> |
|
487 <label for="pass2"><?php _e('Confirm new password') ?><br /> |
|
488 <input type="password" name="pass2" id="pass2" class="input" size="20" value="" autocomplete="off" /></label> |
|
489 </p> |
|
490 |
|
491 <div id="pass-strength-result" class="hide-if-no-js"><?php _e('Strength indicator'); ?></div> |
|
492 <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> |
|
493 |
|
494 <br class="clear" /> |
|
495 <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Reset Password'); ?>" tabindex="100" /></p> |
|
496 </form> |
|
497 |
|
498 <p id="nav"> |
|
499 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a> |
|
500 <?php if ( get_option( 'users_can_register' ) ) : ?> |
|
501 | <a href="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login' ) ); ?>"><?php _e( 'Register' ); ?></a> |
|
502 <?php endif; ?> |
|
503 </p> |
|
504 |
|
505 <?php |
|
506 login_footer('user_pass'); |
398 break; |
507 break; |
399 |
508 |
400 case 'register' : |
509 case 'register' : |
|
510 if ( is_multisite() ) { |
|
511 // Multisite uses wp-signup.php |
|
512 wp_redirect( apply_filters( 'wp_signup_location', site_url('wp-signup.php') ) ); |
|
513 exit; |
|
514 } |
|
515 |
401 if ( !get_option('users_can_register') ) { |
516 if ( !get_option('users_can_register') ) { |
402 wp_redirect('wp-login.php?registration=disabled'); |
517 wp_redirect( site_url('wp-login.php?registration=disabled') ); |
403 exit(); |
518 exit(); |
404 } |
519 } |
405 |
520 |
406 $user_login = ''; |
521 $user_login = ''; |
407 $user_email = ''; |
522 $user_email = ''; |
408 if ( $http_post ) { |
523 if ( $http_post ) { |
409 require_once( ABSPATH . WPINC . '/registration.php'); |
|
410 |
|
411 $user_login = $_POST['user_login']; |
524 $user_login = $_POST['user_login']; |
412 $user_email = $_POST['user_email']; |
525 $user_email = $_POST['user_email']; |
413 $errors = register_new_user($user_login, $user_email); |
526 $errors = register_new_user($user_login, $user_email); |
414 if ( !is_wp_error($errors) ) { |
527 if ( !is_wp_error($errors) ) { |
415 wp_redirect('wp-login.php?checkemail=registered'); |
528 $redirect_to = !empty( $_POST['redirect_to'] ) ? $_POST['redirect_to'] : 'wp-login.php?checkemail=registered'; |
|
529 wp_safe_redirect( $redirect_to ); |
416 exit(); |
530 exit(); |
417 } |
531 } |
418 } |
532 } |
419 |
533 |
|
534 $redirect_to = apply_filters( 'registration_redirect', !empty( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '' ); |
420 login_header(__('Registration Form'), '<p class="message register">' . __('Register For This Site') . '</p>', $errors); |
535 login_header(__('Registration Form'), '<p class="message register">' . __('Register For This Site') . '</p>', $errors); |
421 ?> |
536 ?> |
422 |
537 |
423 <form name="registerform" id="registerform" action="<?php echo site_url('wp-login.php?action=register', 'login_post') ?>" method="post"> |
538 <form name="registerform" id="registerform" action="<?php echo esc_url( site_url('wp-login.php?action=register', 'login_post') ); ?>" method="post"> |
424 <p> |
539 <p> |
425 <label><?php _e('Username') ?><br /> |
540 <label for="user_login"><?php _e('Username') ?><br /> |
426 <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" tabindex="10" /></label> |
541 <input type="text" name="user_login" id="user_login" class="input" value="<?php echo esc_attr(stripslashes($user_login)); ?>" size="20" tabindex="10" /></label> |
427 </p> |
542 </p> |
428 <p> |
543 <p> |
429 <label><?php _e('E-mail') ?><br /> |
544 <label for="user_email"><?php _e('E-mail') ?><br /> |
430 <input type="text" name="user_email" id="user_email" class="input" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" tabindex="20" /></label> |
545 <input type="email" name="user_email" id="user_email" class="input" value="<?php echo esc_attr(stripslashes($user_email)); ?>" size="25" tabindex="20" /></label> |
431 </p> |
546 </p> |
432 <?php do_action('register_form'); ?> |
547 <?php do_action('register_form'); ?> |
433 <p id="reg_passmail"><?php _e('A password will be e-mailed to you.') ?></p> |
548 <p id="reg_passmail"><?php _e('A password will be e-mailed to you.') ?></p> |
434 <br class="clear" /> |
549 <br class="clear" /> |
|
550 <input type="hidden" name="redirect_to" value="<?php echo esc_attr( $redirect_to ); ?>" /> |
435 <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Register'); ?>" tabindex="100" /></p> |
551 <p class="submit"><input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Register'); ?>" tabindex="100" /></p> |
436 </form> |
552 </form> |
437 |
553 |
438 <p id="nav"> |
554 <p id="nav"> |
439 <a href="<?php echo site_url('wp-login.php', 'login') ?>"><?php _e('Log in') ?></a> | |
555 <a href="<?php echo esc_url( wp_login_url() ); ?>"><?php _e( 'Log in' ); ?></a> | |
440 <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> |
556 <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>" title="<?php esc_attr_e( 'Password Lost and Found' ) ?>"><?php _e( 'Lost your password?' ); ?></a> |
441 </p> |
557 </p> |
442 |
558 |
443 </div> |
|
444 |
|
445 <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> |
|
446 |
|
447 <script type="text/javascript"> |
|
448 try{document.getElementById('user_login').focus();}catch(e){} |
|
449 </script> |
|
450 </body> |
|
451 </html> |
|
452 <?php |
559 <?php |
|
560 login_footer('user_login'); |
453 break; |
561 break; |
454 |
562 |
455 case 'login' : |
563 case 'login' : |
456 default: |
564 default: |
457 $secure_cookie = ''; |
565 $secure_cookie = ''; |
458 $interim_login = isset($_REQUEST['interim-login']); |
566 $interim_login = isset($_REQUEST['interim-login']); |
|
567 $customize_login = isset( $_REQUEST['customize-login'] ); |
|
568 if ( $customize_login ) |
|
569 wp_enqueue_script( 'customize-base' ); |
459 |
570 |
460 // If the user wants ssl but the session is not ssl, force a secure cookie. |
571 // If the user wants ssl but the session is not ssl, force a secure cookie. |
461 if ( !empty($_POST['log']) && !force_ssl_admin() ) { |
572 if ( !empty($_POST['log']) && !force_ssl_admin() ) { |
462 $user_name = sanitize_user($_POST['log']); |
573 $user_name = sanitize_user($_POST['log']); |
463 if ( $user = get_userdatabylogin($user_name) ) { |
574 if ( $user = get_user_by('login', $user_name) ) { |
464 if ( get_user_option('use_ssl', $user->ID) ) { |
575 if ( get_user_option('use_ssl', $user->ID) ) { |
465 $secure_cookie = true; |
576 $secure_cookie = true; |
466 force_ssl_admin(true); |
577 force_ssl_admin(true); |
467 } |
578 } |
468 } |
579 } |
475 $redirect_to = preg_replace('|^http://|', 'https://', $redirect_to); |
586 $redirect_to = preg_replace('|^http://|', 'https://', $redirect_to); |
476 } else { |
587 } else { |
477 $redirect_to = admin_url(); |
588 $redirect_to = admin_url(); |
478 } |
589 } |
479 |
590 |
|
591 $reauth = empty($_REQUEST['reauth']) ? false : true; |
|
592 |
|
593 // 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 |
|
594 // 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 |
|
595 // the admin via http or https. |
480 if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) ) |
596 if ( !$secure_cookie && is_ssl() && force_ssl_login() && !force_ssl_admin() && ( 0 !== strpos($redirect_to, 'https') ) && ( 0 === strpos($redirect_to, 'http') ) ) |
481 $secure_cookie = false; |
597 $secure_cookie = false; |
482 |
598 |
483 $user = wp_signon('', $secure_cookie); |
599 $user = wp_signon('', $secure_cookie); |
484 |
600 |
485 $redirect_to = apply_filters('login_redirect', $redirect_to, isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '', $user); |
601 $redirect_to = apply_filters('login_redirect', $redirect_to, isset( $_REQUEST['redirect_to'] ) ? $_REQUEST['redirect_to'] : '', $user); |
486 |
602 |
487 if ( !is_wp_error($user) ) { |
603 if ( !is_wp_error($user) && !$reauth ) { |
488 if ( $interim_login ) { |
604 if ( $interim_login ) { |
489 $message = '<p class="message">' . __('You have logged in successfully.') . '</p>'; |
605 $message = '<p class="message">' . __('You have logged in successfully.') . '</p>'; |
490 login_header( '', $message ); ?> |
606 login_header( '', $message ); ?> |
|
607 |
|
608 <?php if ( ! $customize_login ) : ?> |
491 <script type="text/javascript">setTimeout( function(){window.close()}, 8000);</script> |
609 <script type="text/javascript">setTimeout( function(){window.close()}, 8000);</script> |
492 <p class="alignright"> |
610 <p class="alignright"> |
493 <input type="button" class="button-primary" value="<?php esc_attr_e('Close'); ?>" onclick="window.close()" /></p> |
611 <input type="button" class="button-primary" value="<?php esc_attr_e('Close'); ?>" onclick="window.close()" /></p> |
494 </div></body></html> |
612 <?php endif; ?> |
|
613 </div> |
|
614 <?php do_action( 'login_footer' ); ?> |
|
615 <?php if ( $customize_login ) : ?> |
|
616 <script type="text/javascript">setTimeout( function(){ new wp.customize.Messenger({ url: '<?php echo wp_customize_url(); ?>', channel: 'login' }).send('login') }, 1000 );</script> |
|
617 <?php endif; ?> |
|
618 </body></html> |
495 <?php exit; |
619 <?php exit; |
496 } |
620 } |
497 // If the user can't edit posts, send them to their profile. |
621 |
498 if ( !$user->has_cap('edit_posts') && ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) ) |
622 if ( ( empty( $redirect_to ) || $redirect_to == 'wp-admin/' || $redirect_to == admin_url() ) ) { |
499 $redirect_to = admin_url('profile.php'); |
623 // 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. |
|
624 if ( is_multisite() && !get_active_blog_for_user($user->ID) && !is_super_admin( $user->ID ) ) |
|
625 $redirect_to = user_admin_url(); |
|
626 elseif ( is_multisite() && !$user->has_cap('read') ) |
|
627 $redirect_to = get_dashboard_url( $user->ID ); |
|
628 elseif ( !$user->has_cap('edit_posts') ) |
|
629 $redirect_to = admin_url('profile.php'); |
|
630 } |
500 wp_safe_redirect($redirect_to); |
631 wp_safe_redirect($redirect_to); |
501 exit(); |
632 exit(); |
502 } |
633 } |
503 |
634 |
504 $errors = $user; |
635 $errors = $user; |
505 // Clear errors if loggedout is set. |
636 // Clear errors if loggedout is set. |
506 if ( !empty($_GET['loggedout']) ) |
637 if ( !empty($_GET['loggedout']) || $reauth ) |
507 $errors = new WP_Error(); |
638 $errors = new WP_Error(); |
508 |
639 |
509 // If cookies are disabled we can't log in even with a valid user+pass |
640 // If cookies are disabled we can't log in even with a valid user+pass |
510 if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) ) |
641 if ( isset($_POST['testcookie']) && empty($_COOKIE[TEST_COOKIE]) ) |
511 $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.")); |
642 $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.")); |
512 |
643 |
513 // Some parts of this script use the main login form to display a message |
644 // Some parts of this script use the main login form to display a message |
514 if ( isset($_GET['loggedout']) && TRUE == $_GET['loggedout'] ) |
645 if ( isset($_GET['loggedout']) && true == $_GET['loggedout'] ) |
515 $errors->add('loggedout', __('You are now logged out.'), 'message'); |
646 $errors->add('loggedout', __('You are now logged out.'), 'message'); |
516 elseif ( isset($_GET['registration']) && 'disabled' == $_GET['registration'] ) |
647 elseif ( isset($_GET['registration']) && 'disabled' == $_GET['registration'] ) |
517 $errors->add('registerdisabled', __('User registration is currently not allowed.')); |
648 $errors->add('registerdisabled', __('User registration is currently not allowed.')); |
518 elseif ( isset($_GET['checkemail']) && 'confirm' == $_GET['checkemail'] ) |
649 elseif ( isset($_GET['checkemail']) && 'confirm' == $_GET['checkemail'] ) |
519 $errors->add('confirm', __('Check your e-mail for the confirmation link.'), 'message'); |
650 $errors->add('confirm', __('Check your e-mail for the confirmation link.'), 'message'); |
521 $errors->add('newpass', __('Check your e-mail for your new password.'), 'message'); |
652 $errors->add('newpass', __('Check your e-mail for your new password.'), 'message'); |
522 elseif ( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] ) |
653 elseif ( isset($_GET['checkemail']) && 'registered' == $_GET['checkemail'] ) |
523 $errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message'); |
654 $errors->add('registered', __('Registration complete. Please check your e-mail.'), 'message'); |
524 elseif ( $interim_login ) |
655 elseif ( $interim_login ) |
525 $errors->add('expired', __('Your session has expired. Please log-in again.'), 'message'); |
656 $errors->add('expired', __('Your session has expired. Please log-in again.'), 'message'); |
|
657 elseif ( strpos( $redirect_to, 'about.php?updated' ) ) |
|
658 $errors->add('updated', __( '<strong>You have successfully updated WordPress!</strong> Please log back in to experience the awesomeness.' ), 'message' ); |
|
659 |
|
660 // Clear any stale cookies. |
|
661 if ( $reauth ) |
|
662 wp_clear_auth_cookie(); |
526 |
663 |
527 login_header(__('Log In'), '', $errors); |
664 login_header(__('Log In'), '', $errors); |
528 |
665 |
529 if ( isset($_POST['log']) ) |
666 if ( isset($_POST['log']) ) |
530 $user_login = ( 'incorrect_password' == $errors->get_error_code() || 'empty_password' == $errors->get_error_code() ) ? esc_attr(stripslashes($_POST['log'])) : ''; |
667 $user_login = ( 'incorrect_password' == $errors->get_error_code() || 'empty_password' == $errors->get_error_code() ) ? esc_attr(stripslashes($_POST['log'])) : ''; |
|
668 $rememberme = ! empty( $_POST['rememberme'] ); |
531 ?> |
669 ?> |
532 |
670 |
533 <?php if ( !isset($_GET['checkemail']) || !in_array( $_GET['checkemail'], array('confirm', 'newpass') ) ) : ?> |
671 <form name="loginform" id="loginform" action="<?php echo esc_url( site_url( 'wp-login.php', 'login_post' ) ); ?>" method="post"> |
534 <form name="loginform" id="loginform" action="<?php echo site_url('wp-login.php', 'login_post') ?>" method="post"> |
|
535 <p> |
672 <p> |
536 <label><?php _e('Username') ?><br /> |
673 <label for="user_login"><?php _e('Username') ?><br /> |
537 <input type="text" name="log" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" /></label> |
674 <input type="text" name="log" id="user_login" class="input" value="<?php echo esc_attr($user_login); ?>" size="20" tabindex="10" /></label> |
538 </p> |
675 </p> |
539 <p> |
676 <p> |
540 <label><?php _e('Password') ?><br /> |
677 <label for="user_pass"><?php _e('Password') ?><br /> |
541 <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20" /></label> |
678 <input type="password" name="pwd" id="user_pass" class="input" value="" size="20" tabindex="20" /></label> |
542 </p> |
679 </p> |
543 <?php do_action('login_form'); ?> |
680 <?php do_action('login_form'); ?> |
544 <p class="forgetmenot"><label><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90" /> <?php esc_attr_e('Remember Me'); ?></label></p> |
681 <p class="forgetmenot"><label for="rememberme"><input name="rememberme" type="checkbox" id="rememberme" value="forever" tabindex="90"<?php checked( $rememberme ); ?> /> <?php esc_attr_e('Remember Me'); ?></label></p> |
545 <p class="submit"> |
682 <p class="submit"> |
546 <input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Log In'); ?>" tabindex="100" /> |
683 <input type="submit" name="wp-submit" id="wp-submit" class="button-primary" value="<?php esc_attr_e('Log In'); ?>" tabindex="100" /> |
547 <?php if ( $interim_login ) { ?> |
684 <?php if ( $interim_login ) { ?> |
548 <input type="hidden" name="interim-login" value="1" /> |
685 <input type="hidden" name="interim-login" value="1" /> |
549 <?php } else { ?> |
686 <?php } else { ?> |
550 <input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" /> |
687 <input type="hidden" name="redirect_to" value="<?php echo esc_attr($redirect_to); ?>" /> |
551 <?php } ?> |
688 <?php } ?> |
|
689 <?php if ( $customize_login ) : ?> |
|
690 <input type="hidden" name="customize-login" value="1" /> |
|
691 <?php endif; ?> |
552 <input type="hidden" name="testcookie" value="1" /> |
692 <input type="hidden" name="testcookie" value="1" /> |
553 </p> |
693 </p> |
554 </form> |
694 </form> |
555 <?php endif; ?> |
|
556 |
695 |
557 <?php if ( !$interim_login ) { ?> |
696 <?php if ( !$interim_login ) { ?> |
558 <p id="nav"> |
697 <p id="nav"> |
559 <?php if ( isset($_GET['checkemail']) && in_array( $_GET['checkemail'], array('confirm', 'newpass') ) ) : ?> |
698 <?php if ( isset($_GET['checkemail']) && in_array( $_GET['checkemail'], array('confirm', 'newpass') ) ) : ?> |
560 <?php elseif (get_option('users_can_register')) : ?> |
699 <?php elseif ( get_option('users_can_register') ) : ?> |
561 <a href="<?php echo site_url('wp-login.php?action=register', 'login') ?>"><?php _e('Register') ?></a> | |
700 <a href="<?php echo esc_url( site_url( 'wp-login.php?action=register', 'login' ) ); ?>"><?php _e( 'Register' ); ?></a> | |
562 <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> |
701 <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>" title="<?php esc_attr_e( 'Password Lost and Found' ); ?>"><?php _e( 'Lost your password?' ); ?></a> |
563 <?php else : ?> |
702 <?php else : ?> |
564 <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> |
703 <a href="<?php echo esc_url( wp_lostpassword_url() ); ?>" title="<?php esc_attr_e( 'Password Lost and Found' ); ?>"><?php _e( 'Lost your password?' ); ?></a> |
565 <?php endif; ?> |
704 <?php endif; ?> |
566 </p> |
705 </p> |
567 |
|
568 <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> |
|
569 <?php } ?> |
706 <?php } ?> |
570 </div> |
|
571 |
707 |
572 <script type="text/javascript"> |
708 <script type="text/javascript"> |
|
709 function wp_attempt_focus(){ |
|
710 setTimeout( function(){ try{ |
573 <?php if ( $user_login || $interim_login ) { ?> |
711 <?php if ( $user_login || $interim_login ) { ?> |
574 setTimeout( function(){ try{ |
|
575 d = document.getElementById('user_pass'); |
712 d = document.getElementById('user_pass'); |
576 d.value = ''; |
713 d.value = ''; |
|
714 <?php } else { ?> |
|
715 d = document.getElementById('user_login'); |
|
716 <?php if ( 'invalid_username' == $errors->get_error_code() ) { ?> |
|
717 if( d.value != '' ) |
|
718 d.value = ''; |
|
719 <?php |
|
720 } |
|
721 }?> |
577 d.focus(); |
722 d.focus(); |
|
723 d.select(); |
578 } catch(e){} |
724 } catch(e){} |
579 }, 200); |
725 }, 200); |
580 <?php } else { ?> |
726 } |
581 try{document.getElementById('user_login').focus();}catch(e){} |
727 |
|
728 <?php if ( !$error ) { ?> |
|
729 wp_attempt_focus(); |
582 <?php } ?> |
730 <?php } ?> |
|
731 if(typeof wpOnload=='function')wpOnload(); |
583 </script> |
732 </script> |
584 </body> |
733 |
585 </html> |
|
586 <?php |
734 <?php |
587 |
735 login_footer(); |
588 break; |
736 break; |
589 } // end action switch |
737 } // end action switch |
590 ?> |
|