2016-09-18 111 views
0

otpauth从字符串中获取所需的数据[email protected]秘密= MYSECRETCODE &发行人= Dropbox的我怎么能使用PHP

otpauth://totp/[email protected] ?秘密= MYSECRETCODE

otpauth://totp/github.com/MyUsername发行人= GitHub的&秘密= MySecret

我所需要的密码,电子邮件,发行人,标签中的变量。我用爆炸编码,它不能第三个。有没有简单的方法来获取使用正则表达式的信息?

$data = $request['code']; 
    $remove_rules = substr($data, 15);  

    $que_exp = explode('?',$remove_rules); 

    if(array_key_exists(1,$que_exp)) 
    { 
    if (filter_var($que_exp[0], FILTER_VALIDATE_EMAIL)) { 
     $email = $que_exp[0]; 
    } 
    } 

    $secret_exp = explode('&',$que_exp[1]); 
    $secret = substr($secret_exp[0], strpos($secret_exp[0], "=") + 1);  

    if(array_key_exists(1,$secret_exp)) 
    { 
    $issuer = substr($secret_exp[1], strpos($secret_exp[1], "=") + 1); 
    } 

    $label_email = explode(':',$que_exp[0]); 

    if (!filter_var($label_email[0], FILTER_VALIDATE_EMAIL)) { 
     if (!filter_var($label_email[1], FILTER_VALIDATE_EMAIL)) { 
      return 'data error'; 
     } 
     $email = $label_email[1]; 
     $label = $label_email[0]; 
    } 
    else 
        $email = $label_email[0]; 

    if(empty($issuer)) { 
     if(empty($label)) 
       $issuer = "Account"; 
      else 
     $issuer = $label; 
     } 
+0

我不认为我明白你在做什么。 $ _REQUEST ['secret']应该有你的变量......也许你需要先看看parse_url函数?例如;的var_dump(parse_url($网址)); –

+0

我正在使用Laravel。 $ _REQUEST ['secret']包含值如 otpauth:// totp/Dropbox:[email protected]?secret = MYSECRETCODE&issuer = Dropbox –

回答