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

HTML Discussion :

Envoi du caractère % en POST


Sujet :

HTML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 16
    Par défaut Envoi du caractère % en POST
    Bonjour à tous,

    J'ai une erreur 406 sur mon site chaque fois que le caractère % (pourcentage) est inscrit dans un champ de mon formulaire et que j'envoie en POST sur un fichier PHP.

    Mon hébergeur dit que le % en utf-8 est %25 et que je dois me servir de la fonction str_replace() de PHP. Mon problème est que j'ai l'erreur 406 avant même d'accéder à la page PHP. J'ai créé le fichier test.html pour un formulaire et un fichier test1.php pour tester au plus simple et j'ai toujours la même erreur.

    Le code de test.html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        <title>Ma page de test</title>
      </head>
      <body>
        <form action = "test1.php" method="post">
          Votre nom : <input type = "text" name = "nom"><br />
          <input type = "submit" value = "Envoyer">
        </form>
      </body>
    </html>
    Le code du fichier test1.php :
    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
     
    <?php
    ?>
    <html>
      <head>
        <title>Ma page de traitement</title>
      </head>
      <body>
    <?php
    // on teste la déclaration de nos variables
    if (isset($_POST['nom'])) {
            // on affiche nos résultats
            echo 'Votre nom est '.$_POST['nom'];
    }
    ?>
      </body>
    </html>
    J'ai même essayé avec un var_dump($_POST['nom']) et l'erreur 406 arrive avant. Alors, comment gérer le str_replace() ou toute autre solution, elle sera la bienvenue?

    Merci.

    Dany

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Il faut préciser l'attribut enctype du formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action = "test1.php" method="post" enctype="application/x-www-form-urlencoded">
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 16
    Par défaut
    Merci pour la réponse, mais cela ne change rien, j'ai toujours l'erreur 406 si je mets un % dans le champ.

    Dany

  4. #4
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Es-tu sûr qu'il s'agit du caractère % ? Tu l'as essayé seul ? Dans une chaine ? As-tu essayé avec un autre caractère spécial ?
    Avec ton code je ne vois aucun problème de mon côté.

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2011
    Messages : 16
    Par défaut
    Merci de vous intéresser à mon problème.

    Comme mon hébergeur m'a dit, %25 passe, mais je ne peux demander au client d'écrire %25 lorsqu'il parle de 100 % dans son message.

    J'ai essayé !"/$?&*()_+'éè#|\ et cela passe correctement, mais lorsqu'il y a le caractère % seul ou dans une phrase l'erreur 406 apparait.

    Je ne comprends rien.

    Ma première idée, c'est que cela venait des configurations d'apache, dont je n'ai aucun accès, car à mon avis cela se produit avant d'accéder à la page en PHP. Quand pensez-vous?

    Dany

  6. #6
    Membre actif

    Profil pro
    Inscrit en
    Août 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 19
    Par défaut
    Bon, déjà ton hébergeur est une grosse quiche !
    un conseil change en rapidement !

    un % en UTF-8 ne se code pas %25, mais bien %
    c'est exactement le même codage en ascii qu'en UTF-8 (je parle dans le cas du % bien sur)

    le problème vient de ton browser qui n'encode pas ce caractère en format "url-encoding"
    C'est un codage spécifique pour encoder les urls (et le contenu des variables transmises avec l'url)

    T'as essayé avec un autre browser ?

    sinon essayes de passer l'action du formulaire en GET.
    Tu va recupéré les variables dans ton url
    après, donnes nous l'url complète (surtout les variables passées)

Discussions similaires

  1. [C#]Problème d'envoi de caractères spéciaux vers RS232
    Par legillou dans le forum Windows Forms
    Réponses: 5
    Dernier message: 15/11/2007, 17h35
  2. [Debutant] envoi d'un message POST avec une URL
    Par Yannos94 dans le forum Entrée/Sortie
    Réponses: 11
    Dernier message: 14/06/2006, 10h22
  3. [Mail] Envoie de caractère spéciaux par mail() ?
    Par Oberown dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 16h13
  4. Envoi incomplet avec methode post
    Par Tr@nkill dans le forum ASP
    Réponses: 8
    Dernier message: 16/05/2005, 12h14
  5. Envoi de caractères entre applications
    Par Le Mage dans le forum Windows
    Réponses: 5
    Dernier message: 05/08/2004, 16h17

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