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 :

? qui s'ajoute aprés l'adresse lors d'un POST


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut ? qui s'ajoute aprés l'adresse lors d'un POST
    Bonjour,
    Je viens de remarquer un comportement "étrange" sur le referer d'une de mes pages lors de l'envoie de formulaire.
    J'ai un formulaire basique avec un jeton pour pouvoir vérifier la provenance du formulaire à la réception:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <form id="idFormAjout" method="POST" action="validation_ajout.php">
    	<input type="hidden" name="token" id="token" value="<?php echo $token; ?>"/> <!--Jeton de sécurité-->
    	<input type="submit" id="btnSendForm" value="Ajouter à la base">
    </form>
    Dans ma page "validation_ajout.php", je vérifie le jeton, si il est bon, je lance le traitement de mon formulaire avec les redirections qui vont bien selon les cas.
    Le problème c'est que le jeton n'était jamais valide, j'ai donc cherché et je me suis rendu compte que le probléme venait du referer.
    En effet dans ma vérification du jeton, je faisais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if($_SERVER['HTTP_REFERER'] == 'ajout.php') //ajout.php étant la page ou se situe le formulaire
    et qu'en je faisait un echo du $_SERVER['HTTP_REFERER'] j'obtenais "ajout.php?" au premier envoie du formulaire puis "ajout.php"(normal) aux autres.
    Je ne comprends pas d'où vient le "?", j'ai un autre formulaire qui suit le même schéma mais qui n'a pas ce probléme...

    Pour contourner le probléme j'ai fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $referer = array('ajout.php','ajout.php?');
     if(in_array($_SERVER['HTTP_REFERER'], $referer))
    mais j'aimerais comprendre pourquoi il ajoute ce ?.

    Est-ce normal? Pourquoi cela fait-il cela?

    Si quelqu'un peut m'expliquer ce serait gentil =).
    Merci.

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 579
    Points : 1 992
    Points
    1 992
    Par défaut
    Bonjour, la variable $_SERVER['HTTP_REFERER'] est déconseillé http://php.net/manual/fr/reserved.variables.server.php après je pense que le ? correspond aux paramètres regarde bien par exemple sur developpez lorsque tu as une page php tu as ? suivit des paramètres puisque tu récupères ici une url je pense que cela est l'explication.

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Merci pour votre réponse.

    En effet j'avais vu dans la doc qu'il ne fallait pas faire confiance à $_SERVER['HTTP_REFERER'] mais ce n'est qu'une mesure supplémentaire dans la sécurité, elle se fait principalement par un jeton unique généré.
    En effet je vois bien les ? mais ce n'est que lorsque l'on fait un GET non? ou le fait de mettre l'action sur une url constitue un GET en soi?

  4. #4
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 579
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 579
    Points : 1 992
    Points
    1 992
    Par défaut
    Peux tu nous donner le code complet? de plus je pense que cela est intéressant que tu poste le code ou cela fonctionne pour éviter des recherches inutiles

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2015
    Messages : 226
    Points : 119
    Points
    119
    Par défaut
    Bonjour, désolé pour ce délai de réponse, je n'avais pas accès à mon code toutes la fin de semaine dernière.

    J'avais commencé a mettre tout le code pour celui qui fonctionnait comme vous me l'avez demandé et cela m'a permis de mettre le doigt sur ce que je cherchais.
    Pour passer de ma page principale à la page d'ajout, je passer par un form avec un simple bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <form action="ajout.php">
    	<input type="submit" value="Ajouter" />
    </form>
    Aucune méthode n'étant renseignée, il applique un GET mais sans variable d'où le ? (C'est que vous aviez identifié dans votre réponse il me semble).
    J'ai essayé en appliquant la méthode POST au formulaire et le ? a disparu mais le problème de resubmition apparait. Je vais donc laisser la comparaison du referer avec un array pour ne pas avoir à traiter le double post.
    Je disais aussi que la 2nd fois que j'arrivais sur la page (avec un redirect), le ? n'était plus la. Comme j'avais renseigné l'url simple "ajout.php", la redirection se faisait normalement sans paramètres GET.

    Je trouve l'utilisation du form pour obtenir un bouton suivant un lien très pratique, mais est-elle correcte? Ou vaudrait-il mieux utiliser un lieu masqué en bouton avec du CSS?

    En tout cas merci pour l'aide que vous m'avez apporté.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/09/2012, 13h39
  2. [Batch] Ajouter une 3eme adresse DNS a un poste ?
    Par Sibe39 dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 29/03/2011, 03h12
  3. probleme de conflit d adresse lors de l ajout d un namespace
    Par ryoussef19 dans le forum VC++ .NET
    Réponses: 7
    Dernier message: 26/04/2007, 09h39
  4. Réponses: 6
    Dernier message: 19/06/2006, 09h38
  5. [C#] [MSDE] Connexion qui se ferme après appel de fonction
    Par trotters213 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 23/03/2005, 16h30

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