Enviar una solicitud POST a varias páginas
Rayfi
Mensajes publicados
234
Estado
Miembro
-
Xavierdu34 Mensajes publicados 223 Estado Miembro -
Xavierdu34 Mensajes publicados 223 Estado Miembro -
Tengo un proyecto personal en PHP; en realidad quiero intentar enviar una sola solicitud POST a varias páginas. Te voy a hacer un diagrama
Mi página que va a enviar la solicitud POST = MPRP
Objetivo que va a recibir la solicitud = CMP (hay varios)
MPRP => CMP, CMP2, CMP3, CMP4, etc.
Si lo has entendido, solo quiero enviar la misma solicitud POST a varias páginas al mismo tiempo, y sin redirección.
No sé si es un formulario o código en PHP.
Mi página que va a enviar la solicitud POST = MPRP
Objetivo que va a recibir la solicitud = CMP (hay varios)
MPRP => CMP, CMP2, CMP3, CMP4, etc.
Si lo has entendido, solo quiero enviar la misma solicitud POST a varias páginas al mismo tiempo, y sin redirección.
No sé si es un formulario o código en PHP.
8 respuestas
-
No sé mucho de PHP, pero no es posible con un post: lo mejor sería hacer un post hacia una página que se encargue de hacer la distribución ;-)
Lo digo sin ningún conocimiento, así que no me golpeen x)
--
------------------------------------------------------------------------------------
"El miedo lleva a la ira. La ira lleva al odio. Y el odio ... lleva al sufrimiento." - Yoda -
Hola,
véngate por aquí, si entiendo bien, eso es lo que buscas hacer:
https://forum.tomsguide.fr/threads/formulaire-php-deux-pages.307942/
--
Ride the Best or Die like the Rest-
-
Hola, Dado que una petición (POST o GET) = 1 destino, solo veo 3 posibilidades. 1 - O haces algo "distribuido" como sugirió sugel antes, es decir MPRP | CMP / | \ CMP2,CMP3,CMP4 etc... y no es complicado con un mínimo de conocimiento de PHP 2 - O haces un "serie" MPRP -> CMP1 -> CMP2 -> CMP3 .... (pero meh, personalmente no me gusta) 3 - O haces algo de "paralelo", y creo que eso es más o menos lo que quieres, con ciertas restricciones, es decir hacer tantas peticiones POST como CMP (y se puede hacer en JavaScript) Normalmente hay 1 formulario, 1 envío, así que 1 petición post pero se puede hacer 1 formulario, 1 botón que ejecuta un JavaScript que a su vez realiza varias peticiones post (en ajax, por ejemplo) Puede haber quizá otras soluciones Cordialmente
-
-
aunque no veo el interés de enviar a varias páginas PHP, podrías hacer varios procesos PHP en una misma página
si es para mostrar el resultado en tu navegador, se mostrará solo una página.
de lo contrario, si realmente lo prefieres, una solución posible en JavaScript/ajax
(ve a ver del lado de jQueryajax)
esto equivaldría, al momento del post del formulario, a lanzar varias http_request simultáneos hacia CM1 CM2 etc..
por otro lado, los scripts CM deben estar en el mismo dominio, me parece que así es -
En fait j’abandonne, je préfère essayer avec le JavaScript qui doit être plus simples, le seul problème c’est que comment recevoir une requête POST avec en JavaScript via un formulaire HTML ?
Faut passer par PHP mais j’ai besoin d’un code ou d’un lien. -
Hola,
Aquí tienes un ejemplo sencillo de envío de un formulario a múltiples archivos PHP utilizando jQuery.
<form id="miForm" action="" method="POST">
<label>Nombre : <input type="text" name="nom" /></label>
<label>Apellido : <input type="text" name="prenom" /></label>
<input type="submit" id="envoyer" value="Enviar" />
</form>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// cuando se envía el formulario
$('#miForm').on('submit', function() {
// serializamos los datos del formulario para enviarlos
var data = $('#miForm').serialize();
// enviamos la información del formulario a las diferentes direcciones
$.post('http://www.ejemplo.com/archivo1.php', data);
$.post('http://www.ejemplo.com/archivo2.php', data);
$.post('http://www.ejemplo.com/archivo3.php', data);
// ...
return false; // evitamos que el navegador envíe el formulario por sí mismo
});
});
</script>
Que tengas un buen día -
Como complemento, aquí tienes un equivalente en PHP:
<?php
// cuando el formulario se envía
if (isset($_REQUEST['envoyer'])) {
// construimos nuestros parámetros de la url
$data = http_build_query($_REQUEST);
// enviamos la información del formulario a los distintos archivos
file_get_contents('http://www.ejemplo.com/fichero1.php?' . $data);
file_get_contents('http://www.ejemplo.com/fichero1.php?' . $data);
file_get_contents('http://www.ejemplo.com/fichero1.php?' . $data);
}
?>
<form id="miForm" action="#" method="POST">
<label>Nombre : <input type="text" name="nom" /></label>
<label>Apellido : <input type="text" name="prenom" /></label>
<input type="submit" name="envoyer" value="Envoyer" />
</form>
Bon développement -
¿Es posible en PHP gracias a Curl:
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_URL,"envoi.php"); // página objetivo curl_setopt($ch, CURLOPT_POST, 1); // Usamos el método POST curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); // El arreglo a POSTear curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Para obtener el retorno de la página en una variable ver $output más abajo. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, '5');// el tiempo antes de un timeout de la conexión. curl_setopt($ch, CURLOPT_REFERER, 'localhost'); // url referer curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //permite seguir las redirecciones de los headers. $output = curl_exec($ch); // ejecuta y devuelve el resultado en $output; curl_setopt($ch, CURLOPT_URL,"envoi2.php"); // página objetivo 2 $output = curl_exec($ch); curl_close ($ch); ?>
Por supuesto hay que tener activada la extensión PHP Curl. (disponible en la mayoría de los hostings por defecto o hay que añadirla en un php.ini)-
un artículo para ayudarte a asimilar el uso de cURL: http://ww12.xrecasens.info
-
-
¿Y por qué simplemente no usar sesiones? ¿No es para eso?
En tu formulario, cambias el objetivo y pones verify.php, en verify.php pones:
session_start(); if (!isset($_POST['post1']) OR !isset ($_POST['post2'])) { echo 'Veuillez remplir tous les champs'; } else { $_SESSION['post1'] = $_POST['post1']; $_SESSION['post2'] = $_POST['post2']; }
Luego, en todas tus demás páginas, recuperas los posts bajo la variable$_SESSION['post...']
sin olvidar poner cada vez que utilices una variable de sesión antes de la carga del HTML la página:session_start();
--
TiDi