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 :

ajouter une action a la fonction echo [PHP 5.2]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 34
    Par défaut ajouter une action a la fonction echo
    Bonjour,

    Voilà, j'ai lu un tutoriel sur la sécurité dans lequel est montré cette classe :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    <?php
    	class Securite
    	{
    		// Données entrantes
    		public static function bdd($string)
    		{
    			// On regarde si le type de string est un nombre entier (int)
    			if(ctype_digit($string))
    			{
    				$string = intval($string);
    			}
    			// Pour tous les autres types
    			else
    			{
    				$string = mysql_real_escape_string($string);
    				$string = addcslashes($string, '%_');
    			}
     
    			return $string;
     
    		}
    		// Données sortantes
    		public static function html($string)
    		{
    			return htmlentities($string);
    		}
    	}
    ?>
    Elle permet de s'assurer que toutes les entrées utilisateurs, et tous les affichages des sorties utilisateurs soient sécurisés. Ne resterait alors comme faille que le token (enfin je crois).

    Maintenant, ce que je voudrais faire, c'est ne pas avoir à spécifier que pour chacune des données validées par l'utilisateur, il faut faire ceci et cela.
    J'ai donc placé dans mon main.php (fichier contrôleur qui appelle tous les autres) ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if (!empty ($_POST))
    {
       Securite::bdd($_POST); 
    }
    if (!empty ($_GET))
    {
      Securite::bdd($_GET);
    }
    Où on regarde à chaque fois que l'utilisateur recharge une page à vérifier si il n'y a pas de caractères louches.

    Maintenant, mon petit souci reste pour l'affichage des echo $var.
    En effet, je n'ai pas envie de devoir à chaque fois écrire echo Securite::html($var).
    Donc, je voudrais savoir si il ne serait pas possible de faire en sorte que mon code, dès qu'il lit un echo, intègre automatiquement la méthode Securite::html().

    Je vois bien la possibilité de créer une fonction dire() qui appliquerait l'appel de la méthode Securite::html(), mais ça risque de nuire à la lisibilité du code.
    Donc ma question serait :
    Est-il possible de redéfinir la fonction echo tout en gardant le même nom pour ne pas nuire à la lisibilité du code ?

    Merci d'avance.

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    77
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 77
    Par défaut
    Je crois que tu n'as pas le choix.
    C'est trés fréquent de redefinir des fonctions natives. Le tout est de bien documenté ton code.

  3. #3
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Le problème est que si tu conserves le nom d'une fonction en la redéfinissant, ton script va croire que lors de la définition tu essayes d'appeler la fonction originale.
    De plus, comme je suppose que tu as l'intention de faire appel à cette fonction originale dans le code de ta nouvelle fonction, tu vas te retrouver avec une mise en abime puisque ta fonction va en fait s'appeler elle-même...
    Enfin, pour couronner le tout, echo n'est pas réellement une fonction, mais une structure de langage, ce qui lui permet entre autres de fonctionner sans parenthèses et de faire appel des fonctions variables ( echo)

    Donc, ta fonction va devoir porter un autre nom (ça peut très bien être un dérivé d'echo, genre echo_e).
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  4. #4
    Membre averti
    Inscrit en
    Janvier 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 34
    Par défaut
    D'accord, pas le choix, merci quand même.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/08/2007, 12h42
  2. HTMLEditorKit() ajouter une action
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 07/05/2007, 16h08
  3. Réponses: 5
    Dernier message: 24/11/2006, 11h30
  4. ajouter une action dans un jeu
    Par lolo5169 dans le forum Projets
    Réponses: 15
    Dernier message: 28/08/2006, 09h53
  5. Liens html pour un éditeur (ajouter une action javascript à un lien html)
    Par psychoBob dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 25/05/2006, 18h41

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