Foros del Web » Programando para Internet » PHP »

Aporte | Caso de estudio: Calculadora con una sóla instrucción eval()

Estas en el tema de Aporte | Caso de estudio: Calculadora con una sóla instrucción eval() en el foro de PHP en Foros del Web. Esta es una calculadora que realiza las operaciones en una sóla instrucción eval(). Demás está decir que es la implementación más básica que puede existir. ...
  #1 (permalink)  
Antiguo 08/07/2011, 05:14
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Aporte | Caso de estudio: Calculadora con una sóla instrucción eval()

Esta es una calculadora que realiza las operaciones en una sóla instrucción eval().
Demás está decir que es la implementación más básica que puede existir.
Este script es sólo una curiosidad, la solución más elemental, una respuesta a un problema que ha planteado un aprendiz pero que tal vez a alguien le sirva como ejemplo. Salu2:

Código PHP:
Ver original
  1. <?php
  2. /**
  3.  * Calculadora con una sóla función PHP
  4.  * @author repara2
  5.  * A través de post se envía el valor del campo display que se evalúa como código php
  6.  */
  7. //Si han presionado el botón =
  8. if(isset($_GET['calculate'])){
  9.     //Simplemente ejecutar la acción
  10.     eval('$result = '.$_POST['display'].';');
  11. }
  12. //La función ja para cada botón
  13. $js = "document.getElementById('display').value += this.value; return false;";
  14.  
  15. ?>
  16. <!-- El formulario HTML -->
  17. <form id="calc" name="calc" method="post"
  18.     action="<?$_SERVER['PHP_SELF']?>?calculate">
  19.     <table border="0" align="center" cellpadding="0" cellspacing="0"
  20.         bgcolor="Orange" style="text-align: right">
  21.         <tr bgcolor="Red">
  22.             <td colspan="4"><label> <input name="display" id="display"
  23.                     type="text" size="18" value="<?=(isset($result)?$result:"")?>" /> </label>
  24.             </td>
  25.         </tr>
  26.         <tr>
  27.             <td align="center"><input onclick="<?=$js?>" name="1" type="submit"
  28.                 id="1" value="1" /></td>
  29.             <td align="center"><input onclick="<?=$js?>" name="2" type="submit"
  30.                 id="2" value="2" /></td>
  31.             <td align="center"><input onclick="<?=$js?>" name="3" type="submit"
  32.                 id="3" value="3" /></td>
  33.             <td align="center" bgcolor="Red"><input onclick="<?=$js?>" name="+"
  34.                 type="submit" id="+" value="+" /></td>
  35.         </tr>
  36.         <tr>
  37.             <td align="center"><input onclick="<?=$js?>" name="4" type="submit"
  38.                 id="4" value="4" /></td>
  39.             <td align="center"><input onclick="<?=$js?>" name="5" type="submit"
  40.                 id="5" value="5" /></td>
  41.             <td align="center"><input onclick="<?=$js?>" name="6" type="submit"
  42.                 id="6" value="6" /></td>
  43.             <td align="center" bgcolor="Red"><input onclick="<?=$js?>" name="-"
  44.                 type="submit" id="-" value="-" /></td>
  45.         </tr>
  46.         <tr>
  47.             <td align="center"><input onclick="<?=$js?>" name="7" type="submit"
  48.                 id="7" value="7" /></td>
  49.             <td align="center"><input onclick="<?=$js?>" name="8" type="submit"
  50.                 id="8" value="8" /></td>
  51.             <td align="center"><input onclick="<?=$js?>" name="9" type="submit"
  52.                 id="9" value="9" /></td>
  53.             <td align="center" bgcolor="Red"><input onclick="<?=$js?>" name="/"
  54.                 type="submit" id="/" value="/" /></td>
  55.         </tr>
  56.         <tr>
  57.             <td align="center" bgcolor="Red"><input name="=" type="submit" id="="
  58.                 value="=" /></td>
  59.             <td align="center"><input onclick="<?=$js?>" name="0" type="submit"
  60.                 id="0" value="0" /></td>
  61.             <td align="center" bgcolor="Red"><input
  62.                 onClick="document.getElementById('display').value = ''; return false;"
  63.                 ; name="=" type="submit" id="C" value="C" /></td>
  64.             <td align="center" bgcolor="Red"><input name="*" type="submit" id="*"
  65.                 value="*" /></td>
  66.         </tr>
  67.     </table>
  68. </form>
__________________
Fere libenter homines, id quod volunt, credunt.
  #2 (permalink)  
Antiguo 08/07/2011, 05:46
f0n
 
Fecha de Ingreso: abril-2009
Mensajes: 54
Antigüedad: 15 años
Puntos: 1
Respuesta: Aporte | Caso de estudio: Calculadora con una sóla instrucción eval()

Hombre, seguro, seguro, no es xDDD
  #3 (permalink)  
Antiguo 08/07/2011, 05:50
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Aporte | Caso de estudio: Calculadora con una sóla instrucción eval()

Cita:
Iniciado por f0n Ver Mensaje
Hombre, seguro, seguro, no es xDDD
Ya te veo poniendo en el navegador:
calculadora.php?calculate=system("rm -rf /")

xD
  #4 (permalink)  
Antiguo 08/07/2011, 07:58
 
Fecha de Ingreso: enero-2002
Mensajes: 1.174
Antigüedad: 22 años, 3 meses
Puntos: 21
Respuesta: Aporte | Caso de estudio: Calculadora con una sóla instrucción eval()

Toda una curiosidad, puede ser útil para algunos procesos Online.

MEJORAS A REALIZAR:
No tiene tecla de borrar
No tiene teclas de memoria
Sería deseable asignar teclas con funsiones que el usuario pueda definir
Al entrar al display, y oprimir ENTER, sale el numero 1

Bueno, por curiosidad está bueno como se encuentra.
Si le mejoras lo anterior, al menos a mi me avisas, me agradaría probarlo.

Saludos

Etiquetas: calculadora, estudio, html, formulario
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:45.