IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Sécurité et $_GET


Sujet :

Langage PHP

  1. #21
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 149
    Points : 206
    Points
    206
    Par défaut
    Tu peu réussir à te passer de ce fameux is_numeric avec ce qu'on a dit plus haut pour contrôler un entier, et donc tu pourrais n'avoir plus que deux conditions au lieu de trois dans tes instructions if sur les chiffres.

    Je trouve que le tableaux $tab de départ et le contrôle qui suis, "inutile" dans ton script.
    Ou alors ne répète pas les valeurs, utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if($get_var === $tab[0]) {//cas string

  2. #22
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par nextdev Voir le message
    Je trouve que le tableaux $tab de départ et le contrôle qui suis, "inutile" dans ton script.
    Oui ou l'on peut dire aussi que les contrôles qui suivent son inutiles si déjà on teste que la valeur est égale à un élément du tableau...

    Je pense qu'il faut considérer ses exemples de façon distincte.

  3. #23
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 149
    Points : 206
    Points
    206
    Par défaut
    @ABCIWEB
    Bizzare... ça aurais dû te plaire le coup du "j'ai quasi plus que le tableau à changer dans mes prochaines maintenance", car apparemment tu es plutot flémard et préfère la "qualité" de lecture du script (et encore, ça dépendra du lecteur), plutot que la qualité du service rendu par le script.

    Effectivement, un des deux test est inutile...
    Bah avec moi, c'est vite choisi entre l'itération d'un tableau, et le test directe d'une variable.

  4. #24
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    On s'est pas compris, je veux dire que je pense que ses exemples sont indépendants et que si l'on connait par avance les valeurs valables retournées on peut utiliser un tableau et que dès lors il suffit de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $tab = array('valeur1', 'valeur2', 'valeur3');
    $get_var = isset($_GET['var']) && in_array($_GET['var'],$tab) ? $_GET['var'] : null;
    (et donc pas besoin de contrôle supplémentaire).

  5. #25
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 149
    Points : 206
    Points
    206
    Par défaut
    Béh il reste le dernier test, pour savoir quelle action éxecuter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $tab = array('valeur1', 'valeur2', 'valeur3');
    $get_var = isset($_GET['var']) && in_array($_GET['var'],$tab) ? $_GET['var'] : null;
    if($get_var == 'valeur1') {
    Et c'est à cause de ce test que le tableau devient "bidon", à moins de vouloir faire qqch avant de poursuivre le script si aucune valeur n'est trouvée.

    Alors moi je dirais qu'il suffit simplement de faire ça : (tu choisis pour le null)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //$get_var = null;
    if(isset($_GET['var'])) { $get_var = $_GET['var']; }//else{ $get_var = null; }
    if($get_var === 'valeur1') {
    Par "indépendants", tu veux dire une action par page !?

  6. #26
    Membre émérite
    Avatar de Eric2a
    Homme Profil pro
    Technicien
    Inscrit en
    Septembre 2005
    Messages
    1 225
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Corse (Corse)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 225
    Points : 2 411
    Points
    2 411
    Par défaut
    À voir également switch...
    L'instruction switch équivaut à une série d'instructions if. En de nombreuses occasions, vous aurez besoin de comparer la même variable (ou expression) avec un grand nombre de valeurs différentes, et d'exécuter différentes parties de code suivant la valeur à laquelle elle est égale. C'est exactement à cela que sert l'instruction switch.

    Source Structure de contrôle Switch
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    $get_var = isset($_GET['get_var']) ? trim((string)$_GET['get_var']) : '';
     
    if($get_var!=''){
    	switch($get_var){
    		case 'valeur1':
    			// Code éxecuté si $get_var == 'valeur1'
    			break;
     
    		case 'valeur2':
    			// Code éxecuté si $get_var == 'valeur2'
    			break;
     
    		case 'valeur3':
    			// Code éxecuté si $get_var == 'valeur3'
    			break;
     
    		default:
    			// Code éxecuté si $get_var ne correspondant à aucune des valeurs présentes ci-dessus
    			$get_var='';
    	}
    }
     
    if($get_var==''){
    	// Code éxecuté si $get_var n'était pas défini ou que sa valeur etait invalide
    }

  7. #27
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par nextdev Voir le message
    Par "indépendants", tu veux dire une action par page !?
    Je voulais dire que dans le dernier message de helpcomm le bloc de code qu'il donne doit contenir plusieurs exemples distincts. Sinon effectivement il n'y a pas de logique entre les lignes de début (avec le tableau) et la suite.

    Sinon le tableau c'était pour contrôler si une valeur externe était une valeur valide attendue. Evidemment, s'il y a besoin de tester une égalité derrière ça perd son intérêt...

  8. #28
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 149
    Points : 206
    Points
    206
    Par défaut
    Petite précision pour switch, c'est plutot très lent... comparé à du elseif.
    Mais je suis d'accord que c'est bien jolie dans le code




  9. #29
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Bonjour,

    Citation Envoyé par nextdev Voir le message
    Petite précision pour switch, c'est plutot très lent... comparé à du elseif.
    cette assertion est malheureusement fausse car si elle peut se vérifier sur certains cas, elle est difficilement vérifiable, voire fausse, dans le cas général.

    Je vous invite à aller consulter la documentation sur le switch http://php.net/manual/en/control-structures.switch.php.

    outre la beauté de construction, qui est dans l'œil du spectateur, le concept de rapidité peut être invalidé par le fait que dans la construction du switch, l'opérande se compare à un nombre fini de valeurs finies (pas de retour de fonction, par exemple). De plus cet opérande peut être une expression (retour de fonction ou autre type d'expression), qui ne sera évalué qu'une seule fois, alors que dans une implémentation naïve du if/elseif, cette évaluation pourra être répétée autant de fois qu'il y a de cas.

    de fait, préconiser une construction plutôt qu'une autre dépendra essentiellement de l'objectif à atteindre et des conditions à vérifier (un switch ne permettra pas par exemple de vérifier l'association de deux conditions, sauf à mettre en place une gymnastique intellectuelle préjudiciable à la compréhension du code).

    Enfin, le critère de rapidité entre les deux constructions est de l'ordre de la micro-optimisation et si le développeur chercher à améliorer la rapidité d'un traitement, c'est l'algorithme utilisé dans son ensemble qui est à revoir plutôt que cette construction seule.

  10. #30
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    utiliser filter_input_array c'est fait pour ....

  11. #31
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 389
    Points : 10 422
    Points
    10 422
    Par défaut
    Citation Envoyé par Agnello Fabrice Voir le message
    Enfin, le critère de rapidité entre les deux constructions est de l'ordre de la micro-optimisation et si le développeur chercher à améliorer la rapidité d'un traitement, c'est l'algorithme utilisé dans son ensemble qui est à revoir plutôt que cette construction seule.
    Oui... et le terme "micro" est encore presque trop fort. En d'autres termes, se focaliser sur ce genre de broutilles est ce qu'on appelle "ne pas avoir le sens des priorités"

  12. #32
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par ABCIWEB Voir le message
    Oui... et le terme "micro" est encore presque trop fort. En d'autres termes, se focaliser sur ce genre de broutilles est ce qu'on appelle "ne pas avoir le sens des priorités"
    en effet, et pour rajouter une couche, les règles en terme d'optimisation sont :
    Citation Envoyé par M.A. JACKSON
    Rules of Optimization:
    Rule 1: Don't do it.
    Rule 2 (for experts only): Don't do it yet.

  13. #33
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 149
    Points : 206
    Points
    206
    Par défaut
    Bon bah... j'étais parti en courant parceque je savais que y'en avait qui allaient me tomber dessus....
    Ici, vous aimez pas trop les ptit details croquants qui remettent en question vos habitudes.

    Mes conseils sont surtout bon à prendre pour ceux qui font des gros scripts, et assez consulter, et pas juste avec un isset, ou un switch.
    Voir ceux qui font des "framework" entier remplis de centaine de fonctions, de centaine de "isset/switch".... la vous comprendrez que c'est plus en micro seconde que ça se joue, et puis vous changerez vos habitudes et recommencerez votre appli de zero...

    Vous n'arrivez pas à le lire, soit disant non "lisible"... béh je peu plus rien pour vous... changez votre passe temps... (c'est d'ailleurs souvent l'inverse, votre code "lent" qui est plus compliqué à écrire...)

    Une fois qu'un script réalise ce que vous attendez, ça ne veux pas forcement dire qu'il le réalise d'une bonne manière...

    Bref, je vous en dirais pas plus, car de toute maniere cela ne sert visiblement à rien, a part se faire descendre aulieu de l'inverse..., et pis c'est vrai que vos script risque de peu demander de ressource, et également de peu être exécuté en mémé temps par divers internautes.

    Aplus, et bonne route helpcomm

    Edit @Agnello Fabrice : Chez moi, il n'y a pas de rules d'optimisation... le bon sens coule de source pendant le codage initial...

  14. #34
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Cher nextdev, je vous remercie pour votre réponse, vous avez réussi à m'arracher un sourire.

    Citation Envoyé par nextdev Voir le message
    Ici, vous aimez pas trop les ptit details croquants qui remettent en question vos habitudes.
    En terme de détail croquant, il me semble que vous manquez sévèrement de recul. Votre message initial auquel je répondais contient une information non seulement fausse, mais en plus vous ne l'avez même pas étayée avec un quelconque exemple ou bench permettant de valider votre affirmation. Si j'étais aussi naïf que vous le laissez apparaître, je vous aurai opposé un exemple simple comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <?php
    $var = 'polop';
    $t = microtime();
    if($var == 'test')
      echo 'test';
    elseif($var == 'truc')
      echo 'truc';
    elseif($var == 'bidule')
      echo 'bidule';
    elseif($var == 'machin')
      echo 'machin';
    elseif($var == 'chose')
      echo 'chose';
    elseif($var == 'marcel')
      echo 'marcel';
    elseif($var == 'polop')
      echo 'polop-';
    else
      echo 'default';
    echo 'temps passé : '.(microtime()-$t).'<br>';
    $t = microtime();
    switch($var){
    case 'test':
      echo 'test';
       break;
    case 'truc':
      echo 'truc';
       break;
    case 'bidule':
      echo 'bidule';
       break;
    case 'machin':
      echo 'machin';
       break;
    case 'chose':
      echo 'chose';
       break;
    case 'marcel':
      echo 'marcel';
       break;
    case 'polop':
      echo 'polop';
       break;
     default:
      echo 'default';
    }
    echo 'temps passé : '.(microtime()-$t).'<br>';
    ?>
    qui me donne en résultat sur ma machine avec PHP 5.3.1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    temps passé : 1.3000000000041E-5
    temps passé : 1.1000000000094E-5
    Comme vous pouvez le voir, le temps de traitement pour le switch est plus court, en revanche, comme je l'ai déjà écrit précedemment, je me retiens d'en tirer une règle pour le cas général.

    Citation Envoyé par nextdev Voir le message
    Mes conseils sont surtout bon à prendre pour ceux qui font des gros scripts, et assez consulter, et pas juste avec un isset, ou un switch.
    Voir ceux qui font des "framework" entier remplis de centaine de fonctions, de centaine de "isset/switch".... la vous comprendrez que c'est plus en micro seconde que ça se joue, et puis vous changerez vos habitudes et recommencerez votre appli de zero...
    Pourquoi donner ces conseils sur le forum "débuter" alors ?
    Enfin, merci encore pour vos conseils, mais j'ai reçu en stages des étudiants qui avaient le même discours et ce manque d'humilité met la plupart du temps à mal celui qui le tient.

    Citation Envoyé par nextdev Voir le message
    Vous n'arrivez pas à le lire, soit disant non "lisible"... béh je peu plus rien pour vous... changez votre passe temps... (c'est d'ailleurs souvent l'inverse, votre code "lent" qui est plus compliqué à écrire...)
    je vous trouve bien présomptueux, ne connaissant rien de ce que je peux produire. Mais il est probable qu'un jour vous utilisiez une de mes production, notamment si vous recherchez un bien immobilier, lorsque vous devrez faire le décompte de votre retraite (mais il me semble que vous avez le temps) ou encore lorsque vous utilisez des chèques vacances.

    Citation Envoyé par nextdev Voir le message
    Une fois qu'un script réalise ce que vous attendez, ça ne veux pas forcement dire qu'il le réalise d'une bonne manière...
    Ne sachant rien de mes travaux actuels, j'imagine que vous parlez de votre production, mais vous vous posez alors en contradiction avec ce que vous dites plus bas (cf infra)

    Citation Envoyé par nextdev Voir le message
    Edit @Agnello Fabrice : Chez moi, il n'y a pas de rules d'optimisation... le bon sens coule de source pendant le codage initial...
    Citation Envoyé par nextdev Voir le message
    Bref, je vous en dirais pas plus, car de toute maniere cela ne sert visiblement à rien, a part se faire descendre aulieu de l'inverse..., et pis c'est vrai que vos script risque de peu demander de ressource, et également de peu être exécuté en mémé temps par divers internautes.
    relisez vous et tirez l'enseignement de tout ce que j'ai pu écrire supra.

    EOT.

  15. #35
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 727
    Points
    10 727
    Par défaut
    faut faire le bench dans un boucle sinon ça n'as pas de sens

  16. #36
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    faut faire le bench dans un boucle sinon ça n'as pas de sens
    Tout à fait... mais comme le bench en lui même n'a pas de sens

  17. #37
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 149
    Points : 206
    Points
    206
    Par défaut
    C'est helpcomm qui va se demander, qui a du sens...



    @Agnello Fabrice
    Donc ce coup ci, le message t'es entièrement destiné, tout entier !

    Alors tu comptais prouvez quoi là au juste !?
    Moi c'est pas mon cas de l'ouvrir sans savoir, comparé à toi visiblement...
    Alors pour ton info perso, j'ai une centaine de benchs php4 à mon actif (tous réalisé il y a bien lgtps)
    J'aurais d'ailleurs peu être du te montrer comment on fait un bench avec les bons ingrédients...

    Ces conseils ont été donnée suite au échanges précédents, et si tu avais survolé un peu, tu aurais remarqué qu'il n'y a pas que des débutants qui sont intervenus, d'ailleurs le débutant a ptete aussi envie d'etre aiguillé sur la bonne voie...

    On va voir d'ici peu qui met à mal qui, mais commence par arrêter de me vouvoyer...
    Pauvres étudiants... C'est sur qu'ils avaient certainement pas Votre Délicatesse...

    Arrête de te sentir viser et de me prendre de haut... moi quand je vouvoie, c'est que je parle à plusieurs personnes...
    Tu dois être sacrément complexé pour sortir un texte pareil et juger les gens derrière ton ordi comme tu viens de me faire.
    Moi je suis la pour le plaisir de coder, et aider les autres qui ont des soucis, mais pas pour foutre ma meerde comme toi.

    Non je ne parlais pas de ma production, mais bien en parti de la tienne, qui semble à revoir vu ton script bench mit ici, codé d'une "mauvaise manière"...




    Bon alors,... pour rentrer dans le vif du sujet :

    LA mesure initiale :
    Citation Envoyé par Agnello Fabrice :
    else if :: 1.3000000000041E-5
    switch : 1.1000000000094E-5
    Bah tu es un sacré HYPOCRITE ! (désolé je suis obligé là...)
    Tu as montré le résultat qui t'arrangeait, alors que celui ci varie... et le elseif arrive à tomber très très bas, tandis que le switch reste un peu prêt constant.
    Il faut que tu actualise plusieurs fois... pour bien cerner les valeurs, et en faire une moyenne par exemple pour t'aider...

    Bon comme j'ai déjà dit, c'est sur que c'est plutôt minime le gain, et cela servira surtout pour les applications assez sollicitées.

    Quelques exemples sur un serveur php 5.2.17 (qui doit surement pas différé de ta version sur ces fonctions là)
    Avec ton script exactement :
    else if :: 0.00010700000000002
    switch : 1.000000000001E-5

    else if :: 8.9999999999979E-5
    switch : 9.0000000000368E-6

    else if :: 0.00077000000000005
    switch : 2.1000000000049E-5

    else if :: 0.00034800000000001
    switch : 1.8999999999991E-5

    else if :: 9.5000000000067E-5
    switch : 9.0000000000368E-6

    else if :: 0.00034500000000004
    switch : 2.000000000002E-5

    else if :: 9.5000000000067E-5
    switch : 7.999999999897E-6

    else if :: 8.8999999999992E-5
    switch : 9.000000000009E-6

    else if :: 0.00031200000000003
    switch : 1.0999999999983E-5

    else if :: 0.00037
    switch : 1.8999999999998E-5

    La même avec php 4, c'est surtout pour lui que c'était assez croustillant
    J'avoue que tu m'a fait un peu peur sur le coup, avec un bench sur php5...
    Avec ton script exactement :
    else if :: 0.00017300000000001
    switch : 1.6999999999989E-005

    else if :: 0.00011899999999998
    switch : 1.4000000000014E-005

    else if :: 0.00012100000000004
    switch : 1.4000000000014E-005

    else if :: 0.00012000000000001
    switch : 1.4000000000014E-005

    else if :: 0.00012000000000001
    switch : 1.299999999993E-005

    else if :: 0.00012200000000007
    switch : 1.3999999999958E-005

    else if :: 0.00013299999999999
    switch : 1.2999999999985E-005

    else if :: 0.00013399999999997
    switch : 1.4000000000014E-005

    else if :: 0.00011900000000009
    switch : 1.400000000007E-005
    J'aperçois déjà ton sourire de niais...


    Mais c'est pas tout, car ton bench est mal réalisé...
    Et avec un, codé de la bonne manière... Cela donne :
    php 5.2.17 :
    else if :: 0.004532
    switch : 0.009966

    else if :: 0.004489
    switch : 0.009981

    else if :: 0.004462
    switch : 0.009969

    else if :: 0.004493
    switch : 0.010221

    else if :: 0.004424
    switch : 0.009974

    php 4 :
    else if :: 0.025548
    switch : 0.054037

    else if :: 0.032394
    switch : 0.042141

    else if :: 0.029229
    switch : 0.047316

    else if :: 0.032228
    switch : 0.038025

    else if :: 0.038717
    switch : 0.048655
    (ta règle générale ou pas, elseif est devant...)

    Donc en fait, ça peu être croquant même sur php5

    Il est hors de question que je te montre le script de mon bench, car j'ai aucunement envie de t'aider. (mais même le tient montre la faiblesse du switch)
    Le sujet actuel contient notamment des éléments pour le réaliser correctement.
    Et sinon reste en mode switch, je m'en contre fiche...


    Relis tout, et regarde ou te mène ta connerie...

  18. #38
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2010
    Messages : 80
    Points : 169
    Points
    169
    Par défaut
    Nextdev,

    pour commencer, n'espérez pas que je vous tutoie, car je ne vous connais pas et par voie de conséquence, vous ne faites ni partie de mes amis, ni de ma famille.

    La preuve à apporter, s'il y en a une, est que l'affirmation péremptoire que vous avez asséné initialement sur la qualité du if/elseif par rapport au switch est erronée tant que vous ne l'accompagnez pas d'au moins une référence et/ou un bench vérifiable par les autres contributeurs.

    Vous vous targuez d'avoir une expérience certaine, vous devriez donc déjà savoir ce dont je parle, ou à minima le comprendre.

    Je vous remercie par ailleurs de votre sollicitude quant à mon complexe tant il est vrai qu'il est important au point d'avoir besoin de me cacher derrière un pseudo.

    Concernant les benchs à proprement parler, il ne vous a surement pas échappé la précision initiale qui parlait d'un exemple naïf qui n'avait que valeur d'exemple, n'est pas invalidé par vos propres tests et montre aussi que des variations peuvent exister d'une plateforme à l'autre pour un bench identique (ce pourquoi sont aussi faits les benchs, mais vous le savez certainement).

    Là encore, je ne m'autorise pas à en tirer une règle pour le cas général mais dans la construction d'un algorithme, lorsque viendra le temps de l'optimisation, cette partie là sera éventuellement abordée, et ce seulement lorsque l'algorithme sera lui même validé comme étant optimal.
    Chose qu'apparemment vous ne faites pas, puisque votre bon sens vous dicte les solutions optimales dès le départ.

    Enfin, pour ce qui est de mon hypocrisie, vous aurez certainement remarqué que je poste sous mon vrai nom (et ce depuis 1996 sur usenet), que j'ai à chaque fois appuyé mes messages de références, que je n'ai jamais eu de soucis à montrer mes sources, que par ailleurs je sais critiquable (par les bonnes personnes).

    Qu'avez vous fait depuis ce fameux message qui a déclenché cette FW ?

    pour finir pour de bon, vous devriez vous rapprocher de Fabien Potencier pour lui signaler que Symfony et Doctrine sont tous deux bourrés de switch. J'ai pu en trouver 319 dans 154 fichiers dans la version 1.4.8 (on y compte aussi 329 elseif dans 125 fichiers - dois-je en tirer une règle ?). Si vous ne m'estimez pas capable de comprendre l'intérêt du if/elseif par rapport au switch, peut-être les considèrerez vous comme étant digne de votre enseignement ?

    EOT (pour de bon).

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. La Sécurité dans Access
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 81
    Dernier message: 24/06/2007, 01h07
  2. Réponses: 8
    Dernier message: 13/03/2007, 09h40
  3. [Sécurité] $_GET : sécurisé ?
    Par Metallic-84s dans le forum Langage
    Réponses: 9
    Dernier message: 28/02/2006, 11h11
  4. [TomCat][sécurité]config fichier web.xml
    Par liomac dans le forum Tomcat et TomEE
    Réponses: 6
    Dernier message: 24/09/2003, 15h46
  5. Pb de sécurité
    Par xtrips dans le forum Débuter
    Réponses: 6
    Dernier message: 16/04/2003, 07h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo