begin process at 2012 02 05 00:58:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caratère

 > CLASSE DE VÉRIFICATION DE DONNÉES

CLASSE DE VÉRIFICATION DE DONNÉES


 Information sur la source

Note :
8 / 10 - par 1 personne
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caratère Classé sous :carctères, vérification, mail, filter, preg Niveau :Initié Date de création :02/11/2008 Date de mise à jour :02/11/2008 12:11:13 Vu :2 695

Auteur : swaenboutu

Ecrire un message privé
Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

 Description

cette classe réunies plusieurs vérifications de données que je fais souvent pour mes sites : vérification de la validité d'une adresse mail, d'un lien, d'une date, d'une heure ou encore suppression de caractères interdits

Source

  • <?php
  • /**
  • * Class for all data verifications
  • *
  • * @version : 1
  • * @author : swaen
  • */
  • class verifications
  • {
  • /**
  • *Delet all html Tags
  • *
  • * @param <String> $string
  • * @return <String>
  • */
  • public static function deletHtmlTag($string)
  • {
  • iconv("ISO-8859-1","UTF-8//IGNORE",$string);
  • $string =htmlentities($string, ENT_NOQUOTES,"UTF-8");
  • return $string;
  • }
  • /**
  • *Check if the date is valid
  • *
  • * @param <int> $day
  • * @param <int> $month
  • * @param <int> $year
  • * @return <boolean>
  • * @access public
  • */
  • public static function checkDate($day,$month,$year)
  • {
  • return checkdate($month,$day,$year);
  • }
  • /**
  • *check if an hour is valide
  • *
  • * @param <int> $hour
  • * @param <int> $minute
  • * @return <boolean>
  • */
  • public static function checkHour($hour,$minute){
  • if($hour >= 00 && $hour <= 24 && $minute >= 00 && $minute <= 59){
  • return true;
  • }
  • return false;
  • }
  • /**
  • *Check if an url is valide (not a dead link)
  • *
  • * @param <string> $link (must begin by http:// or be a relative url)
  • * @return <boolean>
  • */
  • public static function checkLink($link)
  • {
  • return (bool)filter_var($link,FILTER_VALIDATE_URL);
  • }
  • /**
  • *chack if an ip adress is valid
  • *
  • * @param <String> $ip
  • * @return <boolean>
  • */
  • public static function checkIp($ip)
  • {
  • return (bool) filter_var($ip, FILTER_VALIDATE_IP) ;
  • }
  • /**
  • *check if an e-mail adress is valid
  • *
  • * @param <String> $email
  • * @return <boolean>
  • */
  • public static function checkMail($email)
  • {
  • return (bool) filter_var($email, FILTER_VALIDATE_EMAIL) ;
  • }
  • /**
  • *format the string to delet all characters which are not numbers
  • *
  • * @param <String> $string
  • * @return <String>
  • */
  • public static function onlyNumbers($string)
  • {
  • return preg_replace("[^0-9]","",$string);
  • }
  • /**
  • *delet all punctuation in a string
  • *
  • * @param <String> $string
  • * @return <String>
  • */
  • public static function noPunctuation($string)
  • {
  • $string = stripslashes($string);
  • $array=array(":",";","\.",",","!","\?","¡","&#8230;","¿");
  • return preg_replace($array,"",$string);
  • }
  • /**
  • *Delet the char in a string (both are passed in parameter)
  • * if nothing is passed as char the function will delet all spaces
  • *
  • * @param <String> $string
  • * @param <String> $char
  • * @return <String>
  • */
  • public static function deletOneChar($string,$char = " ")
  • {
  • return preg_replace('`'.preg_quote($char).'`', '', $string);
  • }
  • }
<?php
/**
 * Class for all data verifications
 *
 * @version : 1
 * @author : swaen
 */
class verifications
{
    /**
     *Delet all html Tags
     *
     * @param <String> $string
     * @return <String>
     */
    public static function deletHtmlTag($string)
    {
        iconv("ISO-8859-1","UTF-8//IGNORE",$string);
        $string =htmlentities($string, ENT_NOQUOTES,"UTF-8");

        return $string;
    }

/**
 *Check if the date is valid
 *
 * @param <int> $day
 * @param <int> $month
 * @param <int> $year
 * @return <boolean>
 * @access public
 */
    public static function checkDate($day,$month,$year)
    {
        return checkdate($month,$day,$year);
    }

/**
 *check if an hour is valide
 *
 * @param <int> $hour
 * @param <int> $minute
 * @return <boolean>
 */
    public static function checkHour($hour,$minute){
        if($hour >= 00 && $hour <= 24 && $minute >= 00 && $minute <= 59){
            return  true;
        }
        return false;
    }

    /**
     *Check if an url is valide (not a dead link)
     *
     * @param <string> $link (must begin by http:// or be a relative url)
     * @return <boolean>
     */
    public static function checkLink($link)
    {
        return (bool)filter_var($link,FILTER_VALIDATE_URL);
    }

/**
 *chack if an ip adress is valid
 *
 * @param <String> $ip
 * @return <boolean>
 */
    public static function checkIp($ip)
    {
        return (bool) filter_var($ip, FILTER_VALIDATE_IP) ;
    }

/**
 *check if an e-mail adress is valid
 *
 * @param <String> $email
 * @return <boolean>
 */
    public static function checkMail($email)
    {
        return (bool) filter_var($email, FILTER_VALIDATE_EMAIL) ;
    }

/**
 *format the string to delet all characters which are not numbers
 *
 * @param <String> $string
 * @return <String>
 */
    public static function onlyNumbers($string)
    {
        return  preg_replace("[^0-9]","",$string);
    }

/**
 *delet all punctuation in a string
 *
 * @param <String> $string
 * @return <String>
 */
    public static function noPunctuation($string)
    {
        $string = stripslashes($string);
        $array=array(":",";","\.",",","!","\?","¡","&#8230;","¿");
        return  preg_replace($array,"",$string);
    }

/**
 *Delet the char in a string (both are passed in parameter)
 * if nothing is passed as char the function will delet all spaces
 *
 * @param <String> $string
 * @param <String> $char
 * @return <String>
 */
    public static function deletOneChar($string,$char = " ")
    {
        return preg_replace('`'.preg_quote($char).'`', '', $string);
    }
}

 Conclusion

dites moi ce que vous en pensez et s'il manque des vérifications qu'il serait, selon vous, intéressant d'ajouter et si je m'y prends mal pour certaines choses


 Historique

02 novembre 2008 00:08:33 :
changement de catégorie
02 novembre 2008 11:58:45 :
modification de la source en prenant en compte les commentaires
02 novembre 2008 12:03:26 :
ajout du mot clé "static" pour chaque fonction de la classe
02 novembre 2008 12:11:13 :
Bon encore quelques modifications en prenant en compte les commentaires

 Sources de la même categorie

ADRESSE ABSOLUE DE LA PAGE EN COURS, AVEC VARIABLES $_GET par Dariumis
Source avec Zip CLASSE D'OBJET DE RECHERCHE DE MOTS DANS DES TABLEAUX ET/OU ... par 8Tnerolf8
RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE par tefa24600
Source avec Zip Source avec une capture CONVERTISSEUR DE NOMBRES EN TEXTE par macruz
Source avec Zip Source avec une capture CODAGE TEXTE >HTML, ISO, SPECIALCHARS, URL ET DECODAGE par Salva9473

 Sources en rapport avec celle ci

Source avec Zip VÉRIFICATION DE FORMULAIRE EN PHP par psonic13
Source avec Zip Source avec une capture SIMPLE EMAILING SERVICE par mtrix000
FONCTION ENVOI DE MAIL PHP QUI PERMET DE PASSER LE FILTRE AN... par alienat
Source avec Zip Source avec une capture FORMULAIRE DE CHOIX MULTI-CONTACT VALIDE XHTML 1.0 TRANSITIO... par aventurier19
VERIFICATION DE MAIL AVEC EREG par leonskd

Commentaires et avis

Commentaire de neigedhiver le 02/11/2008 01:21:26

Salut,

J'ai pas regardé en détails (je regarde rarement en détails, oui, je sais, c'est mal), mais j'ai quand même des choses à dire...

