Nettoyage et vérification de variables [Résolu]

Signaler
-
 :p -
je voudrais avoir votre avis sur le codage suivant, le but est de nettoyer et de vérifier des entrées de variables pour faire des requêtes mysql

<?php
class verif {

private $var;

public function verif_mail($var) {
if(filter_var($var, FILTER_VALIDATE_EMAIL)) {
return $var;
}
else {
return false;
}
}

public function id($var) {
$options = array(
'options' => array(
'min_range' => 1,
'max_range' => 11,
)
);
$nb = strlen($var);
if(filter_var($nb, FILTER_VALIDATE_INT, $options) !== FALSE) {
return $var;
}
else {
return false;
}
}


}

class nettoyage {

private $var;

public function text($var) {
$var = filter_var($var, FILTER_SANITIZE_STRING);
return $var;
}

public function id($var) {
$trans array('+'> '', '-' => '');
$var = strtr($var, $trans);
$var = filter_var($var, FILTER_SANITIZE_NUMBER_INT);
$verif = new verif;
if($var = $verif->id($var)) {
return $var;
}
else {
return false;
}
}

public function email($var) {
$var = filter_var($var, FILTER_SANITIZE_EMAIL);
$verif = new verif;
if($var = $verif->verif_mail($var)) {
return $var;
}
else {
return false;
}
}
}
?>

8 réponses

Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014

<?php

class Verif {

public static function verif_mail($var) {
          return filter_var($var, FILTER_VALIDATE_EMAIL)
}

public static function id($var) {
$options = array(
'options' => array(
'min_range' => 1,
'max_range' => 11,
)
);
$nb = strlen($var);

                return filter_var($nb, FILTER_VALIDATE_INT, $options);
}


}

class Nettoyage {

public static function text($var) {
return filter_var($var, FILTER_SANITIZE_STRING);
}

public static function id($var) {
$trans array('+'> '', '-' => '');
$var = strtr($var, $trans);
$var = filter_var($var, FILTER_SANITIZE_NUMBER_INT);
                return Verif::id($var);
}

public function email($var) {
$var = filter_var($var, FILTER_SANITIZE_EMAIL);
                return Verif::verif_mail($var);
}
}
?>


Au passage il existe des conventions d'écriture, par exemple les noms de classes commencenttoujours par une majuscule.

Je ne saurais que te conseiller d'aller voir la doc PHP, pour la notion d'objet (http://php.net/manual/fr/language.oop5.php) (désolé il y a un bug avec opéra je ne peux pas mettre de liens facilement).

Et n'importe quel autres tutorial !

voilà
________________________________________
( $toBe || !$toBe ) = $this->Question();
Ah oui j'ai oublié, voici un exemple de l'utilisation :

$login = 'MonLogin';
$id = '1'; // de 1 a 11 chiffres
$email = 'email@gmail.com';
$var = new nettoyage;
$login = $var->text($login);
$id_fin = $var->id($id);
$email = $var->email($email);
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014

Salut,

je vois deux choses :

1 - Les classes n'ont pas de constructeurs. Pourquoi ne pas les mettre en class statics. Comme cela il est inutile d'instancier un nouvel objet juste pour utiliser leurs méthodes.

2 - Dans les classes certaines méthode attribue à une variable le résultat de filter_var. Pourquoi ne pas retourner directement le résultat du traitement.


________________________________________
( $toBe || !$toBe ) = $this->Question();
bonjour,
inwebo c'est la première fois que j’utilise des classes et je n'ai pas encore bien compris a comment se servir des constructeurs, et je suis perdu avec les statics.

pourrais tu me montrer un exemple qui s’adapterait a ce code s'il te plait.
merci beaucoup inwebo, c'est vrai que c'est beaucoup plus simple comme ça
en plus ça fait moins de lignes donc je suppose que ça doit alléger pas mal.
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Statut
Membre
Dernière intervention
23 octobre 2014

Nota bene,

j'ai oublié le mot clef static pour la méthode email de la classe nettoyage !

	public function email($var) {
$var = filter_var($var, FILTER_SANITIZE_EMAIL);
                return Verif::verif_mail($var);
}


Donne bien sûr

public static function email($var) {
$var = filter_var($var, FILTER_SANITIZE_EMAIL);
                return Verif::verif_mail($var);
}

________________________________________
( $toBe || !$toBe ) = $this->Question();
Bonjour inwebo,

Oui je l'avais remarqué, mais merci de l'avoir spécifié.

Il y a un autre souci, le fait de retourner directement

return filter_var($nb, FILTER_VALIDATE_INT, $options);


cela créé une erreur quand on s'en sert car on retourne le $nb et pas le $var lui même,
le $nb étant un strlen() du $var=>id, le but est d'être sur que le nombre de chiffre contenu dans la variable et compris entre 1 et 11, donc je pense que la solution suivante est mieux.

public static function id($var) {
$options = array(
'options' => array(
'min_range' => 1,
'max_range' => 11,
)
);
$nb = strlen($var);

                return filter_var($nb, FILTER_VALIDATE_INT, $options);
}
Désolé je me suis trompé de solution celle qui a mon sens est la mieux est la suivante :

<?php
public static function id($var) {
$options = array(
'options' => array(
'min_range' => 1,
'max_range' => 11,
)
);
$nb = strlen($var);
if(filter_var($nb, FILTER_VALIDATE_INT, $options) !== FALSE) {
return $var;
}
else {
return false;
}
}
?>