Foros del Web » Programando para Internet » PHP »

Detectar redirección al usar fopen

Estas en el tema de Detectar redirección al usar fopen en el foro de PHP en Foros del Web. Estoy accediendo a distintas páginas con fopen pero necesito detectar cuando estas redireccionan a otra página utilizando por ejemplo "header" en php. Es decir, mi ...
  #1 (permalink)  
Antiguo 09/04/2008, 00:09
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Detectar redirección al usar fopen

Estoy accediendo a distintas páginas con fopen pero necesito detectar cuando estas redireccionan a otra página utilizando por ejemplo "header" en php.

Es decir, mi script utiliza:

Código PHP:
fopen("http://www.dominio.com/pagina.php""r"); 
pero si esta página que estoy intentando leer contiene la siguiente línea:

Código PHP:
header("location: otrapagina.php"); 
Entonces lo que ocurre es que termino leyendo el contenido de otrapagina.php y necesito enterarme de esta situación.

¿Alguien tiene alguna idea de cómo detectar la url de la página que realmente estoy leyendo?

Desde ya muchas gracias y saludos para todos.
  #2 (permalink)  
Antiguo 09/04/2008, 00:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: Detectar redirección al usar fopen

ke buena duda. ¿has intentado hacer la prueba en tu servidor local? quien kita y no sucede algo mal... enserio, quiza no haya alguien con una respuesta verdadera ((menos yo)) pero intento...

deberiamos experimentar!!! antes de seguir dudando...

Última edición por pateketrueke; 09/04/2008 a las 00:27 Razón: sintaxis
  #3 (permalink)  
Antiguo 09/04/2008, 00:42
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
Re: Detectar redirección al usar fopen

Cita:
Iniciado por pateketrueke Ver Mensaje
¿has intentado hacer la prueba en tu servidor local? quien kita y no sucede algo mal... enserio, quiza no haya alguien con una respuesta verdadera ((menos yo)) pero intento...
Acabo de probarlo y lo que sucede es tal cual lo que cuento. Leo perfectamente la página a la que redirecciona pero ni me entero de esta situación.

El tema es que si quiero hacer un seguimiento de los links que aparecen en esta página, si usan urls relativas, al no saber si cambié de carpeta o de dominio no podré construir cada url correctamente.
  #4 (permalink)  
Antiguo 09/04/2008, 02:11
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Re: Detectar redirección al usar fopen

http://es.php.net/manual/en/wrappers.http.php
  #5 (permalink)  
Antiguo 09/04/2008, 03:25
Avatar de Gustavo72  
Fecha de Ingreso: abril-2008
Ubicación: -32.956045,-60.661355
Mensajes: 197
Antigüedad: 16 años
Puntos: 9
De acuerdo Re: Detectar redirección al usar fopen

Cita:
Iniciado por DarkJ Ver Mensaje
http://es.php.net/manual/en/wrappers.http.php
Buenísimo!!!!
Ya está. Lo explico por si alguien está tras lo mismo:

Código PHP:
$url='http://www.example.com/pagina_de_redireccion.php'
$da=fopen($url'r');

$meta_datos=stream_get_meta_data($da);

foreach(
$meta_datos['wrapper_data'] as $respuesta)
{
  if (
substr(strtolower($respuesta), 010) == 'location: ')
  {
    
$url substr($respuesta10);
  }

La función stream_get_meta_data devuelve un array que contiene otro array: wrapper_data. Si uno de sus elementos tiene el valor: "location: nueva_url" significa que la página ha sido redireccionada a esa url.

El script lo que hace es detectar si se ha redireccionado a otra página y cargar la nueva url en $url.

Esto funciona desde PHP 4.3.0 en adelante, para versiones anteriores consultar la página que sita DarkJ.
  #6 (permalink)  
Antiguo 01/06/2013, 14:05
 
Fecha de Ingreso: noviembre-2012
Mensajes: 12
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Re: Detectar redirección al usar fopen

Cita:
Iniciado por Gustavo72 Ver Mensaje
Buenísimo!!!!
Ya está. Lo explico por si alguien está tras lo mismo:

Código PHP:
$url='http://www.example.com/pagina_de_redireccion.php'
$da=fopen($url'r');

$meta_datos=stream_get_meta_data($da);

foreach(
$meta_datos['wrapper_data'] as $respuesta)
{
  if (
substr(strtolower($respuesta), 010) == 'location: ')
  {
    
$url substr($respuesta10);
  }

La función stream_get_meta_data devuelve un array que contiene otro array: wrapper_data. Si uno de sus elementos tiene el valor: "location: nueva_url" significa que la página ha sido redireccionada a esa url.

El script lo que hace es detectar si se ha redireccionado a otra página y cargar la nueva url en $url.

Esto funciona desde PHP 4.3.0 en adelante, para versiones anteriores consultar la página que sita DarkJ.

Muchas gracias me sirvio muchisimo, gracias por subir la epxlicacion para ayudar a otros, ojala todos fueran tan geniales como tu

Última edición por KENEL_17; 01/06/2013 a las 14:16
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 11:55.