1/ Pour vérifier une adresse email, il existe des fonctions de filtres qui permettent de ne pas avoir à recoder une fonction native (qui est nécessairement plus performante) : http://fr.php.net/manual/fr/book.filter.php
Par exemple : filter_var($user_email, FILTER_VALIDATE_EMAIL);

2/ Dans la méthode noPunctuation() ereg est énormément moins performant que preg à motif égal. En outre, preg_replace accepte en argument un tableau de motifs et un tableau de remplacements, ce qui évite d'appeler 6 fois de suite ereg_replace.
Par ailleurs, il manque la suppression du caractère points de suspensions ( &hellip; ), et les points d'interrogation et d'exclamation inversés.

3/ Dans la méthode checkIP
# if(preg_match($handler,$ip)){
# return $this->isValidIp = true;
# }
# return $this->isValidIp = false;

N'est-il pas plus simple et plus lisible de faire une seule ligne :
return (bool) preg_match('`([0-9]{1,3}\.){3}[0-9]{1,3}`', $ip);

D'ailleurs cette méthode est valable pour une IPv4, mais pas pour une IPv6.

4/ D'une manière générale, pourquoi avoir fait une classe "standard" ? Pourquoi pas plutôt une classe statique, ou, plus simplement, une collection de fonctions ?
Je ne vois pas l'intérêt d'une classe dans la mesure où on n'a pas besoin d'instancier un objet...

5/ Concernant les propriétés :
#  public $isValidEmail;
# public $isNumber;
# public $isValidDate;
# public $isValidHour;
# public $isValidLink;
# public $isValidIp;

Si tu dois les initialiser à false dans le constructeur, pourquoi ne pas alléger le code ?
public $isValidEmail = false;
public $isNumber = false;
public $isValidDate = false;
public $isValidHour = false;
public $isValidLink = false;
public $isValidIp = false;

Je pense que voilà de quoi optimiser ta source :)

Commentaire de neigedhiver le 02/11/2008 01:23:43

Je viens de voir l'expression régulière que tu construis dans la méthode de vérification d'email... Elle me semble très peu optimisée... Faudrait que je regarde ça de plus près, mais je pense que tu te compliques la vie pour pas grand chose, on peut faire plus simple. (pis en utilisant la fonction de filtre, c'est encore plus simple...)

Commentaire de webdeb le 02/11/2008 10:18:34

Personnellement je ne vois pas l'utilité de pouvoir instancier une telle classe, donc pas la peine d'écrire des attributs. Au final, on devrait se contenter de faire des appels statiques de méthodes puisqu'en fin de compte, ta classe n'embarque qu'une collection de fonctions utilisateurs.

Quant aux commentaires de NeigeDHiver, je plussoie. Utilise les possibilités de l'extension Filter de PHP 5 et remplace tous tes ereg_*() par les fonctions équivalentes plus performantes.

++

Commentaire de swaenboutu le 02/11/2008 11:16:39

je vous remercie pour tout ces commentaires c'est justement pour ça que j'ai mis cette classe en ligne... j'ignorais l'existence de la fonction filter (est-elle installer de base avec php5?)
je ne savais pas non plus que pereg était plus performant que ereg... Quand au fait de faire une classe je dirai juste c'est pas faux et du coup je me demande pourquoi j'ai fait une classe (peut être parce que je veux TOUT faire en objet maintenant que je l'ai découvert...) Bon au final je me demande si je dois laisser cette source en ligne et je vous remercie de ces commentaires

Commentaire de webdeb le 02/11/2008 11:52:07

Tu peux la laisser mais dans ce cas retire les attributs de ta classe et ajoute le mot-clé "static" devant la signature de tes fonctions pour en faire des méthodes statiques.

class MyClass {

  public static myMethod($a) {
    return $a*2;
  }
}

echo MyClass::myMethod(8);

++

Commentaire de neigedhiver le 02/11/2008 12:01:42

Plop,

Y'a pas de raisons de ne pas laisser cette source en ligne.

Faire une classe, pourquoi pas... ce n'est pas indispensable, mais pourquoi pas, à condition que ce soit une classe statique (pas de constructeur, et toutes les méthodes statiques). L'intérêt d'une classe statique :
- embarquer des fonctions qui font partie d'un même package
- pouvoir appeler ces fonctions de n'importe où dans le code
- ne pas avoir à se soucier des noms des fonctions, puisque seul le nom de la classe ne doit pas être dupliqué (c'est un peu le principe des namespaces de php5.3, mais pas aussi poussé ni complexe).
Avec une classe instantiable, il faut avoir un objet instancié, qui ne sera accessible que dans une portée définie (script, fonction, classe, etc). C'est une limitation plus qu'une fonctionnalité.
Quand à l'extension Filter, oui, elle est installé de base dans PHP (enfin j'ai rien trouvé qui indique le contraire).

Encore quelques petites optimisations...
Inutile de stocker le résultat d'une fonction pour le retourner immédiatement. Le stockage dans une variable à un coût en perfs (vraiment dérisoire, mais quand on peut s'en passer...). Tu peux te permettre de renvoyer simplement la chaîne, par exemple dans deletOneChar() :
Au lieu de :
# $string = ereg_replace($char,"",$string);
# return $string;

Simplement :
return preg_replace('`'.preg_quote($char)'`', '', $string);

Ou encore :

# public function checkLink($link)
# {
# $conn = @fopen($link, "r");
# if(! $conn ){
# return $this->isValidLink = false;
# }
# return $this->isValidLink = true;
# }

Plus simplement :
public static function checkLink($link) {
    return (bool) @fopen($link, 'r');
}

C'est un poil plus optimisé et pas moins lisible.

Voilà voilà.. Bon dimanche ^^

Commentaire de iow4 le 02/11/2008 12:32:05 8/10

Je trouve ça pas mal comme idée (surtout après les nombreux commentaires)
Pour les gros projets on peut se permettre d'utiliser des frameworks tel que Symfony qui nous fournit un niveau d'abstraction pour la gestion des vérification (syntaxe yaml par exemple pour la validation des actions)
Mais pour des petits projets c'est bien trop lourd, c'est là que ta class s'avère utile ;)
Cela permet de faire un framework light ;)

A réutiliser pour ma part ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

expression regulière preg_replace [ par attentio ] bonjour, je voudrais remplacer dans une variable certaines chaines de caractère par d'autres. plus précisement, les balises ... deviendront [LIEN=...] vérification de chaines de caractères [ par Rankin ] Bonjour &#224; tous, Bon mon probl&#232;me n'est pas original mais malgr&#233; les r&#233;ponses que j'ai trouv&#233;es sur ce forum, je n'arrive pas vérification mail dans un formulaire [ par veston ] Bonjour à tous. Je viens faire appel à vous car je suis bloqué sur un code... J'essaye de créer un formulaire avec une vérification d'email en temps preg_match, problème difficilement compréhensible [ par sailsee ] Bonjour, Je travaille sur le contrôle d'un formulaire. J'ai deux variables à vérifier avec une expression regulière $ip et $mail, une ip et un mail. envoie sauvegarder de ma base avec pièce jointe zip [ par jmsch57 ] bonjour, je suis débutant en programation et je viens réaliser un facturier. Afin de sauvegarder régulièrement ma base de donné j'utilise un scripte q syntaxe preg_match [ par boakim ] Bonjour. J'essaie de comprendre la manière d'écrire des conditions pour une chaîne de caractères du style #^http:\/\/(.*)\.(gif|png|jpg)$#i dans pr Envoi MDP par mail: problème hash MD5 [ par arbilus ] Bonjours, me revoila avec du lourd, accrochez vous: [code=php] <input name="Submit" value="Envoyer Mail lien crypté [ par eva4 ] Bijour tout le monde [^^happy17] J'aurais besoin de vos lumière. J'ai un code qui permet d'aller chercher des infos dans une base de donnée. $imag commentaire envoyé à mon mail [ par joujou27 ] Bonjour, je veux faire dans un site web(en cours de création) une zone de commentaire avec un boutton qui envoie ce commentaire directement vers mon récupérer url [ par anacolut ] bonjour je ne parviens pas à récupérer l'url de ma page courante sur la page dont je souhaite récupérer l'url j'ai indiqué [code] ','formulaire','loc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,827 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales