2009-12-07 3 views
1

Hé les gars, je suis en utilisant l'authentification identifiant ouvert sur mon site et après l'authentification que je reçois une URL de fournisseurs i.e. OpenID Yahoo et GoogleComment définir les paramètres d'URL dans un tableau?

http://www.mysite.com/openid-login.php? 
openid.identity=https://me.yahoo.com/a/1234567& 
openid.ax.value.nickname=john& 
[email protected]& 


http://www.mysite.com/openid-login.php? 
openid.identity=https://www.google.com/accounts/o8/1234567& 
[email protected]& 
openid.ext1.value.country=IN 

J'ai coupé les urls un peu pour plus de clarté. Je voudrais créer une seule fonction pour les deux qui peuvent définir l'email (si existe), le pseudo (si sort), l'identité (openid ina) dans un tableau et retourner les valeurs. par exemple.

function userdetails(array_get){ 
...... 
...... 
return $userdetails; 
} 
$userdetails =userdetails($_GET); 

$ userdetails [ « surnom »] me donner le surnom si existe et même pour l'e-mail et de l'identité. Merci

Répondre

1

Je ne créait pas cette fonction, ni prendre le crédit pour elle. Cela a été tiré et modifié à partir de la bibliothèque Simple OpenID. Si quelqu'un a un lien, veuillez le poster dans les commentaires car je n'ai pas accès à la source originale.

/** 
* Method to filter through $_GET array for requested user information. 
* Will return an array of trimmed userinfo. 
*/ 
public function filterUserInfo($arr_get) { 
    $valid_ax_types = array('nickname' => 1, 'email' => 1, 'fullname' => 1, 'dob' => 1, 'gender' => 1, 'postcode' => 1, 'country' => 1, 'language' => 1, 'timezone' => 1, 'firstname' => 1, 'lastname' => 1); 
    $userinfo = array(); 
    foreach ($arr_get as $key => $value) { 
     // trim the key 
     $trimmed_key = substr($key, strrpos($key, "_") + 1); 

     // check for valid openid_ext1 values 
     if (stristr($key, 'openid_ext1_value') && isset($value[1])) { 
      $userinfo[$trimmed_key] = $value; 
     } 

     // check for valid openid_ax values 
     if (stristr($key, 'openid_ax_value') && isset($value[1])) { 
      $userinfo[$trimmed_key] = $value; 
     } 

     // check for valid sreg_ values 
     else if (stristr($key, 'sreg_') && array_key_exists($trimmed_key, $arr_ax_types)) { 
      $userinfo[$trimmed_key] = $value; 
     } 
    } 
    return $userinfo; 
} 
+0

Il semble que vous receviez des points au lieu de traits de soulignement. Apportez simplement quelques modifications mineures au code ci-dessus pour modifier ** 'openid_ext1_value' ** et ** 'openid_ax_value' ** –

0

Je pensais en "obtenant une url" que vous vouliez dire réellement une URL. Acceptez la réponse ci-dessous moi. :)

parse_url()
parse_str()

function userdetails($url, $keep = array('email', 'nickname', 'identity')) { 
    $array = parse_str(parse_url($url, PHP_URL_QUERY)); 

    $return = array(); 
    foreach ($keep as $key) { 
     if (isset($array[ $key ])) { 
      $return[ $key ] = $array[$key]; 
     } 
    } 

    return $return; 
} 
Questions connexes