Envoyer une requête POST sur plusieurs pages

Rayfi Messages postés 234 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.

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.

Bobot (l'IA à votre service)
  1. Sugel Messages postés 4293 Date d'inscription   Statut Membre Dernière intervention   728
     
    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)
    0
    1. Rayfi Messages postés 234 Statut Membre 30
       
      Pas compris.
      0
    2. Sugel Messages postés 4293 Date d'inscription   Statut Membre Dernière intervention   728
       
      ^^'

          MPRP 
            |
           CMP
         /  |  \
      CMP2,CMP3,CMP4 ect... 
      0
    3. Rayfi Messages postés 234 Statut Membre 30
       
      Moui pas mal, j'attend d'autres propositions plus "facile".
      0
    4. Sugel Messages postés 4293 Date d'inscription   Statut Membre Dernière intervention   728
       
      sinon, il doit y avoir moyen de poster des trucs en javascript aussi, mais c'est toujours pas mon domaine x)

      et puis le php est plus propre...
      0
  2. Kortalium Messages postés 193 Date d'inscription   Statut Membre Dernière intervention   39
     
    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/

    0
    1. Sugel Messages postés 4293 Date d'inscription   Statut Membre Dernière intervention   728
       
      Salut Kortal :P

      pas vraiment, il me semble :/

      lui, il veut qu'un seul post soit envoyé à différents php.

      la, on propose de poster le même contenu à un des différents php.
      0
    2. Thorak83 Messages postés 1140 Statut Membre 156
       
      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
      0
  3. Alain_42 Messages postés 5413 Statut Membre 904
     
    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
    0
  4. Rayfi Messages postés 234 Statut Membre 30
     
    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.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Pitet Messages postés 2845 Statut Membre 530
     
    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
    0
    1. Sugel Messages postés 4293 Date d'inscription   Statut Membre Dernière intervention   728
       
      bien joué :)

      j'ai pas testé, mais ça devrait marcher...

      Je sais pas si quelqu'un a une solution PHP...
      0
    2. ThEBiShOp Messages postés 9307 Date d'inscription   Statut Contributeur Dernière intervention   1 606
       
      honnêtement pour faire ça personnellement j'opterais également pour de l'ajax.

      Mais je pense qu'en repensant un peu ton système de script tu devrais pouvoir tout faire en un seul parce que cette méthode me semble un peu chaotique.
      0
    3. Rayfi Messages postés 234 Statut Membre 30
       
      Et quand tout les liens de l'initiation se trouve dans une table ?
      0
    4. Sugel Messages postés 4293 Date d'inscription   Statut Membre Dernière intervention   728
       
      explique toi....
      0
    5. Rayfi Messages postés 234 Statut Membre 30
       
      Bah en gros, tout les liens se trouve dans une BDD SQL, et faire ce genre de choses :d)

      var link = 'SELECT allLink FROM bdd';
      $.post(link, data);

      Vous voyez le délires ? (au passage, je parles surtout de le faire bien evidement en PHP.)
      0
  7. Pitet Messages postés 2845 Statut Membre 530
     
    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
    0
    1. Rayfi Messages postés 234 Statut Membre 30
       
      Là c'est des requêtes GET....
      0
    2. Rayfi Messages postés 234 Statut Membre 30
       
      Si t'as pas compris, je cherche juste à envoyer à http://www.exemple.com/fichier1.php, http://www.exemple.com/fichier1.php et http://www.exemple.com/fichier1.php des requêtes POST et non GET.
      0
  8. Xavierdu34 Messages postés 223 Statut Membre 21
     
    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)
    0
    1. Xavierdu34 Messages postés 223 Statut Membre 21
       
      un article pour vous aider à assimiler l'utilisation de cURL : http://ww12.xrecasens.info
      0
  9. [TiDi] Messages postés 124 Date d'inscription   Statut Membre Dernière intervention   262
     
    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();

    0