2012-04-22 17 views
5

La siguiente url de redirección se convierte en http% 3A% 2F% 2F en lugar de http: //. ¿Cómo puedo evitar esto?http: // Se convierte en http% 3A% 2F% 2F en CodeIgniter

Gracias de antemano.

$params = array(
      'client_id' => $client_id, 
      'redirect_uri' => site_url('welcome/google_connect_redirect/'), 
      'state' => $_SESSION['state'], 
      'approval_prompt' => 'force', 
      'scope' => 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email', 
      'response_type' => 'code' 
     ); 
     $url = "https://accounts.google.com/o/oauth2/auth?".http_build_query($params); 
     // send to google 
     redirect($url); 

URL se convierte así.

https://accounts.google.com/o/oauth2/auth?client_id=871111192098.apps. 
googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8888%2Fmyappname 
%2Findex.php%2Fwelcome%2Fgoogle_connect_redirect&state=f0babsomeletterscb5b48753358c 
3b9&approval_prompt=force&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2F 
userinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email& 
response_type=code    
+0

No creo que afecte la redirección de la URL. – hjpotter92

Respuesta

2

Cuando se pone cadenas con caracteres especiales en la URL, que serán codificados, puede utilizar urldecode

0

El punto de http_build_query() es que urlencode() s cada uno de los valores de la matriz para que antes de unirse a ellos en un formato querystring. Este es el comportamiento preferido.

+0

Exactamente. De hecho, es algo bueno que esté haciendo esto. OP, ¿lo has probado? ¿Hay algún problema? –

1

La cadena de consulta está codificada porque hay algunos caracteres especiales que tienen un significado especial en una URL.

De Wikipedia:

Algunos caracteres no pueden ser parte de una dirección URL (por ejemplo, el espacio) y algunos otros caracteres tienen un significado especial en una URL: por ejemplo, el carácter # puede ser utilizado para especificar adicionalmente una subsección (o fragmento ) de un documento; el carácter = se usa para separar un nombre de un valor. Es posible que sea necesario convertir una cadena de consulta para cumplir estas restricciones . Esto se puede hacer usando un esquema conocido como codificación URL.

Cuestiones relacionadas