Foros del Web » Programando para Internet » PHP »

enviar variables entre programas PHP

Estas en el tema de enviar variables entre programas PHP en el foro de PHP en Foros del Web. Hola. Nesesito una ayudita, pues estoy comenzando a programar en PHP y quede trabado en una duda... El tema es, en mi servidor tengo dos ...
  #1 (permalink)  
Antiguo 15/10/2003, 09:16
Avatar de nublar
(Desactivado)
 
Fecha de Ingreso: octubre-2003
Ubicación: Argentina - BsAs
Mensajes: 321
Antigüedad: 21 años, 1 mes
Puntos: 0
Exclamación enviar variables entre programas PHP

Hola.
Nesesito una ayudita, pues estoy comenzando a programar en PHP y quede trabado en una duda...
El tema es, en mi servidor tengo dos programitas en PHP, lo llamaremos Programa1.php y Programa2.php
- El programa 1 recibe los datos que el usuario colocó en el formulario, los procesa y se los tiene que pasar al Programa2.PHP.
- No sé como pasar informacion del programa1.php al programa2.php ..... snif....
- O sea que no sé como enviar informacion entre dos programas PHP sin depender de la interaccion del usuario en un formulario.

- La única manera de enviar informacion a un programa PHP que conozco es mediante la accion de un usuario en un formulario o en un enlace, pero como verás mi caso va mas alla de eso.
- Si me podés ayudar te estaré eternamente agradecido.

CHristian CAlzada.
www.CNIT.com.ar
  #2 (permalink)  
Antiguo 15/10/2003, 10:28
 
Fecha de Ingreso: agosto-2003
Ubicación: Piura
Mensajes: 238
Antigüedad: 21 años, 3 meses
Puntos: 0
hola...
di he entendido bien creo que ya te has respondido tu mismo
me parece que lo que debes hacer es pasarle las variables a probgrama2.php?var1=$var1&var2=$var2 cuando lo llames... pues lo tiense que llamar de algun modo...
Bueno si no he respondido a lo que pides porfavor aclara mas tu pregunta y si es necesario pon un poquito del codigo....
Saludos
Paco
__________________
Un hombre inteligente, caminando, llega mucho mas rápido que un torpe en coche
  #3 (permalink)  
Antiguo 15/10/2003, 10:33
Avatar de McManaman  
Fecha de Ingreso: agosto-2003
Ubicación: Ecuador - Guayaquil
Mensajes: 119
Antigüedad: 21 años, 3 meses
Puntos: 0
ajap .... y en el programa2.php lo capturas
$_GET["var1"]
__________________
...Hay unos que saben TODO de nada y otros que saben NADA de TODO... think about it
  #4 (permalink)  
Antiguo 15/10/2003, 15:56
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Si te he entendido bien, lo que quieres es que al finalizar la "ejecucion" de programa1.php se "ejecute" programa2.php.

Pues eso lo puedes hacer con una redireccion con header() (www.php.net/header) pasandole por URL los parametros a programa2.php. Algo asi:
Código PHP:
header("Location: programa2.php?var1=$var1&var2=$var2");
exit; 
Esto solo funciona si programa1.php no genera salida al navegador. Si tiene que generar salida por narices, entonces debes usar redireccion con javascript o HTML.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 15/10/2003, 17:05
Avatar de nublar
(Desactivado)
 
Fecha de Ingreso: octubre-2003
Ubicación: Argentina - BsAs
Mensajes: 321
Antigüedad: 21 años, 1 mes
Puntos: 0
Bueno les explico mejor, pero antes gracias por la preocupacion.

- Actualmente cada cliente mío accede a su cuenta de webmail ingresando www.sudominio.com.xx/webmail, de donde se le presenta un formulario para que coloque su nombre de usuario y contraseña, al hacer click en enviar se genera un evento "Post" con las variables $username, $domain y $paswword hacia un programa de perl de administracion de mail´s (que me brinda mi provider en un plan hosting para resellers).

- Lo que yo quiero es que los usuarios accedan a sus cuentas no con este método sino que para chequear sus mail tengan que ir a mi página (www.cnit.com.ar) y desde alli logonearse.

Bueno mi trabajo comienza aca!!

<1º> En mi página hago un "clon" del formulario anterior

<2º> Cambio el "action" del formulario para que en vez de enviar las variables al programa PERL (*.pl) se las envíe a mi modesto programa de php.

<3º>Mi programa toma las variables $username, $domain y $password que le llegaron del usuario.

<3º>Segun el dominio mi programa debe enviar la info hacia una u otra direccion donde esta alojado el programa de mailing en perl.

CONCLUSION: Mi programa recibe los datos que ingresó el usuario, y con esa info decide a donde reenviar los mismos (eso es presisamente lo que no se como hacer).

Segun lo que me posteó Josemi podría usar el método "HEADER" pero no funciona por que el header envia datos tipo método GET y nesecito usar el método POST.

AYUUUUDDDAAAA!!!!!!!
Disculpen lo largo del mensaje, pero quería dejar en claro mi duda.
  #6 (permalink)  
Antiguo 17/10/2003, 06:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Pues para el método POST puedes usar las librerias cURL o sockets directo para "simular" unca conexión de un navegador cualquiera en método POST (sería PHP el que haría de cliente HTTP en este caso) ..

Las librerias cURL están para eso mismo .. ademas que permiten conectarte bajo SSL si fuera necesario de forma "comoda" y enviando tus datos por POST/GET según requieras ..

cURL
http://www.php.net/curl

Si no dispones de las librerias cURL .. Sockets directo:
http://www.php.net/manual/en/function.fsockopen.php

Ahí tienes un ejemplo que usa "GET" .. Sería cosa de que revisases el protocolo HTTP para ver como se usa con POST (creo que simplemente cambiando ese GET por POST .., pero te lo menciono por qué abrir un "socket" implica conocer el protocolo por el que vas a enviar/recibir datos por el .. en este caso el del HTTP. Las librerías cURL ya hacen eso por ti ...)


Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 17/10/2003, 07:30
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Pero con el metodo de Cluster no haces una redireccion (si es que le entendo bien). Simplemente el script seria capaz de leer la pagina devuelta por la pagina remota. Pero todo el tema de cookies no se pasaria al cliente.

Buceando por la documentacion de HTTP, he revisado que significan las redirecciones y como se supone que deben reaccionar los navegadores. En principio depende de cada navegador. Pero se supone que si se puede hacer una redireccion y que la pagina destino reciba los parametros en POST.

Para las pruebas he usado estos 3 ficheros:
1.php
Código PHP:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<
html>
<
head>
       <
title>Title here!</title>
</
head>
<
body>
<
form name="1" action="2.php" method="POST">
<
input type="text" name="pp">
<
input type="submit" name="submit" value="enviar">
</
form>
</
body>
</
html
2.php
Código PHP:
<?php
header
("HTTP/1.1 307 Temporary Redirect");
header("Location: 3.php");
?>
3.php
Código PHP:
<!doctype html public "-//W3C//DTD HTML 4.0 //EN">
<html>
<head>
       <title>Title here!</title>
</head>
<body>
<pre>
<?php
print_r
($_POST);
?>
</pre>
</body>
</html>
Y he hecho las pruebas en 2 navegadores: IE 5.0 y Mozilla 1.4.

El IE lo hace "perfecto", redirecciona y muestra en 3.php los valores del $_POST.

El Mozilla lo hace "correcto", al redireccionar sale un dialogo de "Se ha producido una redireccion a una nueva pagina. ¿Desea enviar los datos a esa nueva pagina? Si / No", dando la opcion al usuario a cancelar el envio de datos.

La especificacion del primer header es para especificar el status devuelto por el servidor web como redireccion temporal. Si no lo especificamos, segun el manual el Location añade un status 302, que segun pruebas (quitando el primer header de 2.php), no propaga las variables POST.

Si es posible que alguien pruebe los tres ficheros anteriores en navegadores y versiones distintas a las que he puesto, y nos comente los resultados.

Espero haber sido de ayuda.

Suerte.

PD: He obtenido el mismo resultado poniendo en el Location una URL de otro dominio.
__________________
Josemi

Aprendiz de mucho, maestro de poco.

Última edición por josemi; 17/10/2003 a las 07:31
  #8 (permalink)  
Antiguo 19/10/2003, 06:15
Avatar de nublar
(Desactivado)
 
Fecha de Ingreso: octubre-2003
Ubicación: Argentina - BsAs
Mensajes: 321
Antigüedad: 21 años, 1 mes
Puntos: 0
Bueno Muchachos hoy voy a probar sus sugerencias, y les cuento como me fue.
Les agradezco por la ayuda que me dan, a forma de pequeña contribucion, si les interesan los programas de seguridad para win 9x, les pido que visiten mi página www.cnit.com.ar en el sector "savesystem", a los que les guste el programa les obsequio las licencias, o en el sector webmaster/VB un tutorial de compilacion con ISC.
Como todavía sé poco de PHP es la única forma de que puedo ayudar.
Gracias.
  #9 (permalink)  
Antiguo 21/10/2003, 12:11
Avatar de nublar
(Desactivado)
 
Fecha de Ingreso: octubre-2003
Ubicación: Argentina - BsAs
Mensajes: 321
Antigüedad: 21 años, 1 mes
Puntos: 0
Funcionó perfecto!!!
El metodo de enviar lados con "header", envía las variables a la aplicacion en perl, o a otro script php.
(lo probé con Internet Explorer) dado a que es el navegador web que utilizan mis clientes.

Siempre hay que recordar que no se debe sacar nada por pantalla, anule cualquier vestigio de html en mi script php, que me genere una posible salida.



Gracias.
  #10 (permalink)  
Antiguo 04/12/2003, 20:47
 
Fecha de Ingreso: julio-2002
Ubicación: Buenos Aires
Mensajes: 49
Antigüedad: 22 años, 4 meses
Puntos: 0
Código PHP:
<?php
header
("HTTP/1.1 307 Temporary Redirect");
header("Location: 3.php");
?>
No funciona en Mac.

¿Alguien sabe si se puede solucionar?


Saludos
  #11 (permalink)  
Antiguo 05/12/2003, 02:30
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Mas que nada, el que interpreta esas cabeceras es el navegador, no el sistema operativo.

Ademas, creo que el standard HTTP dice que en el location debe ir una URL completa, http://dominio.com/3.php .

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 23:17.