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 :

Récupérer la sortie d'une requete via 1 formulaire sur serveur distant


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 55
    Points : 26
    Points
    26
    Par défaut Récupérer la sortie d'une requete via 1 formulaire sur serveur distant
    Bonjour,

    je souhaiterais récupérer la sortie d'une requete poster via un formulaire sur un autre serveur.

    lorsque que j'emets ma requete, j'arrive sur la page demandée du serveur distant et celui-ci m'affiche la réponse.
    je voudrais récupérer cette réponse.

    j'ai vu qu'on pouvait installer "cURL", mais je souhaiterais utiliser une méthode sans installer quoi que ce soit sur mon serveur.

    Merci d'avance.

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    La plupart du temps, CURL est installé par défaut. Sinon tu peux toujours faire du fsockopen pour envoyer une requête et récupérer la réponse du serveur.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 55
    Points : 26
    Points
    26
    Par défaut
    Effectivement cURL est installé sur ma machine.
    je viens de faire quelques test mais j'ai l'erreur suivante qui m'est retournée :
    "SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed"

    quel est le problème, je n'arrive pas à trouver la solution.

    voici un bout de script utilisé :

    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
    36
    37
    38
    39
    40
    41
    // Pour assurer la compatibilité avec les versions PHP 4
    	if (!function_exists('http_build_query')) {
    		function http_build_query($formdata, $numeric_prefix = NULL, $arg_separator = '', $parent_key = '') {
    			$ret = array();
    			if (is_array($formdata)) {
    				if (empty($arg_separator)) {
    					$arg_separator = ini_get('arg_separator.output');
    				}
    				foreach ($formdata as $k => $v) {
    					if (is_int($k) && $numeric_prefix != NULL) {
    						$k = $numeric_prefix . $k;
    					}
    					if ($parent_key != '') {
    						$k = sprintf('%s[%s]', $parent_key, $k);
    					}
    					if (is_array($v)) {
    						array_push($ret, http_build_query($v, NULL, $arg_separator, $k));
    					} elseif (is_object($v)) {
    						array_push($ret, http_build_query(get_object_vars($v), NULL, $arg_separator, $k));
    					} else {
    						array_push($ret, urlencode($k) . '=' . urlencode($v));
    					}
    				}
    			}
    			return implode($arg_separator, $ret);
    		}
    	}
     
    	// Faire suivre les données POST à une autre page
    	$ch = curl_init('https://site-distant.fr/');
    	curl_setopt($ch, CURLOPT_POST, TRUE);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
    	$ret = curl_exec($ch);
    	if (!$ret) {
    		echo curl_error($ch);
    	} else {
    		echo $ret;
    	}
    	curl_close($ch);
    }

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 138
    Points : 1 504
    Points
    1 504
    Par défaut
    tu as un problème d'authentification via https.
    Logiquement, si tu as SSL , essaie de tester en rajoutant les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
          curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
            curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    	curl_setopt($ch, CURLOPT_POST, TRUE);
    	curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($_POST));
    	curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 55
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup !

    effectivement ça fonctionne bien.

    maintenant, est-il possible d'avoir différent type de retour (chaine de caracteres , tableau, ...);

  6. #6
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    Bonjour,

    comment récupérer une réponse XML ?

    Merci

  7. #7
    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
    Avec ? cURL ? Il n'y a qu'à récupérer le résultat de l'exécution de la fonction curl_exec (requiert l'option CURLOPT_RETURNTRANSFER à TRUE). Elle retourne une chaîne que vous pouvez traiter à votre guise dont la réinjecter sur une extension XML (DOM : méthode DomDocument#loadXML, SimpleXML : fonction simplexml_load_string - pour PHP 5) pour manipulation.

    Cela dit, avec une version 5, on peut tout faire via la fonctionnalité allow_url_fopen ci celle-ci est active (nul besoin de passer par cURL).

  8. #8
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    268
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 268
    Points : 101
    Points
    101
    Par défaut
    Merci, c'est bon j'ai trouvé .

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

Discussions similaires

  1. Requette dans une BDD HFSQL C/S sur serveur distant.
    Par matchlesspseudo dans le forum HyperFileSQL
    Réponses: 2
    Dernier message: 17/01/2011, 00h04
  2. Requetes de l'extérieur sur serveur distant
    Par Jopzeut dans le forum Requêtes
    Réponses: 6
    Dernier message: 07/05/2006, 13h25
  3. [MySQL] Récupérer les id d'une requete d'insertion etendue?
    Par cmoiscrat dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 15/02/2006, 09h42
  4. Réponses: 2
    Dernier message: 24/11/2005, 11h46
  5. récupérer le résultat d'une requete
    Par sheira dans le forum ASP
    Réponses: 3
    Dernier message: 03/12/2004, 11h04

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