Foros del Web » Programando para Internet » PHP »

Interactuar con página externa

Estas en el tema de Interactuar con página externa en el foro de PHP en Foros del Web. Mi consulta igual es un poco descabellada y no se si se podría hacer. Les cuento: La idea es tener una tabla con los campos: ...
  #1 (permalink)  
Antiguo 04/03/2005, 07:19
Avatar de Keleriano  
Fecha de Ingreso: junio-2002
Ubicación: Granada
Mensajes: 133
Antigüedad: 21 años, 9 meses
Puntos: 0
Interactuar con página externa

Mi consulta igual es un poco descabellada y no se si se podría hacer. Les cuento:

La idea es tener una tabla con los campos:

nº telefono (entero)
disponible (0-1)

y usando esta página: http://www.telefonicaonline.com/no/pub/Wa/no32ini0.htm

Hacer que en cada ejecución compruebe los números no disponibles y en caso de que estén disponibles, hacerlos disponibles en la base de datos.

¿Se podría hacer?
  #2 (permalink)  
Antiguo 04/03/2005, 11:04
Avatar de walo  
Fecha de Ingreso: mayo-2004
Mensajes: 310
Antigüedad: 19 años, 10 meses
Puntos: 0
no way !.....
  #3 (permalink)  
Antiguo 04/03/2005, 11:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Lo que deberías es mandar tus datos directos al script (CGI, Jsp? .. o lo que sea) que gestiona esas variables que veras en ese formulario ...

Vía HTTP por sockets .. conectarte a :
http://www.telefonicaonline.com/no/servlet/no32tejg
(realmente no sé si es ese el "script" que va hacer ese proceso .. debes verificarlo)

y de ahí pasarle los valores de tus datos que tengas en tu BD .. El resultado .. por HTTP retomarlo y procesarlo .. Lo que obtendras es una página HTML con un formato más o menos "fijo" donde en cierta parte estará el dato que buscas .. esa frase de "disponible" o "no disponible" o lo que corresponda ..

Fijate en los ejemplos de:
http://www.php.net/fsockopen

O si puedes usar cURL ... mejor: www.php.net/curl

Todo eso se basa en el uso del protocolo HTTP .. cosa que no es cosa ni tareá de PHP hacerlo .. PHP sólo te pone a tu disposición "funciones" para "abrir" el socket .. y enviar/recibir información de el ...

Un saludo,
  #4 (permalink)  
Antiguo 04/03/2005, 11:25
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 9 meses
Puntos: 0
¿¿Y se puede meter en una variable el contenido de la ejecución de una págian web externa??

Por ejemplo, abrir desde un script de mi servidor la página "http://www.forosfdelweb.com" y meter todo su código html en una variable.

He intentado buscar una función de ese tipo en php.net pero no se me ocurren un buen nombre para encontrarla y encima no sé si también se necesitaría curl para ese aspecto...

Gracias

Última edición por dolarsrg; 04/03/2005 a las 11:31
  #5 (permalink)  
Antiguo 04/03/2005, 11:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues si .. todo el resultado que arroja tu conexión HTTP lo puedes obtener en una variable .. pues lo que debes hacer es "escuchar" ese scoket abierto.

Del ejemplo de php.net .. esta porción del código toma todo lo que devuelva la conexión a ese protocolo:

fwrite($fp, $out);
while (!feof($fp)) {
echo fgets($fp, 128);
}
fclose($fp);

Un saludo,
  #6 (permalink)  
Antiguo 05/03/2005, 03:56
 
Fecha de Ingreso: noviembre-2002
Mensajes: 24
Antigüedad: 21 años, 5 meses
Puntos: 0
Una opción, si puedes usar cURL, sería:
Código PHP:
$telefono='999999999';
ob_start();
$ch=curl_init("http://www.telefonicaonline.com/no/servlet/no32tejg");
curl_setopt($chCURLOPT_HEADER1);
curl_setopt($chCURLOPT_POST1);
curl_setopt($chCURLOPT_POSTFIELDS"NUMTELEF=$telefono");
curl_exec ($ch);
curl_close ($ch);
$head ob_get_contents();
ob_end_clean();
$regex '/Content-Length:\s([0-9].+?)\s/';
if (
preg_match($regex$head$matches))
   {
   
$disponible=(($matches[1] > 500) ? 'NO' 'SI');
   }

   echo 
$disponible
Saludos.
  #7 (permalink)  
Antiguo 05/03/2005, 07:18
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 9 meses
Puntos: 0
Muchas gracias. Ya lo he aplicado y funciona genial!!

Un saludo a todos!!
  #8 (permalink)  
Antiguo 06/03/2005, 03:26
 
Fecha de Ingreso: julio-2003
Mensajes: 209
Antigüedad: 20 años, 9 meses
Puntos: 0
Hola a todos otra vez.

Tengo un problema al cargar en una variable el código de una web que ejecuto en otro servidor con el código que me habéis dado.

Si la web está escrita en PHP y ésta utiliza Include, Require,... no salen más que errores por tener como directorio de trabajo el del servidor desde donde cargo el código y no encontrar los scripts a incluir.

¿¿como podría poner como directorio de trabajo una URL?? Es que con chdir sólo puedo trabajar con directorios locales... Si no se puede, ¿tengo alguna forma de cargar el código de la página remota de forma que se ejecute en su servidor y yo sólo cargue el HTML que recibiría como usuario?

Os dejo aquí la función que estoy usando por si os es de ayuda. ¡¡Muchas gracias!!

Código PHP:
function captura_html($url) {
   
$url_parsed parse_url($url);
   
$host $url_parsed["host"];
   
$port $url_parsed["port"];
   if (
$port==0)
       
$port 80;
   
$path $url_parsed["path"];

   
//Si la URL fuese http://ejemplo.com sin un final "/"
   //Daría un error 400
   
if (empty($path))
   
$path="/";

   
//Redirecciono si la URL resultase erronea
   
if (empty($host)):
   
$host="www.algunsitio.com";
   
$path="/404.shtml";
   endif;

   if (
$url_parsed["query"] != "")
       
$path .= "?".$url_parsed["query"];
   
$out "GET $path HTTP/1.0\r\nHost: $host\r\n\r\n";
   
$fp fsockopen($host$port$errno$errstr30);
   
fwrite($fp$out);
   
$body false;
   
   
$codigo="";
   while (!
feof($fp)) {
   
$codigo .= fgets($fp128);
   }
   
fclose($fp);
   
   
   return 
$codigo;

  #9 (permalink)  
Antiguo 07/03/2005, 04:08
 
Fecha de Ingreso: marzo-2005
Mensajes: 1
Antigüedad: 19 años, 1 mes
Puntos: 0
No entiendo bien a lo que te refieres. Yo he utilizado una funcion parecida en mi web y nunca ha dado problemas en ese sentido.

Yo creo que las paginas se ejecutan completamente en su servidor y solo se devuelve el codigo resultante en HTML.

No se, a ver si alguno de los expertos por aqui tiene alguna idea.

Suerte y un saludo
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




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