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 :

Envoyer requête post serveur/serveur


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Envoyer requête post serveur/serveur
    Salut tout le monde,

    Je doit intégrer un système de paiement sur un site, et bien sûr, il faut envoyer certaines infos au site dédié. Hors, je n'aimerais pas intégrer des inputs en hidden pour plus de sécurité.

    Questions :
    * Comment je peux envoyer des infos directement au serveur avec redirection ?
    * Comment lire la réponse envoyée par le site du paiement ?

    J'ai cherché au niveau de http et Curl, mais se n'est pas super détaillé. Vous connaissez certains tutos ou méthodes pratique svp ?

    PS : Le site est développé en MVC

    J'espère qu'il y aura qq'un pour m'aider, c'est assez urgent.
    Merci d'avance

  2. #2
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Hello,
    il faut que tu utilise curl.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Ahhh, enfin une réponse
    Grand MERCI John pour ta réponse. L’explication est un peux complexe pour moi, y aurait-il pas un autre tuto stp ou un exemple concret ?

    PS : Y a aussi le ssl qui est activé sur le site, comment je peux l'utiliser ?

    Merci & excellente fête

  4. #4
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    regarde ca :
    http://fr2.php.net/manual/fr/ref.curl.php

    tu initialise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ch = curl_init();

    tu set les options que tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    liste des options :
    http://fr2.php.net/manual/fr/function.curl-setopt.php

    tu exécute ta requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $content = curl_exec( $ch );
    tu récupère des informations sur la requête exécuté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $response = curl_getinfo( $ch );
    tu récupère les erreurs si il y en a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    tu stop la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl_close ( $ch );

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Merci l'ami
    Je l'ai testé et sa marche impec en restant sur le site, mais quand je fais une redirection vers un site externe où j'ai placé un print_r($_POST); et un print_r($_REQUEST); Arrivé sur la page, le POST est vide, et le REQUEST ne contient que [PHPSESSID].

    C'est parce que je suis en localhost ?

    Comment faire pour récupérer ces infos de l'autre coter en sachant qu'il doit y avoir un traitement sur le site de redirection et qui a son tour renverra la réponse après le traitement.

    Dsl je suis un casse tête, mais c'est encore du charabia pour moi Au fait, la session ne se fermera qu'apres la réception, ou dès la redirection

    Merci et excellente journée

    Citation Envoyé par John Blobsmith Voir le message
    regarde ca :
    http://fr2.php.net/manual/fr/ref.curl.php

    tu initialise:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $ch = curl_init();

    tu set les options que tu veux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
    liste des options :
    http://fr2.php.net/manual/fr/function.curl-setopt.php

    tu exécute ta requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $content = curl_exec( $ch );
    tu récupère des informations sur la requête exécuté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $response = curl_getinfo( $ch );
    tu récupère les erreurs si il y en a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $curl_errno = curl_errno($ch);
    $curl_error = curl_error($ch);
    tu stop la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    curl_close ( $ch );

  6. #6
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 692
    Points : 20 241
    Points
    20 241
    Par défaut
    Si il sagit simplement de faire une requête POST vers un autre serveur y'a pas besoin de CURL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $postdata = http_build_query($mes_donnees);
     
    $opts = array('http' =>
        array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => $postdata
        )
    );
     
    $context  = stream_context_create($opts);
    $result = file_get_contents('http://serveur-distant.com/page.php', false, $context);
    Dans $result tu auras la réponse affichée par la page à qui tu auras envoyé la requête.

  7. #7
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Je comprend trop ton problème de session et de redirection.

    Il y a des options spécial sur curl pour setter un dossier qui va stoker les cookies. Pour garder un session ouverte il faut juste faire 1 seul curl_init
    au début du groupe de requête et un seul curl_close à la fin.

    @grunk je suis pas sur que tu puisse gérer les cookies et les sessions avec cette méthode.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Re, John
    J'ai vue les fonctions que tu m'as filé, et voila un exemple du code que j'utilise.
    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
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_COOKIESESSION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $Array_Posts);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_UNRESTRICTED_AUTH, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    $result = curl_exec($ch);
    <div style="margin-left:40px">
    if($result==false):
    <div style="margin-left:40px">echo 'Erreur Connexion au Site';</div>else: header("Location: $url");
    endif;</div>curl_close($ch);
    J'utilise un seul curl_init() et 1 curl_close(). Mais le site de redirection ne recoit aucune donnée en print_r($_POST);. Le but de tout cela, est que le site qui reçoit les données peut les lire en print_r($_POST);. Si je spécifie un doc de stockage, l'autre site ne pourra pas y acceder.

    Merci encore pour le temps.
    Bonne & Merveilleuse année à toi

    Citation Envoyé par John Blobsmith Voir le message
    Je comprend trop ton problème de session et de redirection.

    Il y a des options spécial sur curl pour setter un dossier qui va stoker les cookies. Pour garder un session ouverte il faut juste faire 1 seul curl_init
    au début du groupe de requête et un seul curl_close à la fin.

    @grunk je suis pas sur que tu puisse gérer les cookies et les sessions avec cette méthode.

  9. #9
    Membre actif Avatar de John Blobsmith
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 198
    Points : 223
    Points
    223
    Par défaut
    Bonne année 2013
    Citation Envoyé par Percepto Voir le message
    J'utilise un seul curl_init() et 1 curl_close(). Mais le site de redirection ne recoit aucune donnée en print_r($_POST); Le but de tout cela, est que le site qui reçoit les données peut les lire en print_r($_POST); Si je spécifie un doc de stockage, l'autre site ne pourra pas y acceder.
    curl te retourne des infos ou des erreurs ?

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Merci idem à toi
    Elle ne me retourne rien puise que je fais la redirection vers l'autre site pour recevoir les données par $_POST, se n'est qu'apres certains traitement sur ce site qu'il me retournera la réponse.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2011
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Merci grunk
    Merci pour cette solu, cependant, sa génère une erreur :
    ... failed to open stream: HTTP request failed! HTTP/1.1 403 Forbidden in ...

    ou bien :
    ... failed to open stream: HTTP request failed! HTTP/1.0 405 Method Not Allowed in ...
    C'est du a quoi ?

    Merci et bonne année


    Citation Envoyé par grunk Voir le message
    Si il sagit simplement de faire une requête POST vers un autre serveur y'a pas besoin de CURL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $postdata = http_build_query($mes_donnees);
     
    $opts = array('http' =>
        array(
            'method'  => 'POST',
            'header'  => 'Content-type: application/x-www-form-urlencoded',
            'content' => $postdata
        )
    );
     
    $context  = stream_context_create($opts);
    $result = file_get_contents('http://serveur-distant.com/page.php', false, $context);
    Dans $result tu auras la réponse affichée par la page à qui tu auras envoyé la requête.

Discussions similaires

  1. Envoyer une requête http au serveur
    Par soso78 dans le forum VBScript
    Réponses: 2
    Dernier message: 08/10/2008, 10h54
  2. [3.5] Générer une requête POST (ou GET) Côté serveur
    Par CUCARACHA dans le forum ASP.NET
    Réponses: 11
    Dernier message: 09/04/2008, 12h08
  3. Requête POST coté serveur
    Par bambou dans le forum Langage
    Réponses: 2
    Dernier message: 19/09/2007, 17h58
  4. [XML] Créer un fichier sur le serveur avec le contenu d'une requête POST
    Par kingmandrax dans le forum Bibliothèques et frameworks
    Réponses: 10
    Dernier message: 27/10/2006, 00h18
  5. [AJAX] Retrouver xml envoyé du client au serveur (via méthode POST)
    Par leszek dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 20/05/2006, 16h07

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