IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Passage de variables POST sans formulaire


Sujet :

Langage PHP

  1. #1
    seb92400
    Invité(e)
    Par défaut Passage de variables POST sans formulaire
    Bonjour,

    Je suis conicé dans une achitecture un peu spéciale et je dois accéder à une page en y envoyant des variables POST, mais seulement, je n'ai pas de formulaire...
    Voici l'architecture dont je dois m'ocuuper :
    Page 1 sur serveur A : le client valide plusieurs données via un formulaire
    Page 2 sur serveur A : contrôle des données et si ok, je dois accéder à la page 3 sur serveur B, et c'est là qu'est le souci, je dois transmettre des valeurs par POST car la page 3 ne peut être modifiée, ou du moins très difficilement et n'accepte que du POST...

    J'ai donc bidouillé un petit essai de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    <?php
     
    $var = array
    	(
    	"nom"       => "MonNom",
    	"prenom"    => "MonPrenom",
    	"mail"      => "prenom.nom@xxx.com",
    	"telephone" => "01.02.03.04.05"
    	);
    $var = http_build_query($var);
     
    $reqPOST = array
    	(
    	"http" => array
    		(
    		"method"  => "POST",
    		"header"  => "Content-type: application/x-www-form-urlencoded\n"."Content-Length: ".strlen($var)."\n",
    		"content" => $var."\n"
    		)
    	);
     
    $reqEnvoi = stream_context_create($reqPOST);
     
    $fp = fopen('http://xxxxxxx/test/reception_post.lcs', 'r', false, $reqEnvoi);
     
    fpassthru($fp);
    fclose($fp);
    Ca marche parfaitement bien, à une exception près, la plus génante... Ce script ne redirige pas vers la page mais en lit simplement le contenu...

    J'ai essayé des variantes avec fsockopen également... mais rien n'y fait.

    Existe-t'il un moyen de créer une requête HTTP et d'y insérer des variables et ensuite d'être redirigé vers la page, exactement comme si j'avais cliqué sur le bouton d'un formulaire ?

    Je peux bien entendu faire des modifs sur les pages du serveur A, mais avant de faire compliqué et surtout de prendre du temps, je souhaite juste savoir s'il y a une autre solution...

    Merci d'avance.

  2. #2
    Membre éclairé
    Profil pro
    Assistant recherche bioinformatique
    Inscrit en
    Novembre 2007
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Assistant recherche bioinformatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 877
    Points : 835
    Points
    835
    Par défaut
    Salut,
    Tu peux essayer cette solution :
    http://fr2.php.net/manual/fr/function.header.php#89447
    Z.

  3. #3
    seb92400
    Invité(e)
    Par défaut
    Bonsoir,

    Merci de ta réponse. J'avais effectivement vu cette solution, que j'ai testée, mais au lieu d'être redirigé, j'obtiens une fenêtre de téléchargement... (testé sous firefox).

    J'ai encore cherché et fait des tests cet après-midi, mais je n'obtiens rien de bien concluant... Je pense que je vais mettre les mains dans le cambouis et modifier le site d'origine...

    Bonne continuation.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 71
    Points : 76
    Points
    76
    Par défaut
    La solution c'est les CURL !!
    CODE:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?php
    define('POSTURL', 'http://www.jecpas.com/pageQuonVeux');
     define('POSTVARS', 'jb=1&mui=gfwe');  // variables que tu veux poster
     
     $ch = curl_init(POSTURL);
     curl_setopt($ch, CURLOPT_POST          ,1);
     curl_setopt($ch, CURLOPT_POSTFIELDS        ,POSTVARS);
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION    ,1);
     curl_setopt($ch, CURLOPT_HEADER            ,0);    // DO NOT RETURN HTTP HEADERS
     //curl_setopt($ch, CURLOPT_RETURNTRANSFER    ,1);    // RETURN THE CONTENTS OF THE CALL
     $Rec_Data = curl_exec($ch);
     echo $Rec_Data;
     curl_close($ch);
    ?>
    et ca va t'afficher la page POSTURL une fois qu on lui a passé les variables en POST!

    Bon c'est la version basique a adapter^^

  5. #5
    seb92400
    Invité(e)
    Par défaut
    Bonjour,

    Merci pour ta réponse. Je vais tester ça.

    Par contre, il me semble de mémoire avoir lu, que cURL n'est pas une extension de base de php, donc peut-être pas utilisable sur toutes les configurations.

    Je te tiens au courant. Encore merci !

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Tu peut éventuellement valider le formulaire en javascript

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <script language="javascript">
    document.nomduformulaire.method='POST';
    document.nomduformulaire.action='http://www.tonsite.com/moncompte.php';
    document.nomduformulaire.submit();
    </script>

  7. #7
    seb92400
    Invité(e)
    Par défaut


    Merci, mais non ! Il me faut une solution opérationnelle dans 100% des cas...

    Du coup, je vais abanodonner cURL également, cette solutions n'étant pas disponible chez tous les hébergeurs.

    Je vais retraviller les pages du site actuel et ajouter une page intermédiaire.

    Je laisse la discussion non résolue, si quelqu'un a une idée avec les fonctions compilées de base avec php...

    Bonne continuation à tous !

  8. #8
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    T'as déjà regardé du côté Pear ?

    Le package est HTTP_Request2 : http://pear.php.net/package/HTTP_Request2
    Autre package qu'il te faudra : Net_URL2 : http://pear.php.net/package/Net_URL2

    Je m'en était servi pour envoyer des données POST sur un autre serveur pour en retour, récupérer un XML. Enfin le code va donner quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    require_once 'HTTP/Request2.php';
     
    $url          = new Net_URL2('http://monsite.org/mapage.php');
    $httpRequest  = new HTTP_Request2($url, 'POST');
    $httpRequest->addPostParameter('var1', 'pioupiou');
    $httpRequest->addPostParameter('var2', 'boum');
    $httpRequest->addPostParameter('var3', 'kawabunga');
    $httpResponse = $httpRequest->send();
    // Là on affiche le contenu qu'on a récupéré entre les tags de la page HTML qui a été généré sur l'autre serveur <body>
    echo $httpResponse->getBody();

  9. #9
    seb92400
    Invité(e)
    Par défaut
    Hello,

    Merci pour le bout de code, mais si je suis bien ce que tu dis, ce code te premet d'envoyer des variables POST et de récupérer la réponse http générée par l'autre serveur, mais pas de simuler l'envoi d'un formulaire (je me trompe peut-être, mais sinon, c'est ce que j'avais fait comme code de base dans le 1er mesage).

    Mon problème est de simuler l'envoi d'un formulaire, c'est à dire que j'envoi une requete avec des variables POST à un autre serveur et j'affiche la page de destination, mais le tout sans passer par un formulaire...

    Bon courage.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/11/2009, 19h56
  2. Réponses: 2
    Dernier message: 21/10/2009, 14h16
  3. Passage de données en POST sans formulaire
    Par juliotte dans le forum Langage
    Réponses: 7
    Dernier message: 17/09/2007, 13h18
  4. Passage de variable GET via formulaire POST ?
    Par tintin72 dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2007, 17h51
  5. passage de variable par un formulaire (checkbox)
    Par artotal dans le forum Langage
    Réponses: 3
    Dernier message: 16/10/2005, 19h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo