<?php 
 
require_once "common.php"; 
session_start(); 
 
function getOpenIDURL() { 
    // Render a default page if we got a submission without an openid 
    // value. 
    if (empty($_GET['openid_identifier'])) { 
        $error = "Expected an OpenID URL."; 
        include 'index.php'; 
        exit(0); 
    } 
 
    return $_GET['openid_identifier']; 
} 
 
function run() { 
    $openid = getOpenIDURL(); 
    $consumer = getConsumer(); 
 
    // Begin the OpenID authentication process. 
    $auth_request = $consumer->begin($openid); 
 
    // No auth request means we can't begin OpenID. 
    if (!$auth_request) { 
        displayError("Authentication error; not a valid OpenID."); 
    } 
 
    $sreg_request = Auth_OpenID_SRegRequest::build( 
                                     // Required 
                                     array('nickname'), 
                                     // Optional 
                                     array('fullname', 'email')); 
 
    if ($sreg_request) { 
        $auth_request->addExtension($sreg_request); 
    } 
 
    $policy_uris = null; 
    if (isset($_GET['policies'])) { 
        $policy_uris = $_GET['policies']; 
    } 
 
    $pape_request = new Auth_OpenID_PAPE_Request($policy_uris); 
    if ($pape_request) { 
        $auth_request->addExtension($pape_request); 
    } 
 
    // Redirect the user to the OpenID server for authentication. 
    // Store the token for this authentication so we can verify the 
    // response. 
 
    // For OpenID 1, send a redirect.  For OpenID 2, use a Javascript 
    // form to send a POST request to the server. 
    if ($auth_request->shouldSendRedirect()) { 
        $redirect_url = $auth_request->redirectURL(getTrustRoot(), 
                                                   getReturnTo()); 
 
        // If the redirect URL can't be built, display an error 
        // message. 
        if (Auth_OpenID::isFailure($redirect_url)) { 
            displayError("Could not redirect to server: " . $redirect_url->message); 
        } else { 
            // Send redirect. 
            header("Location: ".$redirect_url); 
        } 
    } else { 
        // Generate form markup and render it. 
        $form_id = 'openid_message'; 
        $form_html = $auth_request->htmlMarkup(getTrustRoot(), getReturnTo(), 
                                               false, array('id' => $form_id)); 
 
        // Display an error if the form markup couldn't be generated; 
        // otherwise, render the HTML. 
        if (Auth_OpenID::isFailure($form_html)) { 
            displayError("Could not redirect to server: " . $form_html->message); 
        } else { 
            print $form_html; 
        } 
    } 
} 
 
run(); 
 
?>
 
 |