صفحة إعادة توجيه وتخزين معلومات مستخدم OpenID

StackOverflow https://stackoverflow.com/questions/19852150

  •  29-07-2022
  •  | 
  •  

سؤال

أنا أتنفذ حاليا Lightopenid. إنه يعمل جزئيًا ، لكنني أواجه صعوبات في إعادة توجيه المستخدمين مع الحفاظ على بيانات الاعتماد. يحتوي المثال أدناه على تسجيل الدخول إلى المستخدم من خلال Google ثم يُفترض أنه يعيد التوجيه إلى صفحة وصول المستخدم حيث يعرض اسمه. لا يتم عرض أي شيء في userAccess.php. كيف يمكنني إعادة توجيه المستخدم ببيانات اعتماده من OpenID بشكل صحيح

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;

?>
هل كانت مفيدة؟

المحلول

اكتب هذا في userAccess.php

<?php
  session_start();
  echo 'User is: ' . $_SESSION['admin']['fname'] . ' ' . $_SESSION['admin']['lname'];
?>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top