class et else

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : class et else

par Berzemus » 13 mai 2008, 13:14

Juste en passant comme un ovni, mais pour s'assurer de la nature de certaines valeurs, pourquoi ne pas utiliser des assertions ? ( assert() , ...)

Ca réduit de pas mal les conditions diverses.

par katagoto » 13 mai 2008, 12:28

Bah en même temps j'ai refais ma classe et vous me lâchez pas, donc vous êtes un peu pénible...

par caroube » 13 mai 2008, 12:25

Il y a plein de gens sur ce forum qui sont ouvert aux conseils et ça serait dommage de te dégouter pour si peu.
Ne t'en fais pas.
Que tu protèges avec un addslashes() des valeurs entières, je trouve ça inutile et paranoïaque.
Il y a un truc que je comprends pas. A quoi sert de "protéger" le résultat de la fonction filesize() en se disant "et si elle retournait autre chose qu'un entier" et ne pas "protéger" le résultat de la fonction intval() en supposant qu'elle va retourner un entier.
Quitte à se méfier d'une fonction, autant que ce soit celle qui est censée convertir une chaîne de caractères (avec des trucs pas autorisés) plutôt qu'à celle qui donne la taille d'un fichier.
Mais bon, ce que j'en dis ...

par katagoto » 13 mai 2008, 12:17

En même temps c'est pas toi qui le fait...

par Sékiltoyai » 13 mai 2008, 11:18

En même temps ca va pas être super long si c'est que 784 lignes…

par katagoto » 13 mai 2008, 10:40

Ok, tu as gagné je vais revoir mes 784 lignes de codes (vive la POO :roll: )

par zeus » 13 mai 2008, 10:05

Tu as bien compris le truc, nous ne donnons que des conseils.

Mais, quand tu nous dis "chacun sa méthode", on a franchement l'impression qu'on est HS de pas protéger chaque transfert de variable.

Sinon, sache que les principes de protections ont un cout en terme de temps d'exécution. Que si tu développes un petit site collaboratif, ça ne se verra peut être jamais, mais que si tu est sur une application de plus grosse envergure, ça va finir par se voir.

Et sinon, protéger pour protéger, c'est aussi inutile que de faire
$nb = 12;
for($i=0; $i<5; $i++)
{
  $nb+1;
}
parce que tu penses que le + n'est pas protégé. C'est une caricature, mais franchement, c'est dans la même idée.

Que tu protège tout ce qui arrive de l'extérieur est une excellente chose. Que tu protèges les chaines à l'intérieur de ton application, pourquoi pas, même si j'en vois moins l'utilité, du moins selon l'application.
Que tu protèges avec un addslashes() des valeurs entières, je trouve ça inutile et paranoïaque.

Maintenant, il est clair que je cherche à te convaincre, mais tu restes le maître des clés et c'est toi qui décide pour ton application.

par katagoto » 13 mai 2008, 09:53

Ca va partir en flood mais, tout le monde me prodigue ces conseils, je les écoutes, je les retiens, mais voilà.
Ce ne sont que des conseils pas des ordres...
C'est un peu comme si quelqu'un que tu ne connais pas, qui ne te paye pas te demander de coder un gros site en procédurale...
Moi, mon stéréotype, je surprotège, je ne commente pas mon code, je code très vite...
Chacun le sient, je respecte le votre, respectez le mien, même si il est idiot et je le conçoit :roll:

par zeus » 12 mai 2008, 22:58

Allez caroube, respire.

Il y a plein de gens sur ce forum qui sont ouvert aux conseils et ça serait dommage de te dégouter pour si peu.

par caroube » 12 mai 2008, 22:53

Tu aurais peut-être du faire une année d'algorithmique plutôt.
Bon, écoute, que ce soit à propos des bases de données ou de la programmation, tu as l'air d'en savoir beaucoup plus que les autres (ou du moins le croire) et tu n'as pas l'air du genre à accepter les conseils. Donc, je m'arrête là et je te laisse programmer de la façon que tu veux avec des if trop nombreux pour que tu t'en sortes et des fonctions qui ne servent à rien.

par katagoto » 12 mai 2008, 20:37

Super je vais même réécrire PHP en C++
Mon année de cryptographie n'aura pas été vaine :roll:

Bah je me méfis de tout : "Tout le monde ment" qui sait a qui appartient cette phrase 8-)

par caroube » 12 mai 2008, 20:32

Dans ce cas-là, n'utilise pas la fonction filesize, mais plutôt une boucle avec fseek qui te permettra de compter un par un les octets du fichier. :?
et je pense que tu devrais te méfier des fonctions de génération du md5 ou du sha1. un conseil : réécris-les en assembleur !

par katagoto » 12 mai 2008, 15:06

chacun sa méthode :roll:
Je me méfis de tout donc je fais des choses inutiles, ça me permet d'avoir plus confiance même si ça ne changera rien :roll:

par caroube » 12 mai 2008, 14:14

Autres points :
1) tu fais "intval(addslashes(filesize()" : pourquoi ?
filesize renvoie un entier : addslashes n'ajoutera donc rien il ne sert donc à rien de reconvertir en entier

2) tu fais "htmlentities(md5_file(" : pourquoi ?
md5_file renvoie des caractères hexadécimaux (0 à 9, A à F). Il n'y a aucun caractère spécial du HTML et htmlentities ne sert à rien

par caroube » 12 mai 2008, 14:07

Tu viens de l'expérimenter, il ne faut pas imbriquer autant de niveaux de if. C'est extrêmement difficile à tester et c'est extrêmement difficile à maintenir (imagine que tu sois obligé de faire des modifs sans 6 mois -- ou pire, que quelqu'un d'autre sit obligé de faire des modifs).

3 niveaux d'imbrications représentent 2^3 = 8 cas à traiter, ce qui est le maximum que peut gérer la mémoire à court terme d'un cerveau humain à peu près normal. Là tu es à 5 niveaux avec deux AND, soit 128 cas à tester.

Soit tu scindes ton code pour faire des fonctions, soit tu inverses les sens des tests et tu gères les cas un par un
private function verification(){
  if (intval(addslashes(filesize($this->url)))!=$donnees->poid) { 
    $this->modifie=1;
    return();
  }
  $this->poid=$donnees->poid; 

  if (htmlentities(md5_file($this->url))!=$donnes->md5 OR htmlentities(sha1_file($this->url))!=$donnes->sha1) { 
    $this->modifie=1; 
    return();
  }
  $this->sha1=$donnees->sha1; 
  $this->md5=$donnees->md5; 
...

}
Et comme ça, tu peux ajouter sans problème 200 tests si tu en as envie, chacun étant indépendant des autres.