ADDSLASHES |
Ajout un barre oblique |
---|---|
PHP 4.0+ |
Syntaxe
function addslashes($str) |
Paramètres
Nom | Description |
---|---|
$str | Ce paramètre permet d'indiquer la chaîne de caractères à traiter |
Retour
Valeur | Description |
---|---|
chaîne de caractères | Ces valeurs indique une chaîne de caractères traité selon les spécifications demandé. |
Description
Cette fonction permet d'ajouter une barre oblique supplémentaire à chaque caractères de guillemet simple (') ou double (") dans la chaîne de caractères.
Algorithme
MODULE ADDSLASHES(str) Initialiser une chaîne de caractères vide result FIN POUR CHAQUE caractère c dans la chaîne de caractères str FAIRE SI c est un guillemet simple (') ALORS Ajouter un antislash avant c dans result SINON SI c est un guillemet double (") ALORS Ajouter un antislash avant c dans result SINON SI c est un antislash (\) ALORS Ajouter un antislash avant c dans result SINON Ajouter c tel quel dans result FIN SI FIN BOUCLE POUR RETOURNE result |
Remarques
- Échappement des caractères spéciaux pour les chaînes de caractères : La fonction addslashes ajoute des backslashes (\) devant certains caractères spéciaux tels que les guillemets simples ('), les guillemets doubles ("), le backslash (\) lui-même, et le caractère NULL. Cela est utile pour préparer des chaînes de caractères à être insérées dans des contextes où ces caractères ont une signification particulière.
- Utilisation dans les requêtes SQL (obsolète) : Historiquement, addslashes était utilisée pour échapper des chaînes de caractères avant de les inclure dans des requêtes SQL. Cependant, cette pratique est aujourd'hui déconseillée en raison des risques d'injections SQL. Les extensions modernes comme PDO ou MySQLi fournissent des mécanismes de gestion des paramètres beaucoup plus sûrs et efficaces.
- Pratique pour les chaînes de caractères sérialisées : addslashes est encore utile dans des contextes où des chaînes doivent être sérialisées ou entreposées avec des caractères spéciaux, comme les fichiers JSON, XML ou d'autres formats nécessitant un échappement explicite.
- Ne convient pas à tous les contextes : addslashes ne gère pas l'échappement des caractères spécifiques à des environnements particuliers comme les commandes shell, les expressions régulières ou les formats de données spécifiques. Pour ces cas, des fonctions adaptées comme addcslashes ou escapeshellcmd sont préférables.
- Inverse avec stripslashes : La fonction stripslashes permet de supprimer les backslashes ajoutés par addslashes. Cela est utile lorsqu'il faut restaurer la chaîne de caractères originale après son traitement ou son entreposage.
- Différences avec htmlspecialchars et htmlentities : Contrairement à htmlspecialchars ou htmlentities, addslashes ne protège pas contre les failles XSS (Cross-Site Scripting). Elle est uniquement conçue pour ajouter des backslashes aux caractères spéciaux, sans modifier les entités HTML.
- Risque de double échappement : Si addslashes est appelée plusieurs fois sur la même chaîne de caractères sans précaution, cela peut entraîner un double échappement. Par exemple, un caractère " deviendra \" lors du premier appel, puis \\\" lors du second. Cela peut poser des problèmes de lisibilité ou de traitement.
- Limitation à certains caractères : Contrairement à des fonctions plus flexibles comme addcslashes, addslashes échappe uniquement les guillemets simples, les guillemets doubles, les backslashes, et le caractère NULL. Si vous devez échapper d'autres caractères, addcslashes ou des solutions plus spécifiques seront nécessaires.
Exemple
Voici un exemple montrant quelques utilisations de cette fonction :
- <?php
- $variable = 'Le site est à l\\'adresse "gladir.com" !';
- echo "Sans : ".$variable."<br />";
- echo "Avec : ".addslashes($variable)."<br />";
- ?>
on obtiendra le résultat suivant :
Sans : Le site est à l'adresse "gladir.com" !Avec : Le site est à l\'adresse \"gladir.com\" !
Références
PHP 4 - Guide du développeur, Edition First Interactive, Blake Schwendiman, 2002, ISBN: 2-84427-283-5, page 357
Dernière mise à jour : Dimanche, le 22 mars 2015