CAPTCHA CALCUL / CARACTÈRE À LA XIÈME POSITION D'UNE CHAÎNE.

Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
- - Dernière réponse : neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
- 30 avril 2007 à 15:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/42504-captcha-calcul-caractere-a-la-xieme-position-d-une-chaine

neigedhiver
Messages postés
2483
Date d'inscription
jeudi 30 novembre 2006
Statut
Membre
Dernière intervention
14 janvier 2011
14 -
Concernant le mélange php html, c'est pas ce que je voulais dire.
Dans les deux cas que tu cites, c'est un mélange php et html.
C'est une syntaxe qui ne me plait pas, parce que j'ai tendance à séparer le traitement de l'affichage, afin qu'un éventuel designer puisse ne s'occuper que de l'affichage, sans savoir comment est déterminé tout ce qui est affiché.
Sans gestionnaire de template comme Smarty, ça donnerait des variables définies tout au long du script, puis placées, en fin de script, dans le code html. Là, peu importe qu'on utilise echo() pour afficher tout le code html dans lequel on place les variables (ce qui est beurk) ou qu'on ouvre des tags php chaque fois qu'on veut afficher une variable (comme les templates compilés de Smarty).
Après, personnellement, j'utilise toujours Smarty. Bref, comme tu le dis, chacun sa façon de coder. Mais tout dépend aussi de ce qu'on veut faire : si tu veux fournir une source qui puisse être facilement adaptée et intégrée dans un site web par le premier venu, plus tu lui facilites la tâche, plus ça plaira...

Sinon, pour ne plus avoir de test, tu peux utiliser des fonctions appelées dynamiquement, comme je te le disais. Une pour chaque opération.
Exemple :

function operation_add($n1, $n2)
{
return ($n1 + $n2);
}

function operation_sous($n1, $n2)
{
return ($n1 - $n2);
}

function operation_mult($n1, $n2)
{
return ($n1 * $n2);
}

function operation_div($n1, $n2)
{
echo "Arrondissez à l'entier défaut.
";
echo "Exemple
Pour (0 <= x <= 4), 12.x donnera 12
Pour (5 <= x <= 9), 12.x donnera 13

";
return round($n1/$n2);
}

$operations = array(
0 => array(
'func' => 'add',
'signe' => '+'),
1 => array(
'func' => 'sous',
'signe' => '-'),
2 => array(
'func' => 'mult',
'signe' => '*'),
3 => array(
'func' => 'div',
'signe' => '/')
);

$nombre1 = rand(100,200);
$nombre2 = rand(1,100);
$num_op = rand(0,3);
$lesigne = $operations[$num_op]['signe'];
$lafonction = 'operation_' . $operations[$num_op]['func'];
$resultat = $fonction($nombre1, $nombre2);

Et là, pouf, plus aucun test.
WanaDien
Messages postés
7
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
28 mai 2007
-
@kankrelune : Okai :) merci ^^. Ouais j'ai vu ton code, en fait tu utilises la fonction eval() qui permettre d'afficher ton signe dans une variable et faire le calcul.
kankrelune
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015
-
le rand() n'est pas obsolète... il est juste plus lent que mt_rand()

Quand au switch vu la taille du code que tu utilise l'un ou l'autre la différence sera imperceptible au niveau du temps d'exécution... sur un gros code ça vaut le coup de se pencher sur la question mais sur un code court comme le tien tu peux mettre un switch c'est pas bien grave... privilégie celui qui te parait le plus clair et avec lequel tu est le plus à l'aise... mais comme je l'ai dit que ça soit un switch ou un if/elseif/else ce n'est pas le mieux en terme de logique... vas voir le code que j'ai posté (lien dans mon commentaire précédant)... .. .

@ tchaOo°
WanaDien
Messages postés
7
Date d'inscription
lundi 13 janvier 2003
Statut
Membre
Dernière intervention
28 mai 2007
-
Merci pour vos commentaires.

@Neigedhiver : Ok donc en fait le rand() est devenu obsolète en quelque sorte ?
Pour le floor() j'y avais pensé, mais j'ai choisi round() pour avoir un "niveau de difficulté" en plus. ^^
Personnellement, dans mes codes, je ferme et ouvre à chaque fois la balise php quand j'en ai besoin, c'est très rare que je fasse un truc de se genre : echo "
Oh ok $var
";, je préfère faire
Oh ok <?php echo $var; ?>
(mais bon là je l'ai pas fais, me demande pas pourquoi. lol) enfin après c'est chacun sa façon de coder lol

@kankrelune : tu me conseilles quoi alors ? je privilègie la vitesse par rapport à mes conditions, ou l'esthétique avec le switch ?

Bonne jounrée, je mettrais ma source à jour entre 2 insommies ^^
kankrelune
Messages postés
1293
Date d'inscription
mardi 9 novembre 2004
Statut
Membre
Dernière intervention
21 mai 2015
-
@ neigedhiver... par contre il est indéniable qu'un switch bien indenté est bien plus clair à lire... .. . ;o)

@ tchaOo°