PHP : Calcul opération dans une variable - PHP - Programmation
Marsh Posté le 29-04-2009 à 18:01:03
Au lieu de :
eval( "\$resultat = \"$operation\";" );
Essayer :
eval("$resultat = $operation;" );
Marsh Posté le 29-04-2009 à 18:07:25
Cool, la plus grosse faille de sécurité jamais inventée
J'espère qu'il y a un contrôle du contenu
Marsh Posté le 29-04-2009 à 18:21:50
J'ai essayer
eval("$resultat = $operation;" );
Le mass
Parse error: syntax error, unexpected '=' : eval()'d code on line 1
Marsh Posté le 29-04-2009 à 18:24:50
J'ai essayé :
eval("$resultat = $operation;" );
Voici le message d'erreur
"Parse error: syntax error, unexpected '=' in C:\wamp\www\test.php(26) : eval()'d code on line 1"
Marsh Posté le 29-04-2009 à 21:53:25
$resultat est une variable du contexte d'exécution, que tu veux remplir, alors que $operation est une variable du contexte d'évaluation que tu veux lire. Même sans savoir comment fonctionne eval(), ça ne peut clairement pas marcher.
Je pense que ça devrait plutôt être un truc du genre :
Code :
|
Pour que ce soit le contenu de $operation qui soit évalué, et non la variable.
[Edité : si eval porte sur le contexte d'exécution, ce sera plutôt
Code :
|
ou n'importe quoi pour échapper $resultat]
[Edité bis : balise code]
Marsh Posté le 29-04-2009 à 22:31:15
Nan mais faut aussi à tout prix vérifier $operation, parce que sinon on peut faire exécuter ce qu'on veut
Marsh Posté le 30-04-2009 à 17:12:42
guybrush02 a écrit : $resultat est une variable du contexte d'exécution, que tu veux remplir, alors que $operation est une variable du contexte d'évaluation que tu veux lire. Même sans savoir comment fonctionne eval(), ça ne peut clairement pas marcher.
|
Code : |
Marsh Posté le 30-04-2009 à 17:13:22
FlorentG a écrit : Nan mais faut aussi à tout prix vérifier $operation, parce que sinon on peut faire exécuter ce qu'on veut |
c'est surtout qu'il faut pas utiliser eval()
Marsh Posté le 30-04-2009 à 17:34:25
Code : |
Marsh Posté le 30-04-2009 à 18:52:28
C'est ce que je souhaitais écrire, mais je crois que je peine un peu avec la mise en forme du forum
Finalement, ça marche ou pas ? ^^
Marsh Posté le 30-04-2009 à 19:02:21
oui, mais utilise plutôt la solution de masklinn (on comprendra mieux d'où sort $resultat par la suite)
Marsh Posté le 30-04-2009 à 19:06:57
Et faut nous donner l'adresse du site, histoire qu'on s'amuse un peu
Marsh Posté le 01-05-2009 à 15:55:04
Salut tout le monde,
merci pour vos tuyaux. Malheureusement, j'essaye d'exécuter vos propositions avec wamp5 mais aucune ne fonctionne. J'ai toujours un message de ce type qui s'affiche:
"Parse error: syntax error, unexpected '=' in C:\wamp\www\fichier.php(81) : eval()'d code on line 1"
Marsh Posté le 01-05-2009 à 15:55:15
Au faite FlorentG, pourquoi est-ce si dangereux d'utiliser eval(). Les protections suivantes suffisent-elles ?
1. Je protège mes variables avec htmlspecialchars().
2. Je vérifie avec des regex de n'avoir aucun caractère autre que ceux utiliser.
Marsh Posté le 01-05-2009 à 15:58:47
A quel moment l'htmlspecialchars ? Et quelle regexp utilise-tu ?
Marsh Posté le 01-05-2009 à 16:15:05
j'utilise htmlspecialchars en enregistrant ma variable $opération.
Spoiler : $operation = htmlspecialchars($_POST['entree']) |
Pour les regex, j'utilise le fonction preg_match() pour vérifier qu'il n'y que des caractères ou des expressions correspondant à une opération: 0,1,2,3,4,5,6,7,8,9,+,-,/,*,(,),sin(,cos(, sqrt( etc.
Marsh Posté le 01-05-2009 à 16:27:19
Je viens d'avoir ma réponse :
Voila ce qu'il fallait faire:
Code :
|
Marsh Posté le 01-05-2009 à 16:35:26
L'htmlspecialchars là ne sert strictement à rien. Il ne faut le faire qu'à l'affichage
Sinon poste exactement la regexp histoire de voir
Marsh Posté le 01-05-2009 à 16:50:01
Pourquoi l'htmlspecialchars ne sert à rien. Une fois que je l'utilise je sais que ma variable $operation je sais que cette dernière ne contient pas de code html lisible. Du moins c'est je que j'ai compris (ça fait pas longtemps que je fais du html)
Marsh Posté le 01-05-2009 à 16:54:40
Nan mais c'est pas à ce niveau là qu'il faut le faire, c'est uniquement lors de l'affichage. Pas avant de traiter l'opération
Marsh Posté le 01-05-2009 à 16:59:22
ok, merci de l'info.
Sinon, tu penses qu'il y a besoin de sécuriser plus?
Marsh Posté le 01-05-2009 à 19:20:29
Justement, faut nous filer la regexp histoire qu'on y jette un œil
Marsh Posté le 29-04-2009 à 17:43:14
Bonjour,
Je ne trouve pas comment calculer une opération enregistrée dans une variable en PHP.
L'opération est entrée par les internautes grâce à des boutons dans un formulaire (style calculatrice). Je récupère les données et je les enregistre dans $operation.
Il doit bien y avoir une fonction ou une combine qui permette de transformer le texte d'une variable en opération. Mais je ne trouve pas.
Exemple :
Le texte contenue dans $operation est "1+2*3"
" echo $operation " me donne " 1+2*3 " or je voudrais qu'il affiche le résultat de l'opération : "7"
J’ai essayer la fonction eval() mais ça ne marche pas.
Savez-vous comment faire?
Merci d'avance