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 et encodage


Sujet :

Langage PHP

  1. #1
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut Formulaire et encodage
    Bonjour à tous,

    J'ai un petit soucis au niveau des formulaires, tout d'abord le code de la page :

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <?php
    header		(	'content-type: text/html; charset=utf-8'	)	;
    ob_start	(	'ob_gzhandler'	)	;
     
    echo	'<?xml version="1.0" encoding="utf-8"?>'	;
    echo	'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'	;
    echo	'<html xmlns="http://www.w3.org/1999/xhtml" lang="fr-fr">'	;
    echo	'<head>'	;
    	echo	'<meta http-equiv="content-type" content="text/html; charset=UTF-8" />'	;
    	echo	'<title>TEST</title>'	;
    echo	'</head>'	;
    echo	'<body>'	;
     
    echo	'<form method="POST" action="./test.php">'	;
    	echo	'<input type="text" name="q" value="'	;
    	isset	(	$_REQUEST	[	'q'	]	)	?	$q	=	$_REQUEST	[	'q'	]	:	$q	=	NULL	;
    	echo	$q	;
    	echo	'" />'	;
    	echo	'<input type="submit" value="Submit" />'	;
    echo	'</form>'	;
    echo	'<br />'	;
     
    echo	'<form method="GET" action="./test.php">'	;
    	echo	'<input type="text" name="q" value="'	;
    	isset	(	$_REQUEST	[	'q'	]	)	?	$q	=	$_REQUEST	[	'q'	]	:	$q	=	NULL	;
    	echo	$q	;
    	echo	'" />'	;
    	echo	'<input type="submit" value="Submit" />'	;
    echo	'</form>'	;
    echo	'<br />'	;
     
    if	(	isset	(	$_REQUEST	[	'q'	]	)	)
    {
    	echo	$_REQUEST	[	'q'	]	;
    }
     
    echo	'</body>'	;
    echo	'</html>'	;
     
    ob_end_flush	(	)	;
    ?>
    Naviguateur : Firefox dernière version
    La valeur entrée est : napoléon est mort

    Pour le premier formulaire (méthode POST), aucun problème :
    - l'adresse URL reste la même
    - la valeur est récupérée dans les formulaires en UTF-8
    - la valeur est affichée en UTF-8

    Pour le second formulaire (méthode GET), aucun problème :
    - l'adresse URL devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /test.php?q=napoléon+est+mort
    - la valeur est récupérée dans les formulaires en UTF-8
    - la valeur est affichée en UTF-8

    Maintenant si j'entre directement dans la barre d'adresse :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /test.php?q=napoléon est mort
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /test.php?q=napoléon+est+mort
    - l'adresse URL devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /test.php?q=napol%E9on%20est%20mort
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /test.php?q=napol%E9on+est+mort
    - la valeur récupérée dans le formulaire et celle affichée donnent :

    Une erreur 406 suivie d'une erreur 404 sur Linux (serveur LAMP) et la lettre "é" de vient "?" sur Windows (serveur WAMP)

    Pour Windows, je pourrais à la rigeur utiliser la fonction utf8_encode pour la partie affichage uniquement.
    Si je fais de même pour la valeur récupérée dans le formulaire et que je le resoumet alors "é" deviendra cette fois "é"

    Pour Linux je sèche complet, quelque soit la solution j'ai toujours la même erreur.

    La seule solution restante est donc de trouver comment garder "napoléon est mort" ou "napoléon+est+mort" dans l'adresse URL (sans soumission par le formulaire)

    Si vous avez la solution, je suis preneur parce que là je pêche !!!

    D'ailleur j'ai fais le test sur les 3 grands moteurs de recherche et Live Search (version internationale) émet aussi une erreur alors que la version française ne la fait pas...

    Pour Google, la requête reste la même que celle d'origine dans la barre d'adresse.

    Pour Yahoo, la requête est modifiée en RFC 1738 (si je me souviens bien !) mais fonctionne tout de même et affiche des résultats.

    Voilà, please help !!!

    Merci @ tous !

  2. #2
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    Bonjour !
    Alors déjà, tu devrais éviter d'envoyer du HTML via echo (via php en fait).
    C'est plus lisible

    Ensuite, vire la déclaration XML en haut de ton script qui fait basculer IE en mode Quirks, et qui ne sert à rien.

    Ensuite, file le code de la page de récupération des données de formulaire, et explique mieux ton PB, quand il survient, parce que là j'ai pas tout compris

    A+

  3. #3
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut
    Bonjour,

    Merci pour la ligne XML.

    Pour le HTML via ECHO, mes pages sont largement plus complexes que le code ci-dessus, j'ai donc pris l'haibtude de le faire ainsi pour la suite des développements.

    Pour la page de réception, c'est la même, c'est la dernière requête juste avant le "</body>"

    Ce n'est pas un problème de réception, mais un problème d'affichage dans la barre d'adresse.

    Il vaut mieux essayer le script, tu comprendras tout de suite ce dont je parle.

    @ bientôt et merci.

  4. #4
    Membre habitué
    Homme Profil pro
    Lycéen
    Inscrit en
    Décembre 2008
    Messages
    106
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Décembre 2008
    Messages : 106
    Points : 152
    Points
    152
    Par défaut
    bon, alors, lis la doc à propos de urlencode et urldecode.
    L'encodage qui se fait par le navigateur lors de la soumission du formulaire est tout à fait normal et on ne peut rien y faire.
    Ce que je ne comprends pas c'est l'erreur 406, d'après les recherches que j'ai faite ce n'est pas lié

  5. #5
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut
    En effet ! bizarre cette erreur 406...

    Pour urlencode et urldecode, j'avais déjà regardé de ce côté ainsi que rawurl...
    Mais ça n'a pas plus répondu à mes attentes.

    J'ai essayé le script avec d'autres navigateurs comme Safari par exemple qui lui gère encore différemment, pour le coup dans la barre d'adresse, la ligne reste normale (seuls les espaces sont transformés en +)

    Du coup j'en viens à me dire que ce n'est pas un problème serveur/site, ni un problème de développement, mais un problème de navigateur utilisé tout simplement et là malheureusement on ne peut pas gérer le comportement dans la barre d'adresse au cas par cas !

    Merci en tout cas et bonnes fêtes à toi.

  6. #6
    Expert confirmé
    Avatar de Thes32
    Homme Profil pro
    Développeur PHP, .Net, T-SQL
    Inscrit en
    Décembre 2006
    Messages
    2 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur PHP, .Net, T-SQL

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 379
    Points : 4 853
    Points
    4 853
    Par défaut
    Citation Envoyé par nazoreen
    Maintenant si j'entre directement dans la barre d'adresse : ... La seule solution restante est donc de trouver comment garder "napoléon est mort" ou "napoléon+est+mort" dans l'adresse URL (sans soumission par le formulaire)
    Si tu veux afficher napoléon est mort dans la barre d'adresse, sâche que cela n'est pas possible, regarde bien sur tout le site, les caractères accentués, les espaces et autres caractères spéciaux sont encodé.
    Développeur | Zend Certified Engineer

    Étapes Pour mieux se servir du forum:
    1. Commencez par lire les cours et tutoriels ;
    2. Faites une recherche;
    3. Faites un post si rien trouvé dans les deux étapes précédentes en respectant les règles;

    Nix>_Rien n'est plus pratique que la théorie

  7. #7
    Membre averti
    Homme Profil pro
    Gérant
    Inscrit en
    Février 2006
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : Dom-Tom

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Février 2006
    Messages : 262
    Points : 329
    Points
    329
    Par défaut
    Merci Thes32 !

    Je crois en effet que le problème ne peut pas être réglé pour la barre d'adresse.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/09/2011, 15h09
  2. [XL-2007] Création d'un formulaire pour encodage de paiements
    Par Kikabooo dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/01/2010, 12h18
  3. Formulaire et encodage de carractère
    Par Invité dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2009, 11h29
  4. problème encodage avec formulaire ajax
    Par gyome314 dans le forum Ruby on Rails
    Réponses: 2
    Dernier message: 21/06/2007, 13h14
  5. Probleme d'encodage du formulaire
    Par qdqdfqfdqdxcwcrzsdfw dans le forum Struts 1
    Réponses: 1
    Dernier message: 09/05/2007, 16h48

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