Foros del Web » Programando para Internet » PHP »

PHP y consulta con INFONAVIT

Estas en el tema de PHP y consulta con INFONAVIT en el foro de PHP en Foros del Web. Buen dia. Tengo el siguiente problema en mi trabajo, aun no he encontrado como solucionarlo. Un sistema tiene que tomar datos del infonavit para ahorrarle ...
  #1 (permalink)  
Antiguo 09/02/2004, 22:23
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
PHP y consulta con INFONAVIT

Buen dia. Tengo el siguiente problema en mi trabajo, aun no he encontrado como solucionarlo. Un sistema tiene que tomar datos del infonavit para ahorrarle al usuario la tarea de entrar a la página web de infonavit.com y obtener la información manualmente.
En cierta parte de infonavit.com cualquier persona puede entrar y acceder a sus datos por medio de un formulario HTML con un solo campo que dice algo asi:
<form name="form2" method="post" action="SctaVivLibre">
<strong>NSS:</strong>
<input type="text" name="nss" size="11" maxlength="11">&nbsp;
<input type="submit" name="Submit" value="Enviar">
</form>
El usuario teclea el NSS (número de seguro social) y recibe como respuesta el nombre de la persona con ese número de seguro social, y algunos datos mas. Lo que necesito es hacer ese proceso automáticamente, y el html que me regresa guardarlo en una variable, algo así como funciona show_source.

Pueden ver el formulario original en:
http://www.infonavit.gob.mx/servlet/SctaVivLibre

Lo que necesito es el html que me regresa ese script cuando envio un número de seguro social.

ideas? mil gracias de antemano
  #2 (permalink)  
Antiguo 09/02/2004, 22:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pues lo puedes hacer desde PHP "abriendo" la página sobre una variable. Para eso puedes usar funciones de fopen() o bien simplemente file() y concatenar el array que te devuelve en un string (cadena) con implode().

Código PHP:
<?
$nss
="el nº que quieras buscar ...";
$html_Externo=implode('',file("http://www.infonavit.gob.mx/servlet/SctaVivLibre?nss=$nss"));

// A partir de aquí ya tienes en tu variable $html_Externo esa página .. toca la parte del filtrado si corresponde ...
?>
Una vez en tu variable todo el HTML de esa página ya será cosa de que si lo requieres "parsees" esa página y localices las secciones del código /contenido que te interesen. Para eso tendrás que usar lo más probable expresiones regulares para indentificar el "patron" de por donde andan los datos que buscas en ese código HTML completo que obtienes.

El hecho de que puedas abrir una página externa en PHP .. depende de la configuración de los "wrappers" de tu php ... (te lo menciono por si te dá algún error sobre el tema).

A su vez .. en el ejemplo le pasamos el parámetro "nss" (variable) a dicho CGI (no sé que lenguaje será .. ). Esperemos que no filtre por Método . .por que si bien en tu formulario has usado POST (o usas POST habitualmente y te funciona) .. en el link que hemos hecho para el file() .. está usando GET (y directamente no se puede definir otro método .. habria que entrar a simular la conexión HTTP por POST usando sockets() en caso de que te diera problemas en ese punto).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 09/02/2004 a las 22:38
  #3 (permalink)  
Antiguo 09/02/2004, 22:46
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
mil gracias cluster, oportuno tu comentario, y relamente esa era y es mi preocupación, como simular el método POST. Debo confesar que al final de tu comentario me hablaste en chino con lo de los sockets, una web que me recomiendes para leer algo al respecto?
Por último, este comentario debería ponerlo en el foro de JS pero ya estoy aqui :P... tendrás idea de si es posible mandar llamar el html o alguno de sus elementos, de un frame desde otro frame y guardarlo en una cadena??
  #4 (permalink)  
Antiguo 09/02/2004, 22:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm bueno .. yo probaría así tal cual (por GET) .. No todos los lenguajes "filtran" por método o están las aplicaciones "preparadas" para filtrar por método ...

Pero ya que preguntas como similar una conexión por sockets bajo el protocolo HTTP .. revisa este mensaje:

http://www.forosdelweb.com/showthrea...hreadid=130290

Un saludo,

PD: Las preguntas sobre javacript .. mejor usa el foro adecuado (recueda que el hecho de "saber" PHP no es requisito también saber javascript .. pese que muchos usuarios de este foro también sepan de javascript ..)
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 09/02/2004, 23:03
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
la verdad no pensé que funcionaría, pero funcionó, ya lo demás no será difícil ya teniendo el html en ese arreglo. Gracias de nuevo!... saludos
  #6 (permalink)  
Antiguo 09/02/2004, 23:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Aclaración ..

file() te devuelve un arreglo (array) .. pero si usas el implode() como el ejemplo que puse lo estás convirtiendo (el arreglo) en un string (cadena).

Podrías si quieres tomar esa página .html externa con file() sólo ..y .. así teniendo en cuenta que cada elemento de ese array será una línea (separada por salto de línea) de esa página HTML resultante .. tal vez por ahí te resulte más facil identificar en que nº de fila del arreglo cae el dato(s) que buscas o deseas obtener.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 09:46.