SetIdentity($_POST['openid_url']); $openid->SetApprovedURL($_POST['come-back_to']); $openid->SetTrustRoot(get_bloginfo('url')); $openid->SetOptionalFields(array('nickname','fullname','email','dob','gender','postcode','country','language','timezone')); if ( ($server = $openid->GetOpenIDServer()) ) { setcookie('wp_openid_comment_page_'. COOKIEHASH, $_POST['come-back_to'], time()+33100, COOKIEPATH, $_SERVER['server_name']); setcookie('wp_openid_comment_p2_'. COOKIEHASH, $_POST['openid_url'], time()+33100, COOKIEPATH, $_SERVER['server_name']); } else { wp_die( __('Error: I could not create the openid connection. Is the OpenID URL you provided active/valid?') ); } $openid->Redirect(); } } /**** Second part of authentication ****/ function finish_openid_authenticate() { $openid = new SimpleOpenID; if ($_GET['openid_identity']) $openid->SetIdentity($_GET['openid_identity']); else wp_die( __('
Authorisation failed: Please re–check the credentials you entered.
') ); if ( $openid->ValidateWithServer() ) { require_once( ABSPATH . WPINC . '/formatting.php'); require_once( ABSPATH . WPINC . '/pluggable.php'); require_once( ABSPATH . WPINC . '/registration.php'); require_once( ABSPATH . WPINC . '/capabilities.php'); global $wpdb; $this_user = $wpdb->escape( sanitize_user( $openid->OpenID_Standarize($_COOKIE['wp_openid_comment_p2_'.COOKIEHASH]), true ) ); $this_user_id = $wpdb->get_var("SELECT ID FROM $wpdb->users WHERE user_login = '$this_user'"); if ( $this_user_id ) { $user = new WP_User( $this_user_id); if( wp_login( $user->user_login, md5($user->user_pass), true ) ) { wp_setcookie($user->user_login, md5($user->user_pass), true, '', '', true); setcookie('wp_openid_comment_page_'. COOKIEHASH, '', time()-33100, COOKIEPATH, $_SERVER['server_name']); setcookie('wp_openid_comment_p2_'. COOKIEHASH, '', time()-33100, COOKIEPATH, $_SERVER['server_name']); do_action('wp_login', $user->ID); wp_safe_redirect($_GET['openid_return_to']); exit(); } else { wp_die( __('Your OpenID authentication attempt validated, but the WordPress login failed. Please notify the administrator.
') ); } } else { if (get_option('users_can_register')) { $user_options = array( 'user_login' => $this_user, 'user_pass' => substr( md5( uniqid( microtime() ) ), 0, 7), 'user_url' => $_COOKIE['wp_openid_comment_p2_'.COOKIEHASH], 'user_registered' => date('Y-m-d H:i:s'), 'first_name' => '', 'last_name' => '', ); if ($_GET['openid_sreg_email']) $user_options['user_email'] = $_GET['openid_sreg_email']; if ($_GET['openid_sreg_fullname']) $user_options['user_nicename'] = $_GET['openid_sreg_fullname']; if ($_GET['openid_sreg_nickname']) { $user_options['nickname'] = $_GET['openid_sreg_nickname']; $user_options['display_name'] = $_GET['openid_sreg_nickname']; } if ($_GET['openid_sreg_language']) $user_options['description'] = 'Language: '.$_GET['openid_sreg_language'].' '; if ($_GET['openid_sreg_dob']) $user_options['description'] .= 'Birth Date: '.$_GET['openid_sreg_dob'].' '; if ($_GET['openid_sreg_gender']) $user_options['description'] .= 'Gender: '.$_GET['openid_sreg_gender'].' '; if ($_GET['openid_sreg_country']) $user_options['description'] .= 'Country: '.$_GET['openid_sreg_country'].' '; if ($_GET['openid_sreg_postcode']) $user_options['description'] .= 'Postal Code: '.$_GET['openid_sreg_postcode'].' '; if ($_GET['openid_sreg_timezone']) $user_options['description'] .= 'Time Zone: '.$_GET['openid_sreg_timezone'].' '; $user = new WP_User( wp_insert_user($user_options) ); wp_setcookie($user->user_login, md5($user->user_pass), true, '', '', true); setcookie('wp_openid_comment_page_'. COOKIEHASH, '', time()-33100, COOKIEPATH, $_SERVER['server_name']); setcookie('wp_openid_comment_p2_'. COOKIEHASH, '', time()-33100, COOKIEPATH, $_SERVER['server_name']); do_action('wp_login', $user->ID); wp_safe_redirect($_GET['openid_return_to']); exit(); } else { wp_die( __('Your OpenID authentication attempt validated, but this blog has new user registrations disabled. Please notify the administrator.
') ); } } } else if ($openid->IsError() == true) { $error = $openid->GetError(); wp_die( __('OpenID auth problem
Code: {'.$error['code'].'}
Description: {'.$error['description'].'}
OpenID: {'.$identity.'}
') ); } else { wp_die( __('Authorisation failed: Please check the entered credentials and double check the caps locks key.
') ); } } } /**** Part of this function goes in your comments template See the README example****/ function openid_url_input_text() { $user = wp_get_current_user(); if (!$user->id) { printf('Or, enter your OpenID URL: (make sure your browser has cookies turned on)');
printf('
');
printf('');
printf('
Your comments may need to be approved by the moderator before they appear.