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 données en POST sans formulaire


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut [Résolu] Passage de données en POST sans formulaire
    Bonjour,

    Vous trouvez peut-être cet intitulé ridicule, mais je ne vois pas d'autres solutions....

    J'ai un formulaire qui doit executer un script php qui est en local et un autre qui est sur un autre serveur.

    Comment puis-je faire pour que la validation de ce formulaire exécute mes deux scripts, sachant que je n'ai pas la main sur le formulaire présent sur l'autre serveur et que celui-ci attend des données en POST ?

    Merci d'avance pour vos solutions...

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    cURL, si allow_url_fopen est à On : file_get_contents (ou fopen) en redéfinissant le contexte (3e paramètre), les sockets (fonction fsockopen par exemple)

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Alors pour être très honnête avec toi, tu ne me parles pas en chinois mais presque...

    Aurais-tu un exemple pour que je comprenne plus facilement ?

    Merci,

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Cela correspond bien à ce que vous vouliez ?

    Des exemples, vous devriez trouver ce qu'il vous faut dans les liens ci-dessus Auriez-vous une préférence parmi les solutions citées, sachant que toutes ne sont pas possibles puisque dépendantes de la configuration de votre serveur (consulter la sortie de phpinfo) :
    • cURL : requiert l'extension éponyme
    • file_get_contents/fopen : requiert que le paramètre allow_url_fopen soit à On (vous permet d'utiliser des URL en plus des fichiers locaux)
    • fsockopen ne doit pas avoir été désactivée (disable_functions)


    Auriez-vous un exemple de formulaire et les données correspondantes à transmettre ?

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Merci beaucoup d'apporter des réponses à mes questions

    J'ai fait un phpinfo() sur mon serveur et j'ai pu voir que cURL est enable et allow_url_fopen est à on.
    Je ne sais pas maintenant quelle solution est la plus simple...

    Voici le type de formulaire que j'ai... tout ce qui est de plus simple...

    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
    29
    30
    31
    32
    33
    34
    35
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Mon formulaire</title>
    </head>
    <script>
     
    function validForm(){
    	if(document.form1.getElementById('nom').value==''){
    		alert('Saisir un nom');
    	}
    	else if(document.form1.getElementById('prenom').value==''){
    		alert('Saisir un prenom');
    	}
    	else if(document.form1.getElementById('email').value==''){
    		alert('Saisir un email');
    	}
    	else {
    		document.form1.submit();
    	}
    }
     
    </script>
    <body>
     
    <form id="form1" action="form_traitement.php" method="post">
    Nom : <input type="text" id="nom" size="20" /><br />
    Prénom : <input type="text" id="prenom" size="20" /><br />
    e-mail : <input type="text" id="email" size="20" /><br /><br />
    <input type="button" onclick="validForm();" value="Envoyer" /><br />
    </form>
     
    </body>
    </html>
    Donc, je souhaite que ce formulaire execute mon script "form_traitement.php" qui est sur mon serveur, mais aussi un script "http://www.site.fr/form_traitement.php" qui est sur un autre serveur. Sachant que "http://www.site.fr/form_traitement.php" attend des données en POST.

    Voilà, j'espère avoir été claire...

    Merci

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Dans ce cas il suffirait de renvoyer les variables POST de votre form_traitement.php à http://www.site.fr/form_traitement.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if (!empty($_POST['nom']) && !empty($_POST['prenom']) && !empty($_POST['email'])) {
        # Traiter pour vous les données
        # ...
        # Réémettre la requête
        $ch = curl_init('http://www.site.fr/form_traitement.php ');
        curl_setopt($ch, CURLOPT_POST, TRUE);
        curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST)); # http_build_query requiert PHP 5
        curl_setopt($ch, CURLOPT_NOBODY, TRUE);
        $ret = curl_exec($ch);
        if (!$ret) {
           echo curl_error($ch);
        }
        curl_close($ch);
    }
    Non ?

  7. #7
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    Désolée de ne reprendre le sujet que maintenant, mais je ne me suis pas mise sur ce cas depuis quelque temps...

    J'essaie depuis plusieurs jours de faire fonctionner ce script. Il fonctionne si j'appelle un script php qui ne fais que récupérer les variables POST. Mais si j'appelle la page qui m'intéresse, je n'ai aucun résultat... je me dis que la page attend peut-être des informations que je ne lui passe pas. Comme puis-je savoir d'où vient le problème ?

    Peut-être faut-il des infos dans le header...
    Je suis perdue... merci de votre aide.

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 22
    Points : 13
    Points
    13
    Par défaut
    J'ai trouvé !

    Je n'encodais pas mon tableau $_POST au format URL comme me l'avait précisé julp :
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));

    Merci encore pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Envoyer des données en POST sans formulaire.
    Par Lagoon94 dans le forum Langage
    Réponses: 2
    Dernier message: 12/04/2011, 09h18
  2. [PHP 5.0] Envois de données POST sans formulaire - Curl
    Par phoelis1 dans le forum Langage
    Réponses: 5
    Dernier message: 30/04/2009, 20h05
  3. Passage de variables POST sans formulaire
    Par seb92400 dans le forum Langage
    Réponses: 8
    Dernier message: 29/04/2009, 11h04
  4. Envoyer des données par post sans formulaire
    Par webrider dans le forum Langage
    Réponses: 12
    Dernier message: 31/03/2007, 19h11
  5. Requête GET ou POST sans formulaire.
    Par etiennegaloup dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 31/10/2005, 09h58

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