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 :

formulaire POST envoyé sur une page en GET


Sujet :

Langage PHP

  1. #1
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut formulaire POST envoyé sur une page en GET
    Bonjour
    Moment de faiblesse passagère, j'ai besoin d'un petit éclaircissement technique...
    Que se passe-t-il exactement, au niveau notamment des requêtes HTTP, lorsqu'on envoie un formulaire POST avec comme "action" une page qui a une adresse en GET ?
    Comment est-ce qu'on peut obtenir un objet $_GET et un objet $_POST avec une seule requête ?

    Merci d'avance...

  2. #2
    Membre averti Avatar de Hug0_76
    Profil pro
    Inscrit en
    Août 2006
    Messages
    292
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 292
    Points : 332
    Points
    332
    Par défaut différence
    Salut,

    et bien heu..... tu connais la différence entre $_POST et $_GET????
    Sinon ben il te suffit decopier le tableau $_POST dans le tableau $_GET!
    voila c tout

  3. #3
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par Hug0_76
    Salut,

    et bien heu..... tu connais la différence entre $_POST et $_GET????
    Sinon ben il te suffit decopier le tableau $_POST dans le tableau $_GET!
    voila c tout
    Merci de ta participation ! Mais t'es passé à côté de la question

  4. #4
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    Pour moi, c'est récupéré par une variable de serveur qui ne peut contenir qu'1 valeur:
    $_SERVER['REQUEST_METHOD']
    Que renverrait cette variable si on pouvait passer du get et du post en même temps ?
    Ou alors j'ai pas bien compris la question

  5. #5
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par renaudjuif
    Que renverrait cette variable si on pouvait passer du get et du post en même temps ?
    Ou alors j'ai pas bien compris la question
    Chuis bien d'accord. Si je poste c'est parce que j'ai réussi à afficher un objet $_GET et un objet $_POST (sans bidouiller) dans la même page. Alors je me dis que j'ai raté quelque chose.

  6. #6
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    Ce que je fais habituellement au début de ma page qui récupère les variables, quand je ne sais pas la méthode (post ou get) utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $mavar=(isset($_POST['mavar']))? $_POST['mavar']: $_GET['mavar'];
    //et traitement de $mavar...
    Là j'suis à côté de la plaque
    J'ai posté en même temps que la réponse

  7. #7
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Citation Envoyé par renaudjuif
    Ce que je fais habituellement au début de ma page qui récupère les variables, quand je ne sais pas la méthode (post ou get) utilisée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $mavar=(isset($_POST['mavar']))? $_POST['mavar']: $_GET['mavar'];
    //et traitement de $mavar...
    Là j'suis à côté de la plaque
    J'ai posté en même temps que la réponse
    Autant remettre le register global a on...

    Sinon non sa ne pose pas de souci.

    Une requete HTTP exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    POST /search?client=firefox-a&rls=org.mozilla%3Afr%3Aofficial_s&hl=fr&q=sdff&meta=&btnG=Recherche+Google HTTP/1.1
    Host: www.google.fr
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.8.0.6) Gecko/20060728 Firefox/1.5.0.6
    Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    Accept-Language: fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
    Accept-Encoding: gzip,deflate
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
    Keep-Alive: 300
    Connection: keep-alive
    Referer: http://www.google.fr/firefox?client=...la:fr:official
    Content-Type: application/x-www-form-urlencoded
    Content-Length: 166
    vb_login_username=sqdqd&vb_login_password=&s=&do=login&vb_login_md5password=437057b1e7c92a427c60ef0fb9b616ec&vb_login_md5password_utf=437057b1e7c92a427c60ef0fb9b616ec
    On voit bien dans cet exemple (+/- bancal) on constate bien que l'url appelé contient les variables en GET, et à la fin les variables mises en post.

  8. #8
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par ePoX
    On voit bien dans cet exemple (+/- bancal) on constate bien que l'url appelé contient les variables en GET, et à la fin les variables mises en post.
    OK... donc on peut bien mixer les deux sans souci, a priori ?

  9. #9
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    Oui, effectivement, un code comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?
    print_r($_POST);
    print_r($_GET);
    echo "<br>method : ".$_SERVER['REQUEST_METHOD'];
    ?>
    <form action='1.php?varGet=toto' method='post'>
    	<input type='text' name='varPost'>
    	<input type='submit'>
    </form>
    renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Array
    (
        [varPost] => test
    )
    Array
    (
        [varGet] => toto
    )
    method : POST
    mais ça reste une méthode post: l'action définie dans le formulaire.
    apparament, le $_GET récupère ce qu'il y a dansd l'url, sans se soucier de la méthode invoquée...

  10. #10
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Citation Envoyé par Eusebius
    OK... donc on peut bien mixer les deux sans souci, a priori ?
    Strictement aucun souci.

    Le tout étant dans ta page de bien définir ce que tu attends d'ou. Ceci afin de ne pas faire comme le suggérais renaud. Cad réactiver le register global d'une manière déguisé.

  11. #11
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par ePoX
    Strictement aucun souci.
    Le tout étant dans ta page de bien définir ce que tu attends d'ou. Ceci afin de ne pas faire comme le suggérais renaud. Cad réactiver le register global d'une manière déguisé.
    Dans la mesure où la variable est bien traitée après (principalement côté sécurité pour être sur qu'on ne reçoit pas n'importe quoi) et que ce n'est pas généralisé, ça peut être utile sur certaines pages appelées par différents scripts dont les méthodes diffèrent, non ?

  12. #12
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par ePoX
    Strictement aucun souci.

    Le tout étant dans ta page de bien définir ce que tu attends d'ou. Ceci afin de ne pas faire comme le suggérais renaud. Cad réactiver le register global d'une manière déguisé.
    T'inquiète, pas mon genre.
    Citation Envoyé par renaudjuif
    Dans la mesure où la variable est bien traitée après (principalement côté sécurité pour être sur qu'on ne reçoit pas n'importe quoi) et que ce n'est pas généralisé, ça peut être utile sur certaines pages appelées par différents scripts dont les méthodes diffèrent, non ?
    Non, rien que sur le petit exemple sur lequel je travaillais, il y avait une collision de noms possible.

  13. #13
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Citation Envoyé par renaudjuif
    Dans la mesure où la variable est bien traitée après (principalement côté sécurité pour être sur qu'on ne reçoit pas n'importe quoi) et que ce n'est pas généralisé, ça peut être utile sur certaines pages appelées par différents scripts dont les méthodes diffèrent, non ?
    CE n'est même pas une question de sécurité. juste une question de rigueur. Je l'envoit en post, alors je tente de le recevoir en post.

    Pas de probalitié ou de jncchépaskoi.com que tu ne saches pas d'ou provienne telle valeur.

    Tenter d'exprimer clairement ce que tu programmes sera deja un gain de temps pour tous ceux qui repasseront derrière toi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T'inquiète, pas mon genre.
    mais encore ?? j'ai juste pas compris xD

  14. #14
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par ePoX
    CE n'est même pas une question de sécurité. juste une question de rigueur. Je l'envoit en post, alors je tente de le recevoir en post.
    Pour être + clair, exemple:

    1 page avec des liens href qui pointent sur 1 autre page : mapage.php
    La méthode est GET (href=mapage.php?var=1 par ex.)
    mapage.php affiche le formulaire correspondant à var=1.
    Ce formulaire est en méthode POSTet en action $_SERVER['PHP_SELF']
    donc :
    Le GET est utilisé pour l'affichage du formulaire
    Le POST est utilisé pour le traitement du formulaire.
    Ma variable var n'est pas renommée et s'appelle quelle que soit la méthode "var".
    Puisqu'elle désigne la même valeur, son nommage ne change pas.

    Donc je sais exactement dans quel cas est utilisé quelle méthode GET/POST
    et je jécupère ça avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mavar=(isset($_POST['mavar']))? $_POST['mavar']: $_GET['mavar'];
    y vois-tu là un manque de clarté dans le code?

  15. #15
    Membre expert

    Profil pro
    imposteur
    Inscrit en
    Avril 2003
    Messages
    3 308
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : imposteur

    Informations forums :
    Inscription : Avril 2003
    Messages : 3 308
    Points : 3 377
    Points
    3 377
    Par défaut
    Citation Envoyé par renaudjuif
    y vois-tu là un manque de clarté dans le code?
    Non c'est très clair : tu donnes un moyen formidable à l'utilisateur pour te faire gober qu'une information vient d'un formulaire alors que ce n'est pas le cas.
    Fais la même chose avec les sessions, que je puisse venir me connecter sur ton site avec un compte admin

    Je te conseille de lire cet article de la doc, relativement court : Utilisation des variables super-globales

  16. #16
    Membre éprouvé
    Inscrit en
    Juillet 2004
    Messages
    1 027
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 027
    Points : 1 164
    Points
    1 164
    Par défaut
    Citation Envoyé par renaudjuif
    Pour être + clair, exemple:

    1 page avec des liens href qui pointent sur 1 autre page : mapage.php
    La méthode est GET (href=mapage.php?var=1 par ex.)
    mapage.php affiche le formulaire correspondant à var=1.
    Ce formulaire est en méthode POSTet en action $_SERVER['PHP_SELF']
    donc :
    Le GET est utilisé pour l'affichage du formulaire
    Le POST est utilisé pour le traitement du formulaire.
    Ma variable var n'est pas renommée et s'appelle quelle que soit la méthode "var".
    Puisqu'elle désigne la même valeur, son nommage ne change pas.

    Donc je sais exactement dans quel cas est utilisé quelle méthode GET/POST
    et je jécupère ça avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $mavar=(isset($_POST['mavar']))? $_POST['mavar']: $_GET['mavar'];
    y vois-tu là un manque de clarté dans le code?
    Très personnellement je ne comprend pas pourquoi tu induis une complèxitè supplémentaire, qui de surcroit est sujette à des comportement inattendus, sur des opérations aussi simple.

    Enfin ce n'est que mon avis.

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

Discussions similaires

  1. Passage d'un formulaire à un autre sur une 2ème page
    Par jlbrenas dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 25/01/2007, 23h43
  2. Post sur une page https
    Par Lethal dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 31/08/2006, 18h41
  3. imprimer formulaire sur une page
    Par the big ben 5 dans le forum Access
    Réponses: 1
    Dernier message: 16/08/2006, 20h33
  4. Réponses: 2
    Dernier message: 30/11/2005, 12h19

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