Accueil > Forum > > > > Classes et vérification des données
Classes et vérification des données
dimanche 11 février 2007 à 10:16:23 |
Classes et vérification des données

TTMan
|
Bonjour à tous, Je viens pour poser une question peut-être stupide, mais je voudrais savoir s'il est plus intelligent et maintenable de vérifier les données saisies par un utilisateur directement sur la page php qui contient le formulaire de saisie ou dans la classe qui traite à proprement parles ces données (insérer, modifier des enregistrements dans une base de données). Mon autre question est: si j'ai une classe permettant de vérifier des types de données (adresse e-mail valide, que du texte....) puis-je l'appeler depuis une autre classe sans que ça ne soit trop lourd en terme de temps de traitement s'il y a de nombreux utilisateurs connectés? Si quelqu'un pouvait me faire part de son expérience... ça serait sympa. (caractéristiques du projet pour lequel celà s'applique: application web en php 4, base de données MySQL, 500 clients simultanés maximum). Merci. TTMan
|
|
dimanche 11 février 2007 à 12:18:09 |
Re : Classes et vérification des données

Kdecherf
|
Pour vérifier la validité d'un formulaire, tu peux le faire en Javascript avant l'envoie définitif de ce dernier. Avec le javascript, et en travaillant bien tu peux vérifier si tel ou tel champs est renseigné, ou si une adresse email est valide, ou même un numéro de téléphone ... Sinon, si tu veux faire des vérifications poussées dans ta base de données, sors un peu d'AJAX ;-)
Cordialement, Kdecherf
|
|
dimanche 11 février 2007 à 13:18:29 |
Re : Classes et vérification des données

malalam
|
Hello,
ça ne répond pas à la question, et donne de mauvais conseils. Fais tes vérifs en javascript, comme ça, le mec malintentionné désactivera javascript et fera passer ce qu'il veut dans le formulaire.
Perso, j'ai une clsse de vérification et d'assainissement de données. Elle est totalement indépendante de ma classe d'avstraction de base de données. De même, je n'ai pas de classe insérant les données de mon formulaire danns une bdd, par exemple...une classe n'est pas faite pour quelque chose d'aussi spécifique. Une classe est un outil, pas une finalité (à mon sens). Bref, j'affiche mon formulaire...il est soumis, les donées sont assaisinies et vérifiées en utilisant les méthodes de ma classe de traitement de données...pouis, par exemple, j'insère les données en bdd en utilisant ma classe de bdd (j'entends par là : query (), et c'est tout...pas : insertIntoDbFormResult()).
|
|
dimanche 11 février 2007 à 13:38:31 |
Re : Classes et vérification des données

Kdecherf
|
Rah ... Je ne fais que proposer ...
De plus, rien n'est parfait. De même, il suffit de refuser d'envoyer le formulaire si le javascript est désactivé.
Mais bon, chacun son chemin après ...
Cordialement, Kdecherf
|
|
dimanche 11 février 2007 à 13:44:32 |
Re : Classes et vérification des données

coockiesch
|
Réponse acceptée !
Yop! Oui, mais je trouverais dommage que des gens qui choisissent de désactiver JS n'ait pas accès au formulaire... Ca le fait pas et c'est pas ça qui va faire venir des visiteurs... De plus, faire confiance à qqch qui se passe du côté client, je trouve que c'est potentiellement une faille... @++ R@f La boîte à bouts de codes"On dit que seulement 10 personnes au monde comprenaient Einstein. Personne ne me comprends. Suis-je un génie???"
|
|
dimanche 11 février 2007 à 17:29:37 |
Re : Classes et vérification des données

FhX
|
Moi, mon "assainissement" pour une insertion en bdd se fait dans la classe sql. Je me suis fait mon propre parseur pour traiter mes données donc... :)
Après, moi j'ai bien une classe pour l'insertion de news ou autre. On appèle cela une factory. Un factory, bien developpé, peut être ré-utilisable pour n'importe quoi.
Par exemple, je me suis basé sur ca :
classe abstraite "factory"
classe abstraite "factory-news" étendant "factory" classe concrète "news-sql" étendant "factory-news" classe concrète "news-xml" étendant "factory-news"
classe abstraite "factory-commentaires" étendant "factory" classe concrète "commentaires-sql" étendant "factory-commentaires" classe concrète "commentares-xml" étendant "factory-commentaires"
classe abstraite "factory-dossier" étendant "factory" etc...
Je ne parle même pas des intérfaces pour gérer tout ca de manière autonome. Ce qui fait que quand j'appèle une factory, j'ai beaucoup de méthodes communes (ajout, suppression, modification), ce qui fait que j'ai une homogénité entre mes factorys.
Je peux faire un : $news = new news-sql(); $news->add(....); $comment = new comment-sql(); $comment->add(...);
etc....
L'uniformisation au maximum. Faudrait que je poste tout ca un jour :)
Cependant, pour en revenir au sujet, si tu veux faire une classe d'assainissement... autant le faire dans une classe type "factory" et mettre les méthodes d'assainissement en statiques. Ex d'assainissement : Dans ma classe abstraite "factory", je met une méthode en statique pour faire du strip_tags() et un htmlentities(). Rien de plus simple :
static public function _clean($var) { return htmlentities( strip_tags($var) ); }
Et non seulement elle en sera chargé qu'une seule fois en mémoire (principe du statissisme), mais elle sera accessible dans la classe elle même et aussi hors classe sans instanciation. De ce fait, je peux faire quelque chose comme : news-sql::_clean($myvar); ou alors : commentaires-sql::_clean($myvar); ca marche pareil :)
Voila voila :)
|
|
dimanche 11 février 2007 à 20:04:41 |
Re : Classes et vérification des données

malalam
|
Là, on est d'accord, si on parle en modules. Effectivement, j'ai aussi des appli fonctionnant avec des modules...même si c'est un peu différent. Un objet documents, par exemple, étendu par un objet pdf, ou un objet email, et des méthodes communes abstraites définies dans l'objet parent commun document : create, edit, save, etc...(en fait, tout ça venant d'autres objets plus haut encore : output, input...). Et dans ce cas, chaque objet gère ses méthodes d'écriture par exemple : le log sera en fichier xml, une demande s'écrira dans la bdd etc... Pourquoi pas,c'est une façon de coder. Même si j'ai tendance à préferer l'utilisation d'ibjets bien plus abstraits, aidant à définir peu à peu des objets plus spécialisés. Objets spécialisés qui sont au final tout petits et tout simples, vu que la plupart de leur méthodes sont définies en amont.
Mais ce dont je parlais, c'est ce que l'on voit trop souvent : un objet DB, qui gère les accès, méthodes db (fetch_row, query, etc), Et des méthodes annexes gérant le site du genre insertNews, insertUser etc...là, je ne suis pas d'accord. L'objet user se gère tout seul, aidé par l'objet db le cas échéant. Idem pour les news etc...
|
|
dimanche 11 février 2007 à 21:01:42 |
Re : Classes et vérification des données

FhX
|
Mala, y'a moyen que tu puisses m'envoyer ca par MP ou pas ? Ta gestion de module je parle... c'est possible ou ca reste dans ton cadre pro ? Sinon tant pis.
Mais si je peux te donner un conseil : "et des méthodes communes abstraites définies dans l'objet parent commun document : create, edit, save, etc..." Utilise des interfaces pour ca :p
D'ailleurs, j'avais essayé de faire une interface commune sql/xml, mais ca oblige à consommer plus de ressource. Le simple fait de tout récupérer dans un tableau que ce soit pour xml ou sql est une vraie plaie.
Parce qu'au final, tout ce qui est input/output (classe de db, classe xml, classe de fichiers...) doivent avoir les mêmes interfaces pour être vraiment utilisable. Imaginons une grosse factory style news... plus besoin de spécialiser la factory, tu passes l'objet en paramètre du constructeur et c'est parti :)
Jvais continuer sur cette voie. Si j'arrive à faire une interface commune xml/sql (donc utiliser xquery/xpath (ca va être marrant tiens...) ), ca sera beaucoup plus simple par la suite.
D'ailleurs Mala, toi qui connait mieux XPath que moi, tu sais comment faire pour récupérer un morceau comme le fait un *_fetch_array() pour sql ?
:)
|
|
lundi 12 février 2007 à 13:59:15 |
Re : Classes et vérification des données

