Vous êtes ici Tutoriel > PHP - Utilisation des Magic Quotes

 
 

PHP - PHP - Utilisation des Magic Quotes


Tutoriel écrit par KOogar le 25 Déc 2006

Avant PHP 6 une fonctionnalité, nommée magic quotes, fut créée pour aider les programmeurs débutants à ne pas écrire un mauvais code de traitement de formulaire. Magic Quotes marquait automatiquement avec un code d’évitement les données à risques du formulaire qui auraient pu être utilisées pour une SQL Injection avec un barre oblique inverse \. Les caractères que PHP marquait d’un code d’évitement comprennent l’apostrophe ', la double apostrophe ", la barre oblique inverse \ et les caractères NULL.
De toute façon, cette protection pour débutant s’avéra poser plus de problèmes qu’elle n’en résolvait et n’existe plus dans PHP6. Si votre version de PHP est une version antérieure au 6 vous devriez utiliser cette leçon pour en apprendre plus sur la façon dont magic quotes peut influencer votre travail.


Sommaire :


PHP - PHP - Utilisation des Magic Quotes

 
PHP Magic Quotes – Est-ce Activé?

Commençons par le commencement, vous devez vérifier si magic quotes est activé sur votre serveur. La fonction get_magic_quotes_gpc() renverra un 0 (off) ou un 1 (on). Ces valeurs booléennes s’intégreront parfaitement dans une formulation de si ou 1 est vrai et 0 est faux.

.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
  <?php
if(get_magic_quotes_gpc())
  echo
"Magic quotes est activé";
else
  echo
"Magic quotes est désactivé";
?>

Affiche:
Magic quotes est activé

Si vous recevez le message "Magic quotes Magic quotes est activé" alors vous devez définitivement continuer de lire cet tuto, sinon vous pouvez l’apprendre si vous voulez pour le cas où vous devriez développer pour des serveurs qui ont magic quotes activé ou non.

PHP Magic Quotes – Fonctionnement.

Faisons maintenant un formulaire pour montrer comment les serveurs où magic quotes est activé marqueront d’un code d’évitement ces caractères potentiellement dangereux. Ce formulaire se soumet à lui-même, donc vous n’avez besoin de créer qu’un fichier, "magic-quotes.php" pour faire le test.

.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
  <?php
echo "<strong>Texte altéré:</strong> ".$_POST['question'];
?>

<form method="post">
Question:<br />
<input type="text" name="question">
<input type="submit" value=" Envoyer ">

</form>
Ce simple formulaire vous affichera ce que fait magic quotes. Si vous entriez et soumettiez la chaîne de caractères: Eric dit, "Il fait beau dehors et j’aime \ j’adore ce temps."

Vous recevriez la sortie suivante :

Texte altéré: Eric dit,\ "Il fait beau dehors et j\’aime \\ j\’adore ce temps.\"
Question:



Magic quotes a vraiment réussi dans le traitement de cette chaîne de caractères, non? Remarquez qu’il y a une barre oblique inverse devant tous ces caractères à risque dont nous avons parlé auparavant.

Après magic quotes:
· Une barre oblique inverse \ devient \\
· Une apostrophe ' devient \'
· Une double apostrophe " devient \"

Disons maintenant que vous voulez supprimer le code d’évitement qu’a ajouté magic quotes, vous avez deux options: désactiver magic quotes ou enlever les barres obliques inverses ajoutées par magic quotes.

PHP Magic Quotes – Supprimer les Barres Obliques Inverses - stripslashes()

Avant d’utiliser la fonction de suppression des barres obliques inverses de PHP stripslashes() il est utile de vérifier l’état de magic quotes comme dans notre partie "Est-ce Activé?" ci-dessus. De cette manière vous éviterez d’enlever accidentellement des barres obliques inverses légitimes dans le futur si les réglages de magic quotes de votre PHP changent dans le futur.


.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
.14
.15
.16
.17
.18
  <?php
echo "Enlève les Slashes:<br /> ";
// Enlève les slashes
if(get_magic_quotes_gpc())
  echo
stripslashes($_POST['question']);
else
  echo
$_POST['question'];
 
?>

<form method=”post”>
Question: <input type=”text” name=”question”/><br />
<input type=”submit”>


</form>

Notre nouvelle sortie pour notre chaîne contenant des caractères à risque sera maintenant:

Vous recevriez la sortie suivante :

Enlève les Slashes: Enlève les Slashes: Eric dit, "Il fait beau dehors et j’aime \ j’adore ce temps."
Question:





© Copyright: Les tutoriels sont exclusifs et sont la propriétés des auteurs.
    Reproduction interdite.