Foros del Web » Programando para Internet » PHP »

Ejecutar un programa php con otro php...

Estas en el tema de Ejecutar un programa php con otro php... en el foro de PHP en Foros del Web. Que tal... es posible ejecutar un script php recojiendo los datos con otro??? me refiero por ejemplo: tengo un programa a.php que es el encargado ...
  #1 (permalink)  
Antiguo 22/07/2004, 20:14
 
Fecha de Ingreso: julio-2004
Ubicación: Quito
Mensajes: 123
Antigüedad: 19 años, 9 meses
Puntos: 0
Ejecutar un programa php con otro php...

Que tal... es posible ejecutar un script php recojiendo los datos con otro??? me refiero por ejemplo: tengo un programa a.php que es el encargado de procesar el formulario existente en a.html y tengo un programa b.php que tiene un formulario similar (al de a.html) y deseo que sea procesado por a.php enviando los datos correspondientes pero todo esto sin que el usuario vea la ejecucion de b.php, es decir que la respuesta o resultado de a.php sea reconocida por b.php y esta sea presentada por el mismo.... mandar los datos a un script, este lo procesa y genera un codigo html y en base a este codigo generado mostrar el resultado (sin mostrar lo que genero el script que lo procesa) se puede hacer???

Ojala sea lo suficientemente claro... saludos
  #2 (permalink)  
Antiguo 22/07/2004, 21:37
 
Fecha de Ingreso: abril-2002
Mensajes: 60
Antigüedad: 22 años
Puntos: 0
Si se puede

yo pienso que si se puede. depende exactamente de lo que deseas hacer. Yo he intentado cosas como esta y si m han dado resultados. Aquí hay muchos que conocen de eso.
__________________
http://www.autosyautos.com
  #3 (permalink)  
Antiguo 22/07/2004, 22:00
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 6 meses
Puntos: 41
Yo no entiendo bien a qué te refieres.
La ejecución de un script php no es visible en sí misma. Lo que se ve es lo que envías de salida al navegador. Puedes hacer un formulario a.php que envíe los datos a b.php. Si en b.php no hay ninguna salida al navegador (echo, print, etc) sino simplemente procesos (bd, mail, etc)... puedes al final hacer una redirección a c.php (header('location: c.php')) entonces b.php como no genera salida al navegador no "se ve". Será com pasar de a.php a c.php.

----------------------------------------------------

Ahora, si a lo que te refieres es a que quieres que en el mismo formulario a.php aparezca alguna nueva información, dependiendo de los datos ingresados en el formulario, pero sin recargar la página, lo que estás buscando puede andar por el foro bajo el nombre de REMOTE SCRIPTING. Utiliza el buscador del foro.

Saludos

Última edición por jpinedo; 22/07/2004 a las 22:02
  #4 (permalink)  
Antiguo 23/07/2004, 16:16
 
Fecha de Ingreso: julio-2004
Ubicación: Quito
Mensajes: 123
Antigüedad: 19 años, 9 meses
Puntos: 0
Gracias por sus respuestas... pero mejor les aclaro un poco mejor lo que necesito hacer. Estoy creando un script para enviar mensajes a celulares, el problema surje cuando realizo la comprobación de que si el buzon de destino existe (con una de las 3 operadoras) ya que a pesar de tener activado el servicio no tiene creado un buzon para recepcion de emails (tipo [email protected]) entonces cuando se detecte que ese buzon no este activado me interesa usar el script php de dicha empresa (http://www1.porta.net/paginas/i-es/i-es.php) el recojer los datos con mi formulario no es problema, y el enviarlos (cuando no lo detecte el mio) al de ellos tampoco es problema, mi problema esta cuando quiero saber como resulto la operacion, con exito, o no.... por eso la pregunta de como ejecutar un script php con otro... el mio esta en: http://www.portalquito.com/pokiec_new/pokiec.php?ver=w

Ojala me puedan ayudar con esto.

Saludos y gracias.
  #5 (permalink)  
Antiguo 23/07/2004, 19:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ya que la ejecución de cierto URL arroja un resultado que debes ver su salida e identificar lo que ahí se muestre .. lo que debes hacer en este caso (o deberías) es usar a PHP como "cliente HTTP" usando conexiones por sockets para establecer la conexión a ese URL y leer lo que este va a devolver: será HTML que tendrás que filtrar para identificar el "texto" que te intesa saber para tomar la acción que corresponda.

Todo esto lo puedes ver con ejemplos en:
http://www.php.net/fsockopen

Un saludo,
  #6 (permalink)  
Antiguo 23/07/2004, 21:22
 
Fecha de Ingreso: julio-2004
Ubicación: Quito
Mensajes: 123
Antigüedad: 19 años, 9 meses
Puntos: 0
muchas gracias por la informacion Cluster, con ello ya he podido hacer bastante, busque informacion y ejemplos y bueno ya he logrado hacer la conexion por sockets y ademas obtener el resultado generado... lo unico que me falta es procesar este resultado obtenido que es guardado en una variable... me pregunto si basta con usar la funcion eregi() para hacerlo?¿?

*******
He probado en mi servidor y funciona a la perfeccion... he probado haciendo la conexion con sockets al otro y con unas paginas si logro obtener el contenido del archivo abierto con la conexion pero el que me interesa especificamente obtengo esto:

HTTP/1.1 200 OK Date: Sat, 24 Jul 2004 04:30:40 GMT Server: Apache/1.3.23 (Unix) (Red-Hat/Linux) mod_ssl/2.8.7 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.0.6 mod_perl/1.26 X-Powered-By: PHP/4.0.6 Connection: close Transfer-Encoding: chunked Content-Type: text/html

Al parecer me cierra la conexion o algo asi... a que se debe???

****

Código PHP:
<?php
$repeat  
1;  // Cuantas veces se realiza la conexion

$timeout 60;  // Tiempo maximo para que se establezca la conexion
$size    0;  // Bytes que seran leidos (y mostrados). 0 para leer todos

$server  '216.250.209.10';            // direccion IP
$host    'www1.porta.net';            // Nombre del Dominio
$target  '/paginas/i-es/mensajes_escritos.php';   // Especificacion del programa a usar
$referer 'http://www.porta.net/paginas/i-es/i-es.php';    // Referencia
$port    80;

// Setup an array of fields to get with then create the get string
$gets = array ( 'message' => 'Mensaje de prueba',
                 
'pt1' => '4593120',
         
'pt2' => 'JoSe',
         
'sizebox' => '133',
         
'momento' => 'Ahora'
);

// Setup an array of fields to post with then create the post string
$posts = array ("message" => "Mensaje de prueba, avisame si te llega",
                
"pt1" => "4593120",
            
"pt2" => "JoSe",
            
"sizebox" => "133",
            
"momento" => "Ahora");

// That's all. Now the program proccess $repeat times

$method "POST";
if ( 
is_array$gets ) ) {
   
$getValues '?';
   foreach( 
$gets AS $name => $value ){
       
$getValues .= urlencode($name ) . "=" urlencode$value ) . '&';
   }
   
$getValues substr$getValues0, -);
} else {
   
$getValues '';
}

if ( 
is_array$posts ) ) {
   foreach( 
$posts AS $name => $value ){
       
$postValues .= urlencode$name ) . "=" urlencode$value ) . '&';
   }
   
$postValues substr$postValues0, -);
   
$method "POST";
} else {
   
$postValues '';
}

$request  "$method $target$getValues HTTP/1.1\r\n";
$request .= "Host: $host\r\n";
$request .= 'User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.2.1) ';
$request .= "Gecko/20021204\r\n";
$request .= 'Accept: text/xml,application/xml,application/xhtml+xml,';
$request .= 'text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,';
$request .= "image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1\r\n";
$request .= "Accept-Language: en-us, en;q=0.50\r\n";
$request .= "Accept-Encoding: gzip, deflate, compress;q=0.9\r\n";
$request .= "Accept-Charset: ISO-8859-1, utf-8;q=0.66, *;q=0.66\r\n";
$request .= "Keep-Alive: 300\r\n";
$request .= "Connection: keep-alive\r\n";
$request .= "Referer: $referer\r\n";
$request .= "Cache-Control: max-age=0\r\n";

if ( 
$method == "POST" ) {
   
$lenght strlen$postValues );
   
$request .= "Content-Type: x-www-form-urlencoded\r\n";
   
$request .= "Content-Length: $lenght\r\n";
   
$request .= "\r\n";
   
$request .= $postValues;
}

for ( 
$i 0$i $repeat$i++ ) {
   
$socket  fsockopen$server$port$errno$errstr$timeout );
   
fputs$socket$request );
   if ( 
$size ) {
       
$ret fgets$socket$size );
   } else {
       
$ret '';
       while ( !
feof$socket ) ) {
           
$ret .= fgets$socket );
       }
   }
   
fclose$socket );
    echo 
"<hr> $i -- $content -- $ret";
   if (
eregi("enviado correctamente"$ret))
   {
    echo 
"Enviado Correctamente";
   }
   else
   {
    echo 
"ERROR DE ENVIO";
   }
    
}


/* ERRORES
    098330270: Operadora bellsouth
        El(Los) siguiente(s) número(s) no tiene(n) 
            activado el servicio I-es por paquete!
    094593120: Operadora Porta Activado
        El mensaje para el(los) siguiente(s)
            número(s) ha sido enviado correctamente!
    097005019: Porta no activado
        El(Los) siguiente(s) número(s) no tiene(n) 
            activado el servicio I-es por paquete!
*/


?>
Saludos

Última edición por netoec84; 24/07/2004 a las 08:36 Razón: Cierra la conexion
  #7 (permalink)  
Antiguo 24/07/2004, 08:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
La función eregi() es para que uses -patrones- de Expresiones regulares .. Los ejemplos que probastes no son un patron de Expresión regular.

Ahora .. viendo y analizando tus frases a localizar .. no tienes que complicarte tanto .. Claramente se vé que para uno y otro caso .. tienes várias palabras clave:

"I-es" si no se envió.
"correctamente" si se envió.

Así que podrías usar funciones simples de busqueda de cadenas como:
strpost(), substr_count() .. etc
para buscar esas simples palabras y no tener que liarte con Expresiones Regulares.

Un saludo,
  #8 (permalink)  
Antiguo 24/07/2004, 08:58
 
Fecha de Ingreso: julio-2004
Ubicación: Quito
Mensajes: 123
Antigüedad: 19 años, 9 meses
Puntos: 0
ok, muchas gracias y en cuanto al mensaje que obtengo:

HTTP/1.1 200 OK Date: Sat, 24 Jul 2004 04:30:40 GMT Server: Apache/1.3.23 (Unix) (Red-Hat/Linux) mod_ssl/2.8.7 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.0.6 mod_perl/1.26 X-Powered-By: PHP/4.0.6 Connection: close Transfer-Encoding: chunked Content-Type: text/html

y no me muestra el resultado... es por que el servidor me cierra la conexion??? si es asi q puedo hacer¿?
  #9 (permalink)  
Antiguo 24/07/2004, 10:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ahí ya no sé .. eso ya es parte del protocolo HTTP que no conozco al completo ..

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 09:19.