le monde de crabs (Christophe Cazajus)

PHP: Les apostrophes

Quel est le problème

D'un hébergeur à l'autre, d'une version PHP à l'autre, la gestion des apostrophes n'est pas identique. Cela pose quelques soucis pour les programmes PHP. Comment s'y prendre...

Le problème se pose lorsque l'on doit traiter un POST ou un GET associé à un formulaire. Parfois aussi, le retour d'une requête SQL peut nous amené quelque surprise.

Quelle philosophie retenir

De prime abord, je pense que les applications doivent manipuler des données brutes; pas de 'antislash' devant les apostrophes. Ainsi, nous savons toujours dans quel état sont les chaînes. C'est lors de l'utilisation de la donnée que nous devons faire la 'présentation' de cette données pour qu'elle soit compatible avec l'interface utilisé : HTML, MySQL, ...

je vais vous présenter quelques bouts de PHP permettant d'illustrer ce propos ainsi que les fonctions qui s'y rapporte. Ces fonctions peuvent être adaptées pour être intégrées à une classe CHAINE.

Le traitement des apostrophes pour MySQL

Ce point important car il s'agit d'éviter les 'SQL injection par le biais de requêtes MySQL.

Avant la requête

function toMySQL( $t )
        {
        return addslashes( $t ) ;
        }
   

Après la requête

function fromMySQL( $t )
        {
        if ( get_magic_quotes_runtime() )
            $texte = stripslashes( $t ) ;
        else
            $texte = $t ;
        return $texte ;
        }
   

Le traitement des apostrophes les POST ou GET

Venant d'un POST

function fromPOST( $t, $defaut=false )
        {
        if ( !array_key_exists( $t, $_POST ) ) return $defaut ;
        if ( get_magic_quotes_gpc() )
            $texte = stripslashes( $_POST[$t] ) ;
        else
            $texte = $_POST[$t] ;
        return $texte ;
        }
   

Venant d'un GET

function fromGET( $t, $defaut=false )
        {
        if ( !array_key_exists( $t, $_GET ) ) return $defaut ;
        if ( get_magic_quotes_gpc() )
            $texte = stripslashes( $_GET[$t] ) ;
        else
            $texte = $_GET[$t] ;
        return $texte ;
        }
   

Renseignez-vous sur les brevets logiciels en Europe :

NoSoftWarePatents.com (en français)

Les images représentant des sociétes, des associations ou des marques restent associées, par un lien, à ces sociétés, associations ou marques. Elles ne signifie en rien que ces sociétés, associations ou marques soutiennent ce site.

Sauf précisions contraire, le contenu de ce site est mis à disposition sous un contrat Creative Commons.

Les informations fournies le sont sans aucune garantie. L'auteur ne pourra être tenu responsable de leurs utilisations.

De par l'utilisation du HTML 4.01 Strict et des CSS 2.1, le monde de crabs sera correctement vu avec les navigateurs respectant ces normes, Mozilla ou FireFox par exemple.

Site : Le Monde de Crabs
Titre : PHP: Les apostrophes
Date du document : 10/04/2005
Auteur : Christophe Cazajus
Mail : crabs(mettre le @)crabs-world.com
ou utiliser ce formulaire de contact
Mots-clé : crabs, monde, francais, francophone, français, html, php, mysql, apostrophes, accent, POST, GET
Description : Comment traiter les POST et les GET en php, en évitant de se prendre la tête avec les apostrophes ou les accents.
Validation : html, csshtml, ccs
The Linux Counter
Info iconelvis iconbash iconphp icongimp iconpovray iconxml iconxslt iconcss iconhtml icon
Slackware Linux
Creative Commons License

Le calendrier et les scores du Stade Toulousain sont accessibles sur cette page : Le monde de crabs et le Stade Toulousain.

Crabs's World : English Section