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 :

Générer une requete POST sans formulaire (avec redirection de l'utilisateur)


Sujet :

Langage PHP

  1. #1
    Membre confirmé Avatar de thecanea
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 131
    Par défaut Générer une requete POST sans formulaire (avec redirection de l'utilisateur)
    Bonjour à tous,

    Je souhaiterai permettre à mon script php lorsqu'il est appelé (via un clic sur un lien d'un utilisateur) par exemple : http://www.monsite.fr/module/va_poster.php ==> si l'utilisateur clic sur ce lien, j'aimerai avoir le comportement suivant :
    1-le script va_poster.php s'éxécute,
    2-il génère une "requete" en méthode POST en passant en parametre une chaine de caractères, et il doit rediriger l'utilisateur vers une autre définie dans le code; par exemple :
    http://www.monsite.fr/module2/acceuil.php (avec : $_POST['chaine']="machainequejeveuxpasserparpost")...

    Voilà. Le "problème" c'est que je ne vois pas comment faire pour le mieux. Je souhaiterai éviter requetage Ajax ou utilisation de Javascript (pr rediriger....); et je ne sais pas quelle fonction php utiliser :
    j'ai entendu parler/lu :
    -curl()
    -stream_context de PHP
    -http_post_data() ou http_post_fields()

    Et du coup je ne vois pas comment faire.

    J'ai une autre question subsidiaire, une fois la requete POST générée et l'utilisateur dirigé vers module2/acceuil.php, puis-je vérifier l'adresse IP du serveur de la page qui a généré l'envoi POST (retrouver l'adresse IP de mon http://www.monsite.fr/module/va_poster.php, pour vérifier que la requete provient bien de cette page...).

    J'espère avoir exprimé clairement mon besoin,

    Et merci d'avance pour vos conseils, suggestions et solutions éventuel(le)s !

    Thec

  2. #2
    Membre émérite
    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
    Par défaut
    salut,
    Je ne comprends pas le but ultime de tout ceci.
    Tu as une page A. En l'ouvrant, tu génères une requete POST qui t'envoie sur une page B du MEME domaine.
    Question : pourquoi ne pas tout rassembler en une seule page ?
    Pour l'ip, elle peut etre recuperée via la variable surperglobale $_SERVER["HTTP_REFERER"]
    Z.

  3. #3
    Membre confirmé Avatar de thecanea
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 131
    Par défaut
    En fait je veux faire "échanger" deux modules sur le même serveur, tout en empéchant un tiers de simuler mon échange (d'ou la vérification via IP, que j'ai besoin de récupérer).

    Sur ma page A : je génère une redirection de l'utilisateur avec des paramètres POST générés par le script.
    Sur la page B : je vérifie que l'adresse IP de l'émetteur (ici A) est bien la meme que B, et je recupere les données de POST.

    Deux projets différents => on peut pas regrouper sur une meme page.
    Et en fait ce que je veux savoir : c'est le code à utiliser pour générer la redirection avec les paramètres souhaités en POST

  4. #4
    Membre émérite
    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
    Par défaut
    Salut,
    curl ne conviendra pas car il permet d'appeler une page exterieur depuis un script. C'est toujours la page A qui s'execute.

    Par contre, c'est la fonction header qui me vient a l'esprit en 1er, pour une redirection PHP.
    Et voila ce que je t'ai déniché : http://fr2.php.net/manual/fr/function.header.php#89447

    Z.

  5. #5
    Membre confirmé Avatar de thecanea
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 131
    Par défaut
    Ok, c'est sympa, j'venais de voir aussi la fonction header() avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    $host = "www.example.com";
    $path = "/path/to/script.php";
    $data = "data1=value1&data2=value2";
    $data = urlencode($data);
     
    header("POST $path HTTP/1.1\r\n" );
    header("Host: $host\r\n" );
    header("Content-type: application/x-www-form-urlencoded\r\n" );
    header("Content-length: " . strlen($data) . "\r\n" );
    header("Connection: close\r\n\r\n" );
    header($data);
    ?>
    Je vais tester voir si ça marche comme je le souhaite, et je vous tiens au courant

  6. #6
    Membre confirmé Avatar de thecanea
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Côte d'Or (Bourgogne)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 131
    Par défaut
    Euh, j'ai testé le code donné précedemment, et en fait :
    -d'une je n'arrive pas à être redirigé vers ma page sur laquelle s'effectue le POST
    -de deux : mon navigateur (FF, Opera, Chrome) me propose de télécharger le fichier plutôt que d'exécuter le script...

    Des idées ?
    Vous avez déjà fait ce genre d'opération ?

    Merci d'avance, parce que là je tourne en rond et j'commence à perdre les idées claires^^

  7. #7
    Membre éclairé
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Juin 2008
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Juin 2008
    Messages : 522
    Par défaut
    J'ai le même problème !

  8. #8
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Salut,

    vous pouvez trouver des informations nécessaire sur cURL dans l'article PHP : l'extension cURL

    une requête POST devrait ressembler à

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $ch = curl_init('http://www.unsite.com/page-formulaire');
    curl_setopt($ch, CURLOPT_POST, TRUE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, "nom=Jean&numero=002");
    curl_exec($ch);

  9. #9
    Membre Expert
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Par défaut
    Si vous ne possedez pas cURL, d'autres alternatives existent :

    - HTTP POST from PHP, without cURL
    - ou encore pecl_http

  10. #10
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Zend_Http_Client est un composant très pratique aussi

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/10/2009, 15h16
  2. Probleme avec une requete POST
    Par y0ug dans le forum Réseau
    Réponses: 3
    Dernier message: 19/08/2007, 17h57
  3. Traiter une requête POST avec attachement
    Par queto_putito dans le forum Langage
    Réponses: 3
    Dernier message: 30/07/2007, 14h40
  4. Réponses: 3
    Dernier message: 20/03/2007, 14h30
  5. Poster une requete POST avec fsockopen
    Par ePoX dans le forum Langage
    Réponses: 8
    Dernier message: 27/11/2005, 15h20

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