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 :

urlencode & $_POST selon serveur


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 17
    Points : 21
    Points
    21
    Par défaut urlencode & $_POST selon serveur
    Bonjour à tous,

    J'ai un soucis avec la fonction urlencode, lorsqu'elle traite une donnée venant d'un formulaire via la méthode post.
    les caractères spéciaux ne sont pas encodés correctement genre ï, ä, ...
    J'ai ce problème sur mon serveur, mais pas en local ! Je n'arrive pas à trouver la parade pour que ça fonctionne correctement...
    en local j'ai un wamp avec :
    Apache/2.2.6 (Win32) PHP/5.2.5
    sur mon serveur réel :
    Apache/2.2.3 (Debian) PHP/5.2.0-8+etch7

    Quelqu'un aurait une idée du problème ?

    j'ai fait une page test (des plus simple) à cette adresse :
    http://marianne.popuelles.be/encodetest.php
    dont le code est :
    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
    <html>
    <body>
    <form action="encodetest.php" method="post">
     <input type="text" name="montexte" value="ï"/>
     <input type="submit" />
    </form>
    <?php
    if (isset($_POST['montexte'])) {
    echo ($_POST['montexte']).' : ';
    $temp=urlencode($_POST['montexte']);
    echo ($temp);
     
    }
    ?>
    <br />
    d'aprés <a href="http://www.w3schools.com/tags/ref_urlencode.asp" >w3cschool</a>
    <br/>un ï devrait donner : %ef
    </body>
    </html>
    Merci déjà de m'avoir lu

    a+
    Marianne

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    dans quel sens c'est mal encodé?

    ton lien pointe vers un encodage url dans une url (en inventant des mots je dirais que c'est de l'url_encodage html)
    alors que urlencode() est une fonction php (sur le même principe je dirais que c'est de l'url_encodage php)

    donc oui y'a une différence entre ce que le site te donne et ce que php te donne (par exemple en php l'espace est transformé en + alors que dans l'url html c'est un %20)

    mais ton problème vient d'ailleurs? (l'encodage des caractères? en utf8 ou en iso???) je ne suis pas sûr de cerner ce qui te pose problème.

  3. #3
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    merci Léortien pour la réponse.

    en fait quand on fait un urlencode d'un "ï" la fonctionne devrait donner : "%ef"
    et non pas "%C3%AF" comme elle le fait sur mon serveur.

    Quand sur http://marianne.popuelles.be/encodetest.php je clique sur [envoyer]
    le texte "ï" (dans mon input nommée montexte) passe dans le tableau $_POST[].
    Je le récupère via $_POST['montexte'] et je fait urlencode($_POST['montexte'])
    ce qui devrait donc me donner : "%ef" et non pas "%C3%AF", parce que "%C3%AF" c'est pas "ï" mais "ï".

    (pourquoi je fais un urlencode ? c'est parce qu'en réalité, ma zone "montexte" je l'envoi à un service sur un autre serveur via un "file_get_contents("monurlencodée_contenant_entre_autre_variable_montexte"))

    J'espère que mon problème est plus clair.
    c'est peut-être effectivement un problème d'encodage, mais je ne sais pas trop comment le vérifier...

    a+

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Août 2002
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 194
    Points : 216
    Points
    216
    Par défaut
    j'ai regardé en effet le ï donne bien %EF sur le mien
    (bon c'est en majuscule mais c'est déjà ça )

    y'a des chances alors que le charset y soit pour qqch (c'est local en fonction de la machine et non des fonctions php) où un truc du genre

    alors une petite idée si tu as accès à ton serveur :
    regarder dans le php.ini (/etc/php.ini par défaut)
    la ligne voire si elle est commentée (; devant) ou non, si elle existe c'est elle qui domine
    sinon c'est dans la conf d'apache httpd.conf (par défaut /etc/httpd/conf/httpd.conf)
    voire si elle est commenté (# devant) ou non sinon par défaut... (euh.. le premier truc qui décide de se prononcer dessus?)

    ça peut te donner une idée de ton charset par défaut
    j'ai un bon truc en ISO-8859-1

    après pour le modifier sur la page... c'est un autre chapitre

  5. #5
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Octobre 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2002
    Messages : 17
    Points : 21
    Points
    21
    Par défaut
    Génial ! c'est résolu.
    J'ai suivi ton conseil, je suis allé jeter un oeil au php.ini. La default_charset était en commentaire avec en proposition ISO-8859-1.
    Je l'ai décommenté et redémarré le service apache pour être certaine que le nouveau paramètre soit pris en compte. Et voilà c'était résolu.
    J'ai quand même regardé plus loin ! J'ai remis cette ligne en commentaire et suis allé voir dans la config apache ou j'ai trouvé :
    AddDefaultCharset UTF-8 que j'ai mis en commentaire et remplacé par : AddDefaultCharset ISO-8859-1.
    Et ça fonctionne aussi. J'ai laissé le changement au niveau de la config apache.

    Un tout grand merci !

    Marianne

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

Discussions similaires

  1. [AJAX] Accès selon le serveur
    Par cijez dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 03/05/2007, 11h19
  2. Configurer son serveur mail et ses dns selon la norme SPF
    Par stanley dans le forum Serveurs (Apache, IIS,...)
    Réponses: 1
    Dernier message: 02/12/2006, 09h25
  3. Réponses: 2
    Dernier message: 26/09/2006, 10h46
  4. Espace qui disparaissent selon serveur IIS !
    Par scortex84 dans le forum ASP
    Réponses: 1
    Dernier message: 19/07/2006, 08h35
  5. encodage différent selon serveur !
    Par dkmatt dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 27/05/2006, 15h32

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