Foros del Web » Programando para Internet » PHP »

Capturar datos

Estas en el tema de Capturar datos en el foro de PHP en Foros del Web. Hola. A ver si me podéis echar una mano. Tengo un formulario que envía unos datos por get a una página que está en otro ...
  #1 (permalink)  
Antiguo 14/12/2005, 06:37
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
Capturar datos

Hola.

A ver si me podéis echar una mano. Tengo un formulario que envía unos datos por get a una página que está en otro servidor y a la que yo no tengo acceso. Esta página devuelve unos resultados según los parámetros que yo le haya enviado. El caso es que el resultado lo devuelve por pantalla. Por ejemplo:

var1=valor1&var2=valor2&var3=valor3

Mi pregunta es: ¿Cómo puedo capturar esos datos para utilizarlos en mi código?

Gracias.
  #2 (permalink)  
Antiguo 14/12/2005, 07:25
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Qué significa que no tenés acceso: no podés verla o no podés editarla. Si sólo es lo segundo, podrías capturar los datos con
Código:
$datos=file_get_contents("http://www.lapagina?lasvariables");
//o file("larutalasvariables") y un bucle
//y luego con expresiones regulares o una serie de explodes o substr capturar la info que necesitás
  #3 (permalink)  
Antiguo 14/12/2005, 09:05
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
¡Perfecto! Mil gracias (era lo segundo, sí).
  #4 (permalink)  
Antiguo 31/01/2006, 09:31
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
Retomo este post porque se me presenta un problema. ¿Qué pasa cuando los datos se envían por post?

Es decir, yo tengo que enviar los datos de un formulario por post a una página que está en un servidor remoto, a la cual yo no tengo acceso. Se supone que esa página me devolverá una cadena con unos resultados, según los datos que yo le envíe. ¿Cómo puedo capturar esa cadena?

Gracias.
  #5 (permalink)  
Antiguo 31/01/2006, 10:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Si tu te conectas por HTTP a un script PHP de un servidor X (remoto) .. lo que generas como "resultado" será una página HTML con esa información ahí (a no ser que generes XML? que podría ser .. en ese caso hablaríamos de crear lo que llaman un "web service" mucho más avanzado, mejor "parseado" de los resultados que obtengas . .seguridad .. etc).

Que datos son los que vas a generar? .. que formato tienen? ..

La solución que te dió: Panino5001 es más o menos lo que debes hacer, pero depende la parte de "usar expresiones regulares" de "como" o que estructura tengan esos datos que generas (por eso es más fácil usar los standares de estructura de datos como es XML en un "web service" para completar el ciclo).

(Piensa y revisa el tema de los "Web service")

Un saludo,
  #6 (permalink)  
Antiguo 31/01/2006, 11:38
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
Gracias por la respuesta, Cluster.

La interpretación de los datos es muy fácil, lo que devuelve esa página es un html con un texto en este formato:

status=1&validate=1&admin=0

El problema va por otro lado: la solución que me dio Panino5001 me venía perfecta cuando yo enviaba los datos por GET, porque podía usar la función file_get_contents y parsear el resultado. Pero ahora yo necesito enviar los datos por POST, así que supongo que sólo los puedo enviar mediante el formulario. Y es aquí donde viene el problema, si llamo a un archivo remoto mediante un formulario, ¿cómo puedo interpretar la salida de ese archivo remoto?
  #7 (permalink)  
Antiguo 31/01/2006, 11:56
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Bueno .. puedes hacer dos cosas:

1) .. tu formulario.html envia datos por POST a tu script PHP de proceso .. captura los datos en POST y genera tu llamada por GET a tu script remoto. (el envio será igualmente por GET hacia tu URL remoto)

script_servidor1.php

$datos=file_get_contents("http://www.lapagina.com/nose.php?lasvariables=".$_POST['variable_formulario']);

2) .. Usar una conexión por sockets usando el protocolo HTTP completo (aquí puedes enviar por POST directamente a tu URL remoto):

http://www.php.net/fsockopen

(Revisa los comentarios de los usuarios de esa función .. tienes muchos ejemplos. Pero, recuerda que PHP sólo te pone a tu disposición "funciones" para abrir o leer de un scoket abierto .. si tu usas el protocolo HTTP .. además de esto deberas conocer dicho protocolo para entender por qué se usan esos "comandos" que en los ejemplos veras).

Ahí puedes ver como enviar/recibir lo que por el "socket" que has abierto envias y recibes.

Tienes algunas classes por ahí para trabajar con el protocolo HTTP más cómodamente:

http://www.phpclasses.org/browse/class/6.html

También te puede ayudar en esto (y con más seguridad) usar: cURL (http://www.php.net/curl)

Un saludo,
  #8 (permalink)  
Antiguo 31/01/2006, 13:27
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 5 meses
Puntos: 20
La opción 1) no podría realizarla puesto que el script remoto sólo recoge los datos por post. Sin embargo, parece que la solución está en los sockets. Es un tema que no he tocado aún, pero echaré un vistazo a ver qué puedo averiguar con las direcciones que me has dado.

Muchas gracias.
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 15:58.