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 :

POST avec header() comment faire?


Sujet :

Langage PHP

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut POST avec header() comment faire?
    Je sais changer de page grace à header (location: etc.);
    Est il possible d'utiliser cette méthode pour transmettre en même temps que la redirection, des données POST ?
    Sinon, j'arrive à transmettre avec cURL mais sa ne redirige pas.

    J'arrive à transmettre des donné POST
    J'arrive à rediriger
    Mais je n'arrive pas à faire les 2 en même temps!

    Peut importe la méthode pour moi, l'important est que la variable transmise en POST n'apparaisse jamais dans la source.

    Merci d'avance, amis développeurs

  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 777
    Points
    17 777
    Par défaut
    cURL fait office de client donc il ne fera que suivre les redirections, ce n'est pas à lui d'en indiquer, à moins de le faire dans votre script après via header

    Avez-vous étudié le code HTTP 307 ?

  3. #3
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    201
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 201
    Points : 241
    Points
    241
    Par défaut
    pas possible de faire les 2.
    Dans la page de redirection tu peux essayer de recuperer les infos que tu aimerai avoir.

  4. #4
    Membre expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Points : 3 145
    Points
    3 145
    Par défaut

    Utilise une session si tu veux transmettre des données entre 2 pages sans les faire apparaitre dans l'adresse.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par trotters213 Voir le message
    Utilise une session si tu veux transmettre des données entre 2 pages sans les faire apparaitre dans l'adresse.
    Pour la session, c'est pas possible car c'est pour transmettre les infos à un autre site.

    Citation Envoyé par acirfa Voir le message
    pas possible de faire les 2.
    Dans la page de redirection tu peux essayer de recuperer les infos que tu aimerai avoir.
    Je n'ai pas très bien compris ce que tu à voulu dire, mais comment peux tu est sur que c'est impossible?
    Il s'agit tout simplement de valider un formulaire POST sans qu'il apparaisse dans la source.

  6. #6
    Membre régulier Avatar de B.Moncef
    Étudiant
    Inscrit en
    Août 2007
    Messages
    75
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 75
    Points : 88
    Points
    88
    Par défaut
    sans qu'il apparaisse dans la source
    Tu veux dire quoi par la ?

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    "sans qu'il apparaisse dans la source",
    C'est à dire un formulaire envoyé automatiquement par php.
    Et non pas un formulaire en HTML

  8. #8
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Salut,

    Citation Envoyé par dawadam Voir le message
    Je sais changer de page grace à header (location: etc.);
    Est il possible d'utiliser cette méthode pour transmettre en même temps que la redirection, des données POST ?
    Pour répondre à cette question : non, ce n'est pas possible. Une redirection avec Location: induit toujours un GET.

    Ton raisonnement semble un peu confus, tu nous dis que tu veux envoyer des données en POST avec PHP, mais utiliser cURL ne te convient pas...
    Soit les données sont envoyés avec PHP et le navigateur ne voit rien, soit elles sont envoyés par le navigateur et elles apparaissent forcément quelque part pour celui-ci...

    Peut-etre tu pourrais préciser ce que tu cherches vraiment à faire ?

  9. #9
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bonjour a tous,
    Je ne suis pas sur d'avoir tres bien compris la question. Néanmoisn, si cette dernier est : comment envoyer depuis php des données post et get en meme temps :
    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
    <?php
    $GET_DATA = array ('foo' => 'bar', 'bar' => 'baz');
    $GET_DATA = http_build_query($GET_DATA);
    $POST_DATA = array ('foo' => 'bar', 'bar' => 'baz');
    $POST_DATA = http_build_query($POST_DATA);
     
    $context_options = array (
            'http' => array (
                'method' => 'POST',
                'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
                ."Location: http://www.example.com\r\n"
                ."Content-Length: " . strlen($POST_DATA) . "\r\n",
                'content' => $POST_DATA
                )
            );
     
    $context = context_create_stream($context_options)
    $fp = fopen('http://www.example.com?'.$GET_DATA, 'r', false, $context);
    fpassthru($fp);
    fclose($fp);
    ?>

  10. #10
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par CR_Gio Voir le message
    Je ne suis pas sur d'avoir tres bien compris la question. Néanmoisn, si cette dernier est : comment envoyer depuis php des données post et get en meme temps
    Ce n'est pas sa
    Je me moque du get, je doit transmettre une donné à un autre site, un code qui ne doit pas etre visible meme dans la source de la page.
    Donc je ne peut pas faire simplement un formulaire POST avec un hidden.
    Mais je veut arriver au meme résultat.

    Citation Envoyé par Taum
    Ton raisonnement semble un peu confus, tu nous dis que tu veux envoyer des données en POST avec PHP, mais utiliser cURL ne te convient pas...
    Car avec cURL, j'ai réussi à envoyer des information POST ce qui est très bien, mais sa n'a aucune influence sur l'utilisateur car il n'est pas redirigé. Je voudrai que sa fasse comme un simple formulaire HTML: sa transmet les donné en redirigent

  11. #11
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Ce n'est pas sa Je me moque du get, je doit [...]
    Bizarement je le prend mal .....peut etre est ce la fatigue ...

    Je te dirai gentillement d'allé voir les regle du forum tu y apprendra a poser une question. En gros : personne n'a rien compris a ta question, a un moment, faut se remetre en question ....

    Est il possible d'utiliser cette méthode(il parle de la fonction header()) pour transmettre en même temps que la redirection, des données POST ?
    Je te repond oui mais le comportement du navigateur va dépandre ensuite des donné que tu lui a donné. Est ce vraiment transmetre des donné au navigateur/client/l'utilisateur que tu souhaite ?

    Il s'agit tout simplement de valider un formulaire POST sans qu'il apparaisse dans la source.
    Tu veux dire quoi par la ?
    Je voudrai que sa fasse comme un simple formulaire HTML: sa transmet les donné en redirigent
    Tu ressasse mon jeune ami. Casse toi la tete a expliquer ton probeme au lieu d'utiliser des therme que tu ne metrise pas comme la redirection l'envoi de donné et j'en passe ...



    _______________________________
    A qui a la meileurs boule de cristal
    _______________________________

    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
     
     
    <?php
     
    // le client/l'utilisateur fait une requete sur cette page. Seul ** peut nous dire comment il y arrive ...
     
    // On envoi des données en POST a un server tierce
    //==================================
    $POST_DATA = array ('foo' => 'bar', 'bar' => 'baz');
    $POST_DATA = http_build_query($POST_DATA);
     
    $context_options = array (
            'http' => array (
                'method' => 'POST',
                'header'=> "Content-type: application/x-www-form-urlencoded\r\n"
                ."Content-Length: " . strlen($POST_DATA) . "\r\n",
                'content' => $POST_DATA
                )
            );
     
    $context = context_create_stream($context_options)
    $fp = fopen('http://www.example.com', 'r', false, $context);
    //on verifie la reponse du serveur tiers : les donné son conforme ou non
    fclose($fp);
     
    // On redirige le client/l'utilisateur vers la page X.php
    // si ....
    header('Location: http://www.exemple.com/X.php;');
    ?>

  12. #12
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    J'ai malheuresement déjà l'impression de me cassé la tête, et je le fait tellement bien qu'on prend mal ce que je dit. Et je ressasse car sa me parait tellement simple que je ne sais pas comment expliquer.

    je n'ai pas pris le temps de tester le code de CR_Gio car la la redirection ne se fait pas en même temps que l'envoi des données POST, mais j'ai bien compris l'idée et je pensse (j'espère) qu'il existe un moyen plus pratique d'ailleur dans mon cas, c pas sur que sa marche.

    Est ce vraiment transmetre des donné au navigateur/client/l'utilisateur que tu souhaite ?
    Là je ne connais pas ces termes mais sa sonne bien.
    Ne m'en veuillez pas si je galère a demander conseils, c'est que j'en ai pas l'habitude,
    en plus je suis un programmeur à l'ancienne qui a tendance a ignorer les appellations techniques pour ce concentrer sur ce qui ce passe.
    Je suis dsl pour vous, si sa énerve ... (je force pas à poster non plus )

    Bref j'ai entendu parler de HttpRequest et j'ai regarder dans le manuel php, sa à l'air d'avoir une bonne tête, je v tester et conclure si sa marche, sinon je v me creuser la tete (avec code à l'apuis) pour expliquer le problème. Et je ferai sa le mieu du monde pour que mon amis CR_Gio soit fier de moi! (à lire sans être fatigué)

  13. #13
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    Bon bas la class HttpRequest, sa avais l'air niquel mais sa ne fonctionne pas avec les version de PHP inférieurs à la 5, et mon serveur n'en ai pas encore là.

    alors voila ce que je veut faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action='http://www.autre_site.com/' method='post'>  
    <input type='hidden' name='pass' value='0123'>
    <input type='submit' value='ok'>
    </form>
    Donc la valeur "pass" est transmise a l'autre site et l'utilisateur est amené à la page de l'autre site.

    Dans mon cas, il est indispenssable que la valeur de "pass" soit masquée à l'utilisateur donc je ne peut pas utiliser un formulaire HTML.
    Et je ne peut utiliser une autre méthode que le POST pour transmettre car cela dépend de l'autre site, donc je suis bien embété.

    Voila tout, j'espère que c'est assé clair pour permettre à quelqu'un de trouver une solution sinon je v etre obligé de me compliquer la vie à l'infinie.

  14. #14
    Membre éprouvé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 657
    Points : 910
    Points
    910
    Par défaut
    Donc la valeur "pass" est transmise a l'autre site et l'utilisateur est amené à la page de l'autre site.
    Avec hidden, elle est bien "masquée" à l'utilisateur dans le sens où il ne la voit pas dans son navigateur.

    Maintenant si tu ne veux pas qu'elle apparaisse non plus dans le code de la page, ou dans un échange quelconque avec le client, c'est impossible pour une raison évidente. Tu ne peux pas demander à un navigateur d'envoyer une donnée quelque part si tu ne lui donnes pas la donnée en question.
    C'est comme si tu donnais rendez-vous à quelqu'un sans lui donner l'adresse.
    C'est comme si tu demandais à quelqu'un de te faire un gateau sans lui en donner la recette.
    Ca n'a aucun sens, point barre.

    Ce que tu peux faire, c'est partager un secret avec le serveur qui reçoit les données, et transmettre les données par le client en crypté, auquel cas le client sait ce qu'il transmet mais ne peut rien en faire. Evidemment, cela nécessite la coopération des 2 serveurs.

  15. #15
    Membre actif
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    334
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 334
    Points : 218
    Points
    218
    Par défaut
    Bon, ba merci pour tout.
    C vrai que sa parais logique.
    Mais je reste quant même perplexe ...

    Car après tout, lors d'une redirection avec header(), si on mais des infos GET, la page résultante est bien transmise au navigateur. Donc à moins que les concepteurs ou oublier de prévoir cette fonction en PHP, je ne voit pas ou est le pb technique.

    tampis, je v faire autrement de toute façon

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

Discussions similaires

  1. rapatrier un fichier avec telnet, comment faire?
    Par bomonde dans le forum Windows
    Réponses: 1
    Dernier message: 23/01/2009, 17h57
  2. loading avec lightbox ! comment faire
    Par spax dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 07/10/2008, 17h54
  3. Internet Explorer sur PDA avec GPS : comment faire un lien vers le GPS
    Par sjachym dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 21/06/2008, 00h45
  4. [JpGraph] Protection d'images avec filigrane, comment faire !
    Par Meewix dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 16/11/2006, 11h09

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