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

- - Dernière réponse :  :p - 12 août 2013 à 15:43
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;
}
}
}
?>
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Dernière intervention
23 octobre 2014
3
Merci
<?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();

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 97 internautes nous ont dit merci ce mois-ci

Commenter la réponse de inwebo
0
Merci
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);
Commenter la réponse de JejeScript
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Dernière intervention
23 octobre 2014
0
Merci
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();
Commenter la réponse de inwebo
0
Merci
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.
Commenter la réponse de JejeScript
0
Merci
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.
Commenter la réponse de JejeScript
Messages postés
381
Date d'inscription
lundi 12 novembre 2007
Dernière intervention
23 octobre 2014
0
Merci
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();
Commenter la réponse de inwebo
0
Merci
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);
}
Commenter la réponse de JejeScript
0
Merci
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;
}
}
?>
Commenter la réponse de JejeScript

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.