TTMan
|
Merci à tous, au vu des réponses, je pense que je me suis aussi assez mal expliqué. J'ai un "objet" client, auquel j'ai cré une méthode intitulée "AjouterClient". Elle est copiée ci-dessous.
function AjouterClient() { // Récupération de la date du jour et mise en mémoire $this->date_creation = date('Y-m-d');//'2007-01-01'; // Ajout d'un client dans la table Clients mysql_query("INSERT INTO " . table_clients . " VALUES('', '', '$this->nom', '$this->prenom', '$this->adresse', '$this->code_postal', '$this->ville', '$this->pays', '$this->telephone', '$this->email', '$this->residence_station', '$this->telephone_station', '$this->date_creation')") or die('Problème de requête: '); }
A l'heure actuelle dans mon code je procède comme suit:
$nouv_client = new Client(); ensuite j'affecte des valeurs aux différentes propriétés de mon objet puis j'appelle la méthode "AjouterClient". Pour l'instant je vérifie les données avant de les affecter aux propriétés, mais quesiton maintenabilité je trouve pas ça top. Je pense utiliser une classe comme le suggèrent FhX et malalam.
Le javascript, je l'utilise pour une première vérification côté client, histoire de ne pas surcharger les aller/retour serveur, mais je préfère vérifier encore avant de mettre dans la BDD... et là c'est du pur PHP :-)
|
|
Cette discussion est classée dans : données, question, classe, classes, vérification
Répondre à ce message
Sujets en rapport avec ce message
Quand on parle de Classe [ par Tomcube ]
C'est une question très vaste,On parle de plus en plus de programmation objet. Qui dit programmation objet dit classe. D'ailleurs, c'est fou le nombre
classes et sessions [ par davwart ]
Hello all,là je desespere..voial j'ai deux fichiers.fichier1: classe.inc.phpclass User{}?>fichier2: index.phpinclude("classe.inc.php")session_start();
Vérification des données avec PHP [ par nino69 ]
Bonjour,Je cherche à tester si le champ, par exemple log, n'est pas vide:if ($_POST["newlog"] !=""){........}Jusqu'à là pas de problème. Maintenenat j
question sur access [ par dj26 ]
Bjr j'ai fait une base de données de tout mes CDcomment je peux faire un commande pour taper un titre et que access me le cheche dans ma base de donné
Question sur le formulaire (vérification email) [ par developvbdebut ]
Bonsoir tout le mondeJe souhaiterai savoir si il y a un code qui permet de vérifier si c'est bien une adresse email qui à était rentré dans le formula
Renseignement pour ma base de données [ par Arcy ]
Voilà , je me pose la question,J'ai ma base de données phpMyAdmin et sur mon formulaire de mon espace-membre j'y ai mis quelques listes (menu déroulan
taille max d'un tableau [ par Urukai1 ]
petite question toute bete - jusqu'à combien d'elements de type 'ma cle' => 'ma valeur' peut-on mettre dans un tableau en php sans que ca sature le s
fonction Autoload.... [ par Yemanjah ]
Bonjour , Après de multiples essais , je désespère et viens demander de l'aide ici.J'essaye de mettre en place un héritage et à vrai dire je cr
Retour des données d'une classe MySQL [ par Jerem_ ]
Salut, Depuis ce matin, j'asseye de coter une classe MySQL pour mon site. La classe marche très bien quand je fait une requete INSERT, etc .. Mais j
Instanciation d'une classe [ par aquouel ]
Bonjour tout le monde,j'ai une question à propos de l'instanciation de classe. Immaginons que j'ai une classe "User" qui possède des propriètés propre
Livres en rapport
|
Derniers Blogs
XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|