Autor Tema: php enviar url y recoger resultado get  (Leído 9161 veces)

0 Usuarios y 1 Visitante están viendo este tema.

kanzer

  • no me han domesticado aun!!
  • ***
  • Mensajes: 396
  • Liked: 1
  • guacala que rico :p
php enviar url y recoger resultado get
« : enero 17, 2008, 01:02:37 am »
bueno no tengo ni idea de como se hace, pero quiero hacer esto en php

tengo esto:

Código: php [Seleccionar]
$link = $_POST["link"];

que es una variable que recibe una url

bueno supongamos que la url que recibe es http://s195.photobucket.com/albums/z81/

si ustedes se dan cuenta y copian y pegan ese link en la barra de direcciones es redirigida a otra de ese mismo dominio, tal vez porque no exista, pero eso no es mi objetivo, a lo que voy es que quiero que php envie esa url, como si la pegaramos en la barra de direcciones y le dieramos enter y me regrese el resultado final que en este ejemplo es http://s195.photobucket.com/ y luego guardar esta ultima url en otra variable como

Código: php [Seleccionar]
$link = "http://s195.photobucket.com/";


no se como se hace eso desde enviar la url etc.. me imagino que es con get pero no tengo idea

de antemano gracias por su valiosa ayuda

Grekz

  • Mensajes: 9
  • Liked: 0
  • ...
Re: php enviar url y recoger resultado get
« Respuesta #1 : enero 17, 2008, 04:04:36 am »
Para enviar de tu pagina al link es colocando <?php header("Location:$_POST[link]); ?> al inicio de tu pagina, la otra parte de guardar el url donde fuiste redireccionado, es la que no se.  ;D

Espero y te sirva, o tal vez ya lo sabías :P.

Saludos.

kanzer

  • no me han domesticado aun!!
  • ***
  • Mensajes: 396
  • Liked: 1
  • guacala que rico :p
Re: php enviar url y recoger resultado get
« Respuesta #2 : enero 17, 2008, 09:48:58 am »
de hecho aca otra url de un ejemplo mas real

Cita
http://es.youtube.com/watch/v/LUmttENypK8

si la pegas en el navegador y das enter, te genera otra url distinta esa es la que quiero que obtenga, a partir de los urls que le de

gracias

universalsac

  • *
  • Mensajes: 28
  • Liked: 0
  • Universal SAC
Re: php enviar url y recoger resultado get
« Respuesta #3 : enero 17, 2008, 11:38:25 am »
Sí se puede pero es un desmadre... para realizar ese tipo de redirecciones (la que hace youtube, por ejemplo) se hacen mediante la cabecera Location (http) e informando al cliente que debe ir a ese lugar (302 Found, por ejemplo). Lo que tendrias que hacer entonces, es analizar la respuesta del servidor web (precisamente, las cabeceras http) y, en dado caso que se encuentre un mensaje de redirección y la cabecera Location, pues repites el proceso y haces una petición a la nueva dirección... y se repite tantas veces como sea necesario.

Para ello, tienes 2 opciones (solo conozco esas 2 con php) que son:
1.-Hacer todo el proceso en un bucle, utilizando sockets y realizando las respuestas.
2.-Lo mismo pero con curl.

Un ejemplo muy rápido, solo para que te des una idea (si hay errores no preciones, jaja):
Código: [Seleccionar]
<?php
if(isset($_GET['url']) && $_GET['url']!=NULL){
   $url = $_GET['url']; //si vas a filtrar la variable, este es el momento

//el gran bucle
while(1==1){

   $descriptor = fsockopen($url, 80);
   fwrite("GET $url HTTP/1.0\r\n\r\n", $descriptor);
   while(!feof($descriptor)){
      $respuesta.=fgets($descriptor);
   }
   fclose($descriptor);
   
   //todo lo anterior, fue la petición y almacenamiento de la respuesta
   //ahora tenemos que revizar la respuesta

   for($e=0,$espacio=0;$respuesta[$e]!='\r';$e++){
      if($espacio==1){
         $digito=$respuesta[$e];
         break;
      }
      if($respuesta[$e]==' '){
         $espacio=1;
      }
   }

   //$mensaje contiene el primer byte precedido por un espacio en blanco de la primer linea de la repuesta http. Lo que es igual (en un uso correcto de http) a el primer número del código de respuesta.

   if($digito==3){
      echo 'No sirve: '.$url;
      $posicion = strpos($respuesta,"Location: ");
      $posicion+=10;
      while($respuesta[$posicion]!='\r'){
         $url .= $respuesta[$posicion++];
   }else{
      echo 'Definitiva: '.$url;
      break; //o exit o return...
   }
}
}
?>

Ahí está, hecho en caliente. Asi que ni empiezan a dar lata si tiene errores. Ese es solo un ejemplo, no lo probé pero avisas como si funcionó. También puedes probar con curl (sí, en php).
Saludos.
« Última Modificación: enero 17, 2008, 11:41:56 am por universalsac »
~UNIVERSAL[HACK]