fonctions en tableaux

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 : fonctions en tableaux

par Invité » 11 mars 2006, 19:22

tain faut que j'arrete la moquette, je recommence:
j'ai un tableau

Code : Tout sélectionner

$tab[0]='rouge'; $tab[1]='blanc'; $tab[2]='bleu';
une fonction

Code : Tout sélectionner

function MaFonction ($couleur0, $couleur1, $couleur2) { echo $couleur0; echo $couleur1; echo $couleur2; }
je passe les elements du tableau à MaFonction mais ça ne marche pas:

Code : Tout sélectionner

MaFonction ($tab[0], $tab[1], $tab[2]);

par Invité » 11 mars 2006, 19:17

ok, ça marche!
sinon autre question:
j'ai un tableau

Code : Tout sélectionner

$tab[0]='rouge'; $tab[1]='blanc' $tab[2]='bleu'
et une fonction

Code : Tout sélectionner

funcion MaFonction ($couleur0, $couleur1, $couleur2); echo $couleur0; echo $couleur1; echo $couleur2;
je passe les elements du tableau à MaFonction mais ça ne marche pas:

Code : Tout sélectionner

funcion MaFonction ($tab[0], $tab[1], $tab[2]);
Je ne comprends pas où je me suis planté, je n'ai pas d'erreur mais la fonction n'affiche pas non plus les coueurs.

par Ripat » 11 mars 2006, 18:04

C'est un avertissement, pas une erreur.

J'ai fait une erreur d'affectation.
$tab[1]= date;   // pas correct
$tab[1]= 'date'; // correct

par Invité » 11 mars 2006, 18:03

quand je supprime la ligne qui pose pb
$tab[1]= date;
j'obtiens une deuxième erreur
Notice: Undefined offset: 1 in c:\program files\easyphp1-8\www\coop2\form_fertilisation.php on line 213

Fatal error: Call to undefined function: () in c:\program files\easyphp1-8\www\coop2\form_fertilisation.php on line 213
et là c'est la ligne suivante qui pose pb:
$tab[1]('H:i:s');

par Invité » 11 mars 2006, 17:02

en testantle code, je reçois l'erreur suivante:
Notice: Use of undefined constant date - assumed 'date' in c:\program files\easyphp1-8\www\coop2\form_fertilisation.php on line 209
11-03-2006 16:00:57
16:00:57

par Ripat » 11 mars 2006, 15:01

je vais tester ça, merci. Mais pourquoi est-ce déconseillé d'utiliser eval?
Principalement pour éviter d'ouvrir son serveur à des injections de code malicieux.

Voici un peu plus d'info:
Eval’s Inherent Security Risk

Eval by its nature is always going to be a security concern. You taking a string from an external source and bringing it into your PHP script, you can think of attacks of this nature to being equivalent to SQL injection though they can generally cause a lot more damage ($GLOBALS generally contains your DB password and PHP has lots of filesystem functions). Now proper escaping and data cleaning should mitigate these risks but its easier to just avoid them whenever possible.
Uses of Eval

Eval has 3 primary uses, providing compatability between php versions, generating class definitions and logic at runtime, and call functions with variable names. Now when we look at these 3 use cases the actual when to use eval choice breaks down like this: using eval for compat is great, for logic is good if there is no other way, and NEVER to call functions.
La fin du texte est catégorique: ...and NEVER to call functions.

Source:
http://blog.joshuaeichorn.com/archives/ ... al-in-php/

Mais j'imagine que tu devrais trouver d'autres commentaires sur le sujet.

par Invité » 11 mars 2006, 14:16

je vais tester ça, merci. Mais pourquoi est-ce déconseillé d'utiliser eval?

par Ripat » 10 mars 2006, 21:08

Eviter eval() quand c'est possible.

L'exemple suivant montre comment faire plus simplement:
$tab[0]= date('d-m-Y H:i:s');
$tab[1]= date;

echo $tab[0];
echo '<br />';
echo $tab[1]('H:i:s');

par KooKiz » 10 mars 2006, 20:20

Si tu fais :
$tab[0]= fonction0(); 
Tu ne vas pas mettre la fonction dans le tableau, mais sa valeur de retour.
Il faut plutôt que tu fasses quelque chose du genre :
$tab[0]= "fonction0();" 
Et tu appelles ta fonction de cette manière :
eval($tab[0]);

par Spols » 10 mars 2006, 19:58

je suis pas sur que ca puisse fonctionner

qu'a tu deja essayer??

fonctions en tableaux

par Invité » 10 mars 2006, 17:27

bonjour à tous,
j'ai un tableau tab qui contient des fonctions
$tab[0]= fonction0();
$tab[1]= fonction1();
$tab[2]= fonction2();

quelle syntaxe pour exécuter une des fonctions en appelant un élément du tableau?