Envoyer une requête POST sur plusieurs pages
Rayfi
Messages postés
234
Statut
Membre
-
Xavierdu34 Messages postés 223 Statut Membre -
Xavierdu34 Messages postés 223 Statut Membre -
J'ai un projet personnel en PHP, en faite je veux essayer d'envoyer une seul requête POST sur plusieurs pages jvais vous faire un schéma
Ma page qui va envoyer la requête POST = MPRP
Cible qui va recevoir la requête = CMP (il y en à plusieurs)
MPRP ===========> CMP,CMP2,CMP3,CMP4 ect...
Si vous avez bien compris, je veux juste envoyer une même requête POST sur plusieurs pages en même temps, et sans redirection.
Je sais pas si c'est un formulaire ou un code en PHP.
Ma page qui va envoyer la requête POST = MPRP
Cible qui va recevoir la requête = CMP (il y en à plusieurs)
MPRP ===========> CMP,CMP2,CMP3,CMP4 ect...
Si vous avez bien compris, je veux juste envoyer une même requête POST sur plusieurs pages en même temps, et sans redirection.
Je sais pas si c'est un formulaire ou un code en PHP.
8 réponses
Résumé de la discussion
Envoyer une même requête POST vers plusieurs pages distinctes (MPRP vers CMP, CMP2, CMP3, etc.) sans redirection pose le choix entre PHP avec cURL et des solutions JavaScript côté client. Plusieurs réponses recommandent d'utiliser cURL en PHP et de répéter la requête sur chaque page cible via une boucle, tandis que JavaScript/Ajax peut permettre des requêtes parallèles via jQuery, sous condition du même domaine. Si les destinations ne se situent pas sur le même domaine, des contraintes CORS ou des mécanismes de serveur intermédiaire compliquent l’usage côté client et justifient une approche côté serveur ou une distribution contrôlée.
-
Je n'y connait rien en php, mais c'est pas possible avec un post:
le mieux serait de faire un post vers une page qui vas se charger de faire la distribution ;-)
Je dis ça sans aucune connaissance, donc frappez pas x)
-
Salut,
va faire un tour ici, si j'ai bien compris, c'est ce que tu cherches à faire:
https://forum.tomsguide.fr/threads/formulaire-php-deux-pages.307942/
-
-
Bonjour,
Etant donné qu'une requête (POST ou GET) = 1 destination, je ne vois que 3 possibilités.
1 - Soit tu fais du "distribué" comme sugel la dis plus haut, c a dire
MPRP
|
CMP
/ | \
CMP2,CMP3,CMP4 ect...
et c pas compliqué avec un minimum de connaissance php
2 - soit tu fais du "série" MPRP -> CMP1 -> CMP2 -> CMP3 ....
(mais bof, perso j'aime pas)
3 - soit tu fait du "parallèle", et je pense que c un peu ce que tu veux avec des contraintes, c a dire faire autant de requête POST que de CMP (et c faisable en Javascript)
Normalement on a 1 formulaire, 1 submit donc 1 requete post mais on peut faire
1 formulaire, 1 bouton qui lance un javascript qui lui fait plusieurs requetes post (en ajax par exemple)
il y a peu être d'autre solution
Cordialement
-
-
bien que je ne vois pas l'Intérêt d'envoyer vers plusieurs pages php,, tu pourrait faire plusieurs traitements php dans une même page
si c'est pour réa-ficher le résultat dans ton navigateur une seule page sera affichée.
sinon si tu y tiens vraiment une solution possible en javascript/ajax
(vas voir du côté de jQueryajax)
ça reviendrait au moment du post du formulaire à lancer plusieurs http_request simultanés vers CM1 CM2 etc..
par contre les scripts CM doivent être sur le même domaine il me semble -
En faite j'abandonne, je préfères essayer avec le javascript qui doit être plus simples, le seuls 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. -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut,
Voici un exemple simple d'envoi d'un formulaire à plusieurs fichiers php en utilisant jQuery.
<form id="monForm" action="" method="POST">
<label>Nom : <input type="text" name="nom" /></label>
<label>Prénom : <input type="text" name="prenom" /></label>
<input type="submit" id="envoyer" value="Envoyer" />
</form>
<script src="http://code.jquery.com/jquery-1.10.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// lorsqu'on soumet le formulaire
$('#monForm').on('submit', function() {
// on sérialize les données du formulaire pour les envoyer
var data = $('#monForm').serialize();
// on envoi les infos du formulaire aux différentes adresses
$.post('http://www.exemple.com/fichier1.php', data);
$.post('http://www.exemple.com/fichier2.php', data);
$.post('http://www.exemple.com/fichier3.php', data);
// ...
return false; // on empêche le navigateur de soumettre lui-même le formulaire
});
});
</script>
Bonne journée -
En complément voici un équivalent en PHP :
<?php
// lorsqu'on le formulaire est soumis
if (isset($_REQUEST['envoyer'])) {
// on construit nos paramètres d'url
$data = http_build_query($_REQUEST);
// on envoie les infos du formulaire aux différents fichiers
file_get_contents('http://www.exemple.com/fichier1.php?' . $data);
file_get_contents('http://www.exemple.com/fichier1.php?' . $data);
file_get_contents('http://www.exemple.com/fichier1.php?' . $data);
}
?>
<form id="monForm" action="#" method="POST">
<label>Nom : <input type="text" name="nom" /></label>
<label>Prénom : <input type="text" name="prenom" /></label>
<input type="submit" name="envoyer" value="Envoyer" />
</form>
Bon développement -
C'est possible en php gràce à Curl :
<?php $ch = curl_init(); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); curl_setopt($ch, CURLOPT_URL,"envoi.php"); // page cible curl_setopt($ch, CURLOPT_POST, 1); // On utilise la method POST curl_setopt($ch, CURLOPT_POSTFIELDS, $_POST); // L'array à POSTer curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // Pour avoir le retour de la page dans une variable voir $output plus loin. curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, '5');// le temps avant un timeout de la connection. curl_setopt($ch, CURLOPT_REFERER, 'localhost'); // url référante curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //permet de suivre les redirections des headers. $output = curl_exec($ch); // éxécute et retourne le résultat dans $output; curl_setopt($ch, CURLOPT_URL,"envoi2.php"); // page cible 2 $output = curl_exec($ch); curl_close ($ch); ?>
Il faut bien sur avoir l'extension PHP Curl activé. (disponible sur la plupart des hébergeurs par défaut ou à rajouter dans un php.ini)-
un article pour vous aider à assimiler l'utilisation de cURL : http://ww12.xrecasens.info
-
-
Et pourquoi tout simplement, ne pas utiliser les sessions ? C'est fait pour ça non ?
Dans ton formulaire, tu changes ta cible et tu mets verify.php, dans verify.php tu mets :
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']; }
Ensuite, sur toute tes autres pages, tu récupère les posts sous la variable$_SESSION['post...']
en n'oubliant pas de mettre à chaque fois que tu utilises une variable de session avant le chargement de la page HTML :session_start();