Frage

Ich implementiere derzeit Lichtopenid. Es funktioniert teilweise, aber ich habe Schwierigkeiten, Benutzer zu leiten, während ich Anmeldeinformationen behält. Im folgenden Beispiel wird der Benutzer über Google angemeldet und dann angeblich zu einer Benutzerzugriffsseite umgeleitet, auf der er ihren Namen anzeigt. In userAccess.php wird nichts angezeigt. Wie kann ich den Benutzer mit seinen Anmeldeinformationen von OpenID richtig umleiten?

login.php

<?php
# Logging in with Google accounts requires setting special identity, so this example shows how to do it.
session_start();
require 'openid.php';

try {

    $openid = new LightOpenID('http://mydomain.com');                           // akshat - declared an object of class lightopenid.. this is listed in openid.php
    if(!$openid->mode) {

        if(isset($_GET['login'])) {

            $openid->identity = 'https://www.google.com/accounts/o8/site-xrds?hd=mydomain.com'; //this can be changed as you know...      

            $openid->required = array('namePerson/friendly', 'contact/email' , 'contact/country/home', 'namePerson/first', 'pref/language', 'namePerson/last'); // akshat - line added by me from after reading from the net....

            header('Location: ' . $openid->authUrl());    
        }
?>
<script type="text/javascript">
//change to jquery so it is compatible with cross browsers
window.onload=function(){
document.getElementById("lform").submit();
}
</script>
<form name="form" id="lform" action="?login" method="post"> </form>
<?php
    } elseif($openid->mode == 'cancel') {
        echo 'User has canceled authentication for Your Domain !';
    } else {                                                // FETCH USER INFO HERE
                $fname = $openid->ret_fname();              // fetching user first name...
        $lname = $openid->ret_lname();                  // fetching user last name...
        $email = $openid->ret_email();                  // fetching user email...
        $lang = $openid->ret_lang();                    // fetching user language...
                session_start();

                // use it as required. I set them in session !
                $_SESSION['admin']['emailID'] = $email;          //put email id in session.
                $_SESSION['admin']['fname'] = $fname;            //put first name also in session.
                $_SESSION['admin']['lname'] = $lname;            //put last name also in session.

                header("Location: www.example.com/useraccess.php");              // Go back to the calling application !

    }
} catch(ErrorException $e) {
    echo $e->getMessage();
}
?>

userAccess.php

<?php

session_start();

echo 'User is: ' . $fname . ' ' . $lname;

?>
War es hilfreich?

Lösung

Schreiben Sie dies in useraccess.php

<?php
  session_start();
  echo 'User is: ' . $_SESSION['admin']['fname'] . ' ' . $_SESSION['admin']['lname'];
?>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top