Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/08/2009, 12:09
Avatar de abimaelrc
abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: [APORTE] file_get_contents(), cURL, HTTP_Request

Continuación de los ejemplos...

Seguir redireccionamientos con file_get_contents()
Nota: El file_get_contents() sigue automáticamente las redirecciones (header("Location: redireccion.php")).
Código PHP:
Ver original
  1. <?php
  2. $url = 'http://www.example.com/redirector.php';
  3. echo file_get_contents($url);
  4. ?>

Seguir redireccionamientos con cURL
Código PHP:
Ver original
  1. <?php
  2. $c = curl_init('http://www.example.com/redirector.php');
  3. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  4. curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
  5. $page = curl_exec($c);
  6. echo $page;
  7. ?>

Seguir redireccionamientos con HTTP_Client
Nota: HTTP_request no sigue las redirecciones, pero el módulo de PEAR HTTP_Client logra lo que queremos
Código PHP:
Ver original
  1. <?php
  2. require_once 'HTTP/Client.php';
  3. $client = new HTTP_Client();
  4. $client->get($url);
  5. $response = $client->currentResponse();
  6. echo $response['body'];
  7. ?>
Puede que si el servidor está en safe_mode te dé un error, para más información de como solventar este problema leer el siguiente aporte http://www.forosdelweb.com/f18/aport...bit-ly-808160/ (por Triby).



Como hemos indicado anteriormente el file_get_contents() sigue automáticamente las redirecciones (header("Location: redireccion.php")). A partir de PHP 5.0.0, file_get_contents() y fopen() nos da unas opciones especificas acerca de como obtener el stream. En PHP 5.1.0 y posteriores, una de esas opciones es max_redirects el número máximo de redirecciones a seguir. Si indicamos el max_redirects a 0 o 1, solo hace una solicitud.

El max_redirects realmente no indica el número de redirecciones deben seguirse, pero el número máximo de solicitudes que deben efectuarse en el momento siguiente a la cadena de redireccionamiento. Es decir, un valor de 1 le dice a PHP que al menos una solicitud debe seguir, y no un redireccionamiento. Un valor de 2 le dice a PHP para que al menos de 2 solicitudes deben seguir y no más de 1 redireccionamiento. (Un valor de 0, sin embargo, se comporta como un valor de 1, PHP hace sólo 1 solicitud.)

No seguir redirecciones con file_get_contents()
Código PHP:
Ver original
  1. <?php
  2. $url = 'http://www.example.com/redirector.php';
  3. $options = array('max_redirects' => 1 );
  4. $context = stream_context_create(array('http' => $options));
  5. echo file_get_contents($url, false, $context);
  6. ?>

No seguir redirecciones con cURL
Nota: Para no seguir las redirecciones no uses CURLOPT_FOLLOWLOCATION
Código PHP:
Ver original
  1. <?php
  2. $c = curl_init('http://www.example.com/redirector.php');
  3. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  4. $page = curl_exec($c);
  5. ?>

No seguir redirecciones con HTTP_Request
Nota: HTTP_Request no sigue redirecciones
Código PHP:
Ver original
  1. <?php
  2. require_once 'HTTP/Request.php';
  3. $r = new HTTP_Request('http://www.example.com/redirector.php');
  4. $r->sendRequest();
  5. echo $r->getResponseBody();
  6. ?>

Limitar a 2 redirecciones con file_get_contents
Código PHP:
Ver original
  1. <?php
  2. $url = 'http://www.example.com/redirector.php';
  3. $options = array('max_redirects' => 3 );
  4. $context = stream_context_create(array('http' => $options));
  5. echo file_get_contents($url, false, $context);

Limitar a 2 redirecciones con cURL
Código PHP:
Ver original
  1. <?php
  2. $c = curl_init('http://www.example.com/redirector.php');
  3. curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
  4. curl_setopt($c, CURLOPT_FOLLOWLOCATION, true);
  5. curl_setopt($c, CURLOPT_MAXREDIRS, 2);
  6. $page = curl_exec($c);

Última edición por abimaelrc; 05/09/2012 a las 14:43