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 :

PB d'encodage et d'antislash


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Par défaut PB d'encodage et d'antislash
    Bonjour.

    J'ai la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    function pages($chaine, $a){
    	if($a == "e"){
    		$chaine = mysql_real_escape_string(htmlentities($chaine));
    	}
    	elseif($a == "d"){
    		$chaine = stripslashes(html_entity_decode($chaine));
    	}
    	return $chaine;
    }
    En gros, si je fait pages("Mon texte", "e"); le texte sera encoder, et à l'inverse décoder si le e devient d.

    Le problème est double : Problème d'encodage (é & co :@), et pb d'antislash (N\\\' & co :@ sans compter du coup des \r et des \ de partout =_=)

    Là j'en ai trop marre, je bosse depuis je ne sais combien de temps la dessus, c'est vraiment la merde...

    Je précise que j'utilise cette fonction pour encoder un texte dans une base de donnée, et pour à l'inverse afficher le contenu de la base de donnée...

    Je précise aussi (mais vous l'aurait sûrement compris) que ma base de donné ainsi que mes pages sont en UTF-8...

    Merci d'avance pour votre aide...

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur LAMP
    Inscrit en
    Janvier 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur LAMP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2010
    Messages : 48
    Par défaut
    Salut,

    pour t'es triples antislash regarde du côté de MAGIC_QUOTES.

    Si magic quote est activé lors d'un envoi via un formulaire il backslashe automatiquement.

    MAGIC QUOTE
    c'est => c\'est

    ensuite mysql_real_escape_string backslashe le backslashe et la cote donc
    c\'est => c\\\'est

    Donc désactive le.

    Si tu n'as pas accès à ton php.ini par ton fichier .htaccess
    => SetEnv MAGIC_QUOTES 0

    /*--------------------------------------------------*/

    Pour ce qui est de l'encodage =>

    http://j-willette.developpez.com/tut...-site-en-utf8/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Par défaut
    Cela explique tout...

    Si tu n'as pas accès à ton php.ini par ton fichier .htaccess
    => SetEnv MAGIC_QUOTES 0
    Je le met où ?

    Et merci pour l'encodage, je vais tout essayer...

    EDIT :

    Pour l'encodage, j'ai :
    1. Au niveau du document HTML, ok
    2. Au niveau du fichier, ok
    3. Au niveau du serveur, via PHP (header), ok
    4. Au niveau du serveur, via PHP (utf8_decode), ok
    5. Au niveau de la base de données (tables + champ + BDD), ok
    6. Au niveau de la base de données (@mysql_query('SET NAMES "utf8"'); ), ok


    Pourtant, j'ai toujours ce pb d'encodage...

    Voilà la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function pages($chaine, $a){
    	if($a == "e"){
    		// encodage de la page
    		$chaine = utf8_decode(mysql_real_escape_string(htmlentities($chaine)));
    	}
    	elseif($a == "d"){
    		// decodage de la page
    		$chaine = stripslashes(html_entity_decode($chaine));
    	}
    	return $chaine;
    }
    Rien a bougé au résultat...

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur LAMP
    Inscrit en
    Janvier 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur LAMP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2010
    Messages : 48
    Par défaut
    Il te faut créer un fichier .htaccess
    dans ce fichier tu ajoutes la ligne suivante
    SetEnv MAGIC_QUOTES 0

    Pour ce qui est de ton problème d'encodage:

    si tu as fait toutes les manips du tuto tu ne devrais plus avoir besoin d'utiliser la fonction utf8_decode logiquement (Me corriger si ce n'est pas le cas).
    Et je ne peux pas non plus te certifié que ça corrigera ton problème

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    241
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 241
    Par défaut
    J'ai fait le .htaccess : Aucun changement =_=

    Pour l'encodage, j'ai enlever le utf8_decode, c'est pareil...

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur LAMP
    Inscrit en
    Janvier 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur LAMP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2010
    Messages : 48
    Par défaut
    Peux tu créer un fichier phpinfo et regarder dans CORE la valeur de la directive suivante :
    - magic_quotes_gpc

    car je pense que ton problème d'antislash vient de là.

    Pour ce qui est de l'encodage, les accents sont t'ils enregistrés correctement dans la base ?

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

Discussions similaires

  1. Encodage de caracteres: eviter 81, 8D, 8F, 90, 9D ->
    Par Fladnag dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 27/04/2004, 12h17
  2. Encodage de cd en fichier mp3
    Par clovis dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 08/04/2004, 02h13
  3. [ENCODAGE][JAVA]Afficher correctement des accents
    Par kornelius dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 17/02/2004, 17h37
  4. Encodages DOS et Windows
    Par Aramis dans le forum Langage
    Réponses: 5
    Dernier message: 09/11/2003, 18h55
  5. [VB6] fonction d' encodage URL en VB
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/01/2003, 12h16

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