|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 | ||||
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
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 :
Code :
Merci. Dany |
||||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Il faut préciser l'attribut enctype du formulaire :
Code :
<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 ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
Merci pour la réponse, mais cela ne change rien, j'ai toujours l'erreur 406 si je mets un % dans le champ.
Dany |
|
|
00
|
|
|
#4 |
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
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é. |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
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 |
|
|
00
|
|
|
#6 |
|
Futur Membre du Club
![]() Inscription : août 2007 Messages : 16 ![]() |
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) |
|
|
10
|
|
|
#7 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
Pour la grosse quiche, je suis d'accord.
J'étais avec Firefox pour mes tests et comme vous me l'avez mentionné j'ai essayé avec ie8 et Google Chrome et j'ai le même résultat. J'ai ensuite passé l'action du formulaire en GET et voici l'URL : http://monsite.com/test1.php?nom=test+%25 Dany |
|
|
00
|
|
|
#8 |
|
Futur Membre du Club
![]() Inscription : août 2007 Messages : 16 ![]() |
et ça fonctionne en GET ou pas ? t'as une erreur 406 ?
|
|
|
00
|
|
|
#9 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
J'ai toujours l'erreur 406 même en GET.
Dany |
|
|
00
|
|
|
#10 |
|
Futur Membre du Club
![]() Inscription : août 2007 Messages : 16 ![]() |
Ton hébergeur est vraiment une GROSSE quiche
Apparemment ca viendrait de la configuration du module modSecurity d'apache qui considère ton % comme une tentative de piratage essayes de changer le nom de ton input mais un nom à la con du genre dR56_vg, pour voir si ça passe sinon demande des détails sur la config de modSecurity à ton hébergeur On va voir sa tête (si ca se trouve il sait meme pas ce que c'est que ce truc) |
|
|
00
|
|
|
#11 | ||
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
J'ai essayé en changent le nom dans input pour dR56_vg avec GET, voici les résultats :
Citation:
Citation:
Pour ma grosse quiche, je crois que c'est un employé, je vais essayer de communiquer avec son supérieur demain, mais qu'est-ce que je lui dis au juste? Dany |
||
|
|
00
|
|
|
#12 |
|
Futur Membre du Club
![]() Inscription : août 2007 Messages : 16 ![]() |
ca vient ben de modSecurity
pour t'en convaincre essayes autre chose que %25 par exemple "test%test" ca devrais marcher je pense |
|
|
00
|
|
|
#13 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
J'ai essayé le % suivie de presque tous les chiffres jusqu'à 99 et certaines lettres comme %da qui est d'après moi du hexadécimal et ça passe.
Mais avec test%test j'ai l'erreur 406. Pour moi juste un code hexadécimal après le % passe, rien d'autre. Dany |
|
|
00
|
|
|
#14 | ||
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
J'ai finalement reçu une réponse de mon hébergeur, sa solution passe par du JavaScript que je trouve assez complexe à implémenter dans tous mes formulaires, qui en plus ne font que changer le % en %25 lors de l'envoi. Il faudrait en plus que je replace le %25 en % lors de l'insertion en base de données ou à la lecture.
J'aimerai savoir ce que vous en pensez? Voici son exemple : Code :
Dany |
||
|
|
00
|
|
|
#15 |
![]() ![]() Josselin Développeur Web Inscription : janvier 2004 Messages : 9 050 ![]() |
Change d'hébergeur.
|
|
|
10
|
|
|
#16 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
C'est probablement ce que je vais faire, mais pour l'instant je suis pris avec pour encore presque un an, car je viens tout juste de renouveler mon contrat.
Merci quand même à vous tous. Dany |
|
|
00
|
|
|
#17 |
|
Membre expérimenté
![]() Développeur informatique Inscription : janvier 2011 Messages : 309 ![]() |
Qui est ton hébergeur ?
|
|
|
00
|
|
|
#18 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
Bonjour à tous,
J'ai finalement rejoint le supérieur du technicien et ils ont finalement désactivé la règle 950107 pour mon site web. Puis je dois gérer moi-même l'insertion du % en base de données. Mais avant de « patcher » mon code, j'aimerai savoir s'il y a vraiment un trou de sécurité si je ne le fais pas. Tumoo: mon hébergeur est de Montréal et pour l'instant je ne veux pas lui faire mauvaise presse. Dany |
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() Thomas Ingénieur développement logiciels Inscription : juillet 2007 Messages : 741 ![]() |
Le % est protégé surement pour éviter les injections SQL (et autres joyeusetés que je ne connais pas).
Donc, OUI il faut que tu fasses gaffes. Vérifie bien les données entrées par l'utilisateur avant de faire des requêtes avec ! |
|
|
00
|
|
|
#20 |
|
Invité de passage
![]() Inscription : juin 2011 Messages : 12 ![]() |
C'est bien ce que je pensais, mais je trouve bizarre que dans le manuel PHP sous mysql_real_escape_string l'on retrouve :
Note: mysql_real_escape_string() n'échappe ni %, ni _. Ce sont des jokers en MySQL si combinés avec LIKE, GRANT, ou REVOKE. Si je dois échapper le % avant de le mettre dans ma base de données, pourquoi ne pas l'avoir inclus dans mysql_real_escape_string? Dany |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com