envio de vatos por POST sin formulario,

2,995 views
Skip to first unread message

Peter Acosta

unread,
Apr 9, 2010, 7:21:25 AM4/9/10
to php...@googlegroups.com

Hola Amigos,

Los molesto con la siguiente consulta :

Tengo que hacer una redirección desde un script PHP de mi servidor a otra pagina fuera de mi server , enviando además datos por método POST (es un requerimiento externo  que no puedo cambiar ).

Se que esto esto es bastante inusual , pero tengo entendido que se podría hacer construyendo apropiadamente el header() antes de re direccionar con un “Locate”.

He visto muchas de supuestas soluciones en blogs , pero ninguna parece funcionar.

Me gustaría resolverlo sin hacer uso de librerías o frameworks.

Alguien lo ha hecho ?
me podrían dar una mano ?

 

Muchas gracias
Peter

 

Pablo de la Vega

unread,
Apr 9, 2010, 8:11:04 AM4/9/10
to php...@googlegroups.com
con CURL lo haces MUY simple, en un rato te dejo un ejemplo



--
Has recibido este mensaje porque estás suscrito al grupo "PHP Argentina" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.



--
Pablo de la Vega
Blog: www.avlog.com.ar
Twitter: @agevaled

Peter Acosta

unread,
Apr 9, 2010, 8:13:02 AM4/9/10
to php...@googlegroups.com
ok pablo , te lo agradecere mucho.
Te espero, saludos
Peter

Seppo

unread,
Apr 9, 2010, 8:13:11 AM4/9/10
to php...@googlegroups.com
Pero con CURL no sería una redirección, sino que lo haría el
servidor... la forma de redirigir haciendo que el usuario mande POST
supongo que requerirá javascript... con headers no se puede hacer eso.

Pablo de la Vega

unread,
Apr 9, 2010, 9:07:59 AM4/9/10
to php...@googlegroups.com
es verdad me colgué con el redirect..

por que sin form?

podes hacer un redirect con un form..

llenas el formulario con los datos

<?php
$action = 'www.pepe.com/inedx.php'
?>

<form name="formulario" method="POST" enctype="multipart/form-data" action="<? print $accion;?>" > 
    <input name="nombre" id="nombre" type="hidden" <? print "value='".$nombre."'";?>>
    <input name="mail" id="mail" type="hidden" <? print "value='".$mail."'";?>>
</form>

//haca hago un redirect posteandole las cosas.

<script>document.getElementById("formulario").onLoad = setTimeout('document.formulario.submit()',10);</script> 


en vez de 10 podes poner 5 o menos lo que te sea util...


puede servir :)

si no te es util avisame

saludos!

Peter Acosta

unread,
Apr 9, 2010, 9:24:03 AM4/9/10
to php...@googlegroups.com
SI ya lo se,
esa seria la solucion clasica , para una pagina en font-end, con HTML , body y javascript , pero por algo hice la consulta que hice y no use ese camino que ya conocemos todos.

Tengo un script que corre en back-end y necesito redireccionar a otro script que corre en back-end pasando parametros por POST.

Desde ya muchas gracias y saludos
:)
Peter.

Joaquín Vicente

unread,
Apr 9, 2010, 10:18:30 AM4/9/10
to php...@googlegroups.com
2010/4/9 Peter Acosta <peter...@gmail.com>

SI ya lo se,
esa seria la solucion clasica , para una pagina en font-end, con HTML , body y javascript , pero por algo hice la consulta que hice y no use ese camino que ya conocemos todos.

Tengo un script que corre en back-end y necesito redireccionar a otro script que corre en back-end pasando parametros por POST.

Desde ya muchas gracias y saludos
:)
Peter.



usá cURL. mediante curl_setopt() podés setear el header en POST y pasarle los parámetros.
http://www.php.net/manual/en/function.curl-setopt.php

$params = array('key1' => 'value1', 'key2' => 'value2');
$ch = curl_init("http://www.example.com/");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
curl_exec($ch);
curl_close($ch);

saludos!

Pablo de la Vega

unread,
Apr 9, 2010, 10:21:19 AM4/9/10
to php...@googlegroups.com
pero como se hablo antes, hay que hacer un redirect no un post comun

--
Has recibido este mensaje porque estás suscrito al grupo "PHP Argentina" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.

Federico

unread,
Apr 9, 2010, 10:27:03 AM4/9/10
to php...@googlegroups.com
Creo que Peter se refiere a simplemente mandar datos por POST desde un
script en el lado del servidor. En ese caso un "redirect" no tiene
sentido.

2010/4/9 Pablo de la Vega <agev...@gmail.com>:

Luis M.

unread,
Apr 9, 2010, 11:03:41 AM4/9/10
to php...@googlegroups.com
Nunca lo hice. Pero mi logica me dice que: El tema es que el post se hace con una peticion, no con el header el una pagina.
Por eso existe el objeto que hace la peticion en javascript. Si usas Firebug, te fijas en la seccion "Red" y vas a ver que cuando haces acciones con ajax, o cuando abris una pagina, hay un encabezado de peticion y un encabezado de respuesta, el que haces con el header seria el de respuesta.
En sintesis lo que tenes que hacer con php hacer una peticion al servidor para que este te de la respuesta y en esa peticion mandar los datos via post.
En fin, tenes que usar cURL.

Si no estoy equivocado es asi.

Saludos

Ricardo Luis Mender

Luis M.

unread,
Apr 9, 2010, 11:05:23 AM4/9/10
to php...@googlegroups.com
Federico lo dijo mas resumido jajaja

Ricardo Luis Mender

German Bortoli

unread,
Apr 9, 2010, 8:41:10 AM4/9/10
to php...@googlegroups.com
El 9 de abril de 2010 09:13, Seppo <sepp...@gmail.com> escribió:


Si eso mismo estaba pensando, lo que podés hacer en este caso es usar las sesiones de la sgte manera.

En un archivo por ej en el mandar_post.php, ponés lo sgte.

http://pastebin.com/mHsxK5QA

En el recibir_post.php tendrias que tener algo asi.

http://php.pastebin.com/k5CLy2SM




--
- Bortoli German -
Web: http://ventalocal.com.ar
Blog: http://www.geoks.com.ar

German Bortoli

unread,
Apr 9, 2010, 10:42:04 AM4/9/10
to php...@googlegroups.com
Si eso mismo estaba pensando, lo que podés hacer en este caso es usar las sesiones de la sgte manera.

En un archivo por ej en el mandar_post.php, ponés lo sgte.

http://pastebin.com/mHsxK5QA

En el recibir_post.php tendrias que tener algo asi.

http://php.pastebin.com/k5CLy2SM

No se que paso antes que no se envio a la lista ... Perdonen

German Bortoli

unread,
Apr 9, 2010, 8:43:19 AM4/9/10
to php...@googlegroups.com
Ah perdón en recibir_post.php cuando digo "Procesar Form" lo que quise decir fue "Procesar el $_POST['form1']; espero que te sea de utilidad, saludos

German Bortoli

unread,
Apr 9, 2010, 8:04:04 AM4/9/10
to php...@googlegroups.com
El 9 de abril de 2010 08:21, Peter Acosta <peter...@gmail.com> escribió:

--
Has recibido este mensaje porque estás suscrito al grupo "PHP Argentina" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.


Hola te comento que podés mandar datos via POST usando PHP-CURL, la mayoría de los servers lo tienen ya instalado por defecto, aca te dejo un Tutorial en Inglés.

http://www.askapache.com/htaccess/sending-post-form-data-with-php-curl.html

Es muy simple y fácil, espero que te sirva, saludos

Tordek

unread,
Apr 9, 2010, 4:05:13 PM4/9/10
to php...@googlegroups.com
Peter Acosta wrote:
> Hola Amigos,
>
> Los molesto con la siguiente consulta :
>
> Tengo que hacer una redirecci�n desde un script PHP de mi servidor a
> otra pagina fuera de mi server , enviando adem�s datos por m�todo POST
> (es un requerimiento externo que no puedo cambiar ).
>

A ver si te entiendo bien...

Ten�s un script a.php, que llama a otro, b.php. b.php procesa, y le
da a a.php otros datos que reenviar via POST a un script externo X.php?

�No pod�s editar a.php para que lea de b.php y parsee la url y se
encargue de redirigirse solo? (Esto es suponiendo, seg�n lo que
entend�, que a.php est� siendo llamado via cron o algo similar.)

O, de otra forma, editar b.php para que se encargue de hacer el
request POST y no mande otros datos.

--
Guillermo O. �Tordek� Freschi. Programador, Escritor, Genio Maligno.
http://tordek.com.ar :: http://twitter.com/tordek
http://www.arcanopedia.com.ar - Juegos de Rol en Argentina

German Bortoli

unread,
Apr 9, 2010, 9:26:49 PM4/9/10
to php...@googlegroups.com
El 9 de abril de 2010 17:05, Tordek <ked...@gmail.com> escribió:
Peter Acosta wrote:
Hola Amigos,

Los molesto con la siguiente consulta :

Tengo que hacer una redirección desde un script PHP de mi servidor a otra pagina fuera de mi server , enviando además datos por método POST (es un requerimiento externo  que no puedo cambiar ).


A ver si te entiendo bien...

Tenés un script a.php, que llama a otro, b.php. b.php procesa, y le da a a.php otros datos que reenviar via POST a un script externo X.php?

¿No podés editar a.php para que lea de b.php y parsee la url y se encargue de redirigirse solo? (Esto es suponiendo, según lo que entendí, que a.php esté siendo llamado via cron o algo similar.)


O, de otra forma, editar b.php para que se encargue de hacer el request POST y no mande otros datos.

--
Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.
--
Has recibido este mensaje porque estás suscrito al grupo "PHP Argentina" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a php...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a php-arg+u...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/php-arg?hl=es.


En un archivo por ej en el mandar_post.php, ponés lo sgte.

http://pastebin.com/mHsxK5QA

En el recibir_post.php tendrias que tener algo asi.

http://php.pastebin.com/k5CLy2SM

No se que paso antes que no se envio a la lista ... Perdonen

Peter Acosta

unread,
Apr 9, 2010, 10:03:08 PM4/9/10
to php...@googlegroups.com

No, no es asi, no me explique bien .


YO tengo el archivo aaa.php ( en backend  ), en mi servidor “YYY” ,
y necesito re direccionar y pasar variables por el método POST  ( debe ser asi, esto no lo puedo elegir yo) a un  archivo que llamaríamos nnn.xxx en un servidor htpps que esta fuera de mi alcance ( es decir que no tengo acceso a este segundo archivo ni al segundo servidor ).

Es decir , necesitaría hacer algo parecido a lo que hacemos con:

Header(“Location: http://www.midominio.com?param1=1111&param2=abcd”)

Pero …. pasando los  parámetros con el método POST .
necesito  re direccionar , ceder el control del flujo web al segundo servidor a la vez que envio datos por POST.

Es decir que necesitaría hacer desde un script PHP lo mismo que se hace desde una página HTML usando un form y luego submit.

 

Encontré por internet muchos ejemplos de este tipo , que intentaban simular un POST usando header() :

$post_data = 'var1=123&var2=456';

$content_length = strlen($post_data);

 

header('POST /test/test.php HTTP/1.1');

header('Host: www.algo.com');

header('Connection: close');

header('Content-type: application/x-www-form-urlencoded');

header('Content-length: ' . $content_length);

header('');

header($post_data);

 

pero ninguno me funciono, y créanme que entre ayer y hoy he probado unos cuentos .

Si alguno  ha resulto este acertijo,  me seria muy útil si me iluminara como hocerlo.

Desde ya muchas gracias a todos los que han contestado.

PEter



El 9 de abril de 2010 17:05, Tordek <ked...@gmail.com> escribió:
Peter Acosta wrote:
Hola Amigos,

Los molesto con la siguiente consulta :

Tengo que hacer una redirección desde un script PHP de mi servidor a otra pagina fuera de mi server , enviando además datos por método POST (es un requerimiento externo  que no puedo cambiar ).


A ver si te entiendo bien...

Tenés un script a.php, que llama a otro, b.php. b.php procesa, y le da a a.php otros datos que reenviar via POST a un script externo X.php?

¿No podés editar a.php para que lea de b.php y parsee la url y se encargue de redirigirse solo? (Esto es suponiendo, según lo que entendí, que a.php esté siendo llamado via cron o algo similar.)


O, de otra forma, editar b.php para que se encargue de hacer el request POST y no mande otros datos.

--
Guillermo O. «Tordek» Freschi. Programador, Escritor, Genio Maligno.

--

Sergio Gabriel Rodriguez

unread,
Apr 9, 2010, 10:44:30 PM4/9/10
to php...@googlegroups.com
No entiendo, si lo que necesitás es enviar datos desde tu formulario a un php que está en otro server, y necesitas que sea por POST, es decir que el script que recibirá tus datos acepta POST, por qué no lo haces con un form común como te dijeron antes donde en el action ponés la dirección del otro server?? tu script corre modo consola? es web? lo tenés por cron? no se te entiende muy bien, al menos yo...


Sergio Gabriel Rodriguez
http://www.3trex.com.ar

2010/4/9 Peter Acosta <peter...@gmail.com>

Peter Acosta

unread,
Apr 9, 2010, 11:03:21 PM4/9/10
to php...@googlegroups.com
no lo hago asi por que no puedo, por algo es qe pregunto lo que pregunto, si pudiera hacer lo que vos decir nunca hubiera iniciado esta consulta.

Ponele que mi script es un cron, y no quiero caer en la solucion poco eleagante de armar un form y acer submit de manera automatica con javascript.

German Bortoli

unread,
Apr 10, 2010, 12:04:25 AM4/10/10
to php...@googlegroups.com
Hmm en un sistema que hice con un amigo, implementamos CURL para recibir el captcha de un sitio y luego con un typer interno a nuestro sitio, completabamos el captcha con los datos y podiamos "usar la web" de ellos en nuestro sitio interno, me parece que  si te rebuscas un poco con CURL y el manejo de cookies lo vas a poder lograr ...

Luis M.

unread,
Apr 10, 2010, 11:05:51 AM4/10/10
to php...@googlegroups.com
Peter, si mal tengo entendido no podes pasar post por el header. Al post lo haces mandando un request. Y para hacer un request necesitas usar cURL. Con curl podes hacer el post de un archivo en otro servidor incluso.

Osea NO se puede hacer post con un Location con el header() de php.

Saludos

Ricardo Luis Mender

Seppo

unread,
Apr 10, 2010, 1:42:59 PM4/10/10
to php...@googlegroups.com
De vuelta, con PHP no se puede hacer, pero podés usar un formulario y
autoenviarlo con javascript...

<form action="http://www.algo.com/test/test.php" method="post" id="myform">
<input type="hidden" name="var1" value="123" />
<input type="hidden" name="var2" value="456" />
</form>
<script type="text/javascript">
document.getElementById('myform').submit();</script>

Y si querés, podés contemplar el caso de que el cliente no tenga
javascript, pero requeriría que agregues un botón que el usuario tenga
que clickear...

Peter Acosta

unread,
Apr 10, 2010, 2:52:20 PM4/10/10
to php...@googlegroups.com

Hola LUis, gracias por tu respuesta.

Se que con cURL puedo hacer un post/get a otra pagina, pero según tengo entendido, cURL no direcciona a la otra pagina, es decir el navegador de mi cliente no salta a la otra pagina tal como la haría si usara un formulario con el método POST.
LO mismo ocurriría si lo implementara con AJAX.
Pero  los requerimientos de esta implementación son muy específicos y se me pide que transfiera al cliente al segundo servidor, ( hay razone por lo cual es asi ) y no lo puedo cambiar.

Se te ocurre alguna manera de hacerlo desde un script PHP , sin caer en la clásica pagina html "de parche" , con un form que haga un submit con javascript ?

Otra duda que tengo , y es algo que llama mucho mi atención , es que he encontrado un sin número de ejemplos de POST usando header() , pero ninguno funciona !!!
es increíble ver como muchas veces en internet se publica información errónea.

Nuevamente gracias .

Peter.

Federico Arriola

unread,
Apr 10, 2010, 3:02:25 PM4/10/10
to php...@googlegroups.com

Para redirigir al cliente a otro sitio, no vas a tener otra opción que hacerlo a través del browser con una pagina del estilo de la que llamas 'parche', dado que el browser tiene que hacer la redirección ,  y nada a través de PHP.

Tendrias que hacer un form con campos hidden con los datos, y al usuario mostrar un icono animado de loading o similar.

Redireccionarla con headers o con una pagina con form 'autosubmit' sería basicamente lo mismo, ya que en ambos casos el browser estaria redireccionando.

Saludos.

German Bortoli

unread,
Apr 10, 2010, 3:02:31 PM4/10/10
to php...@googlegroups.com
El 10 de abril de 2010 15:52, Peter Acosta <peter...@gmail.com> escribió:

Si con CURL se puede mirate este link:


Ahí usan curl para mandar los datos y luego redireccionar a la persona a la "Thanks" page que procesa ese form.

Fijate en el titulo donde dice "Relaying POST data, allowing the script to redirect"

German Bortoli

unread,
Apr 10, 2010, 3:08:34 PM4/10/10
to php...@googlegroups.com
Aca encontre otra URL que usan los headers y es sin CURL fijate si te anda, no se si habras probado esta funcion...

Peter Acosta

unread,
Apr 11, 2010, 9:29:36 AM4/11/10
to php...@googlegroups.com
ese ejemplo hace otra cosa, ademas que no me funciono, no re-direcciona a la pagina destino.

German Bortoli

unread,
Apr 11, 2010, 11:51:13 AM4/11/10
to php...@googlegroups.com
Ya fue entonces no se como se podría solucionar otra alternativa es como habian dicho un formulario alternativo con el action='UrlDeDestino.com' y method="POST" ... más que eso no sabría que decirte, espero que te vaya bien con eso.

Saludos cordiales
Reply all
Reply to author
Forward
0 new messages