PHP: Extrair usuário e senha de uma URL

É possível passar o usuário e senha de um sistema PHP diretamente pela URL, no formato:

https://usuario:senha@www.exemplo.com

Porém, há algumas bibliotecas (como a libcurl) que não aceitam receber usuário e senha pelo endereço. É preciso separá-los.

Seguem duas funções que fazem essa separação, retornando os trechos distintos da URL, são elas:

  • extrair_User_Pass que retorna “usuario:senha”
  • extrair_URL que retorna “https://www.exemplo.com”
function extrair_User_Pass($URL)
{
    // Inverte a string, pega tudo entre o primeiro
    // '@' e as '//' e joga no Array "$arr1"
    preg_match("'@.*\b//'",strrev($URL),$arr1);

    // Converte a String em "$arr1[0]" em um array,
    // inverte sua ordem e armazena em "$arr1"
    $arr1 = array_reverse(str_split($arr1[0]));

    // Retira o '@' e as '//'
    array_shift($arr1);
    array_shift($arr1);
    array_pop($arr1);

    return implode($arr1);
}

function extrair_URL($URL)
{
    return preg_replace("/".extrair_User_Pass($URL)."@/","",$URL);
}
This entry was posted in PHP and tagged , , , . Bookmark the permalink.