Foros del Web » Programando para Internet » PHP »

enviar peticiones http-get

Estas en el tema de enviar peticiones http-get en el foro de PHP en Foros del Web. hola a todos, tengo un problemilla con el envio de peticiones http-get. estoy haciendo un programa en php que tiene que recibir primero de una ...
  #1 (permalink)  
Antiguo 09/11/2006, 02:41
 
Fecha de Ingreso: noviembre-2006
Mensajes: 28
Antigüedad: 17 años, 5 meses
Puntos: 1
enviar peticiones http-get

hola a todos,
tengo un problemilla con el envio de peticiones http-get.
estoy haciendo un programa en php que tiene que recibir primero de una pasarela (ya activada por supuesto) unos datos por GET y después de buscar el archivo que necesito tengo que volverles a enviar la URL econtrada en la base de datos.
Os pongo el codigo:
<?
include 'conexion.php';

$sms_account=$_GET['sms_account'];
$sms_mo_text=$_GET['sms_mo_text'];
$sms_mo_origin=$_GET['sms_mo_origin'];
$sms_mo_destination=$_GET['sms_mo_destination'];
$sms_mo_mnc=$_GET['sms_mo_mnc'];
$sms_mo_mcc=$_GET['sms_mo_mcc'];
$sms_mo_id=$_GET['sms_mo_id'];

$result=mysql_query("SELECT * FROM clips where codigo like '$sms_mo_text'",$link);
while ($row = mysql_fetch_array($result))
{


$titulo=$row["titulo"];
$url=$row["URL"];
}
if ($titulo==NULL)
{
exit;
}
$envio=".DIRECCION DEL SERVIDOR /send_mt?account=******&password=******&encoding=wa p&mo_id=".$sms_mo_id."&url=".$url."&title=".$titul o."";

//AKI TENGO QUE PONER ALGO QUE NO SE LO QUE ES!!!

?>

como habreis notado hay unos comentarios y alli tengo que poner una función en php que me permita 'abrir' la URL que tengo guardad en la variable $envio. He probado con header, fopen pero ninguna me da resultado.
Espero una respuesta y muchas gracias
  #2 (permalink)  
Antiguo 09/11/2006, 07:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tu función es (o podría ser):

Código PHP:
header("Location: ".$envio);
exit; 
No sé por qué dices que no te dá resultado .. Lo primero que debes verificar es si el URL que compones en $envio es el que esperas (hazle un echo) .. indica el URL completo con https:// o lo que corresponda y dirección completa.

El "header()" en conjunto con la cabecera "location" lo que hará es "redireccionar" a tu pasarela dejando fuera el "foco" de tu aplicación PHP (script). Supongo que esa pasarela tendrá su método para devolver al finalizar el proceso a un URL de tu sistio (Web/aplicación) y tal vez hasta le pase algún parámetro sobre el estado de la transacción para que tu lo proceses.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 09/11/2006, 09:29
 
Fecha de Ingreso: noviembre-2006
Mensajes: 28
Antigüedad: 17 años, 5 meses
Puntos: 1
lo he comprobado y la URL es la que quiero.
el problema que tengo es que este archivo (conf.php) estará solo. nadie va a abrir un explorador...lo tiene que hacer todo solo.por eso no sabia si la funcion header funcionaria.
vuelvo a problarlo ahora mismo
  #4 (permalink)  
Antiguo 09/11/2006, 09:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por zazoomauro84 Ver Mensaje
lo he comprobado y la URL es la que quiero.
el problema que tengo es que este archivo (conf.php) estará solo. nadie va a abrir un explorador...lo tiene que hacer todo solo.por eso no sabia si la funcion header funcionaria.
vuelvo a problarlo ahora mismo
La función header() de PHP lo que hace es "enviar cabeceras HTTP" al cliente en este caso para indicar que cambie a otro URL. El "cliente" no tiene por qué ser un "navegador" siempre .. puede ser cualquier "cosa" que en este caso compla con el protocolo HTTP (PHP o un script PHP podría hacer de cliente "HTTP" usando sockets por ejemplo)

No sé como ejecutas tu script si dices que "nadie va a abrir un explorador"? .. como ejecutas el código que expusistes. Por la forma de tratar los datos (GET) de alguna forma lo vas a llamar bajo protocolo HTTP (no como PHP CLI por ejemplo).

Un saludo,
__________________
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/11/2006, 09:44
 
Fecha de Ingreso: noviembre-2006
Mensajes: 28
Antigüedad: 17 años, 5 meses
Puntos: 1
ok
ahora mismo no funciona pero puede que sea problema de la pasarela.
lo que quiero decir que es un php que funciona solo. solo va a recibir envios por get de la pasarela y enviar por get mas datos.
si los quisiera enviar por post como tendria que hacerlo?
un saludo
  #6 (permalink)  
Antiguo 09/11/2006, 13:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por zazoomauro84 Ver Mensaje
ok
ahora mismo no funciona pero puede que sea problema de la pasarela.
lo que quiero decir que es un php que funciona solo. solo va a recibir envios por get de la pasarela y enviar por get mas datos.
si los quisiera enviar por post como tendria que hacerlo?
un saludo
Por "POST" de donde a donde? ...

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 09/11/2006, 13:47
 
Fecha de Ingreso: noviembre-2006
Mensajes: 28
Antigüedad: 17 años, 5 meses
Puntos: 1
pues en vez de enviar las variables por GET enviarlas por POST.
como lo podria hacer. yo sabria hacerlo desde un formulario pero no desde algo que se tiene que hacer automaticamente.
un saludo
  #8 (permalink)  
Antiguo 09/11/2006, 13:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Si mas o menos te entendi tienes que usar sockets directos o una clase como Snoopy

Código PHP:
$fs fsockopen"servidor.com"80$errstr$errno );
fwrite$fs'GET /path/al/script?var1=valor&var2=otrovalor HTTP/1.0' );
fwrite$fs'Content-length=0' );
fwrite$fs'\r\n' );
$respuesta fread$fs1024 );
fclose$fs ); 
Para POST solo es cambiar el protocolo a POST, saludos!
  #9 (permalink)  
Antiguo 09/11/2006, 13:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por zazoomauro84 Ver Mensaje
pues en vez de enviar las variables por GET enviarlas por POST.
como lo podria hacer. yo sabria hacerlo desde un formulario pero no desde algo que se tiene que hacer automaticamente.
un saludo
Bueno .. lo primero sería usar también POST en tu actual formulario .. el que envia sus datos al script (código) que presentastes.

De ese script a tu pasarela si quieres pasarlos por POST tendrías que implementar una conexión por "sockets" para similar el protocolo HTTP.

Puedes usar:
http://www.phpclasses.org/browse/package/3.html

ó ver:
http://www.php.net/fsockopen

Tienes comentarios en esa función de parte de otros usuarios de la misma que exponen código para tal fin.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 09/11/2006, 14:12
 
Fecha de Ingreso: noviembre-2006
Mensajes: 28
Antigüedad: 17 años, 5 meses
Puntos: 1
en mi caso seria así?
Código PHP:
$fs fsockopen"DIRECCION DEL SERVIDOR"80$errstr$errno );
fwrite$fs'GET '.$envio.' HTTP/1.1' );
fwrite$fs'Content-length=0' );
fwrite$fs'\r\n' );
$respuesta fread$fs1024 );
fclose$fs ); 
naturalmente tambien cambiaria $envio de esta manera:

Código PHP:
$envio="/send_mt?account=******&password=******&encoding=wap&mo_id=".$sms_mo_id."&url=".$url."&title=".$titulo.""
si lo pruebo desde un navegador me deberia redireccionar a la otra web para ver si está todo bien?
  #11 (permalink)  
Antiguo 09/11/2006, 14: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 lo vas a enviar por "POST" .. tendrías que cambiar:

De:
fwrite( $fs, 'GET '.$envio.' HTTP/1.1' );

a

fwrite( $fs, 'POST '.$envio.' HTTP/1.1' );

[quote]si lo pruebo desde un navegador me deberia redireccionar a la otra web para ver si está todo bien?[/quote}

No, .. el navegador no va a redireccionarte. Tu estás usando tu script PHP como "cliente HTTP".. el código que te mostró GatorV incluye en "$respuesta" el resultado que te dará al conectarte a esa página .. eso es lo que debes ver en principio por si tienes problemas de conexión.


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 21:42.