Foros del Web » Programando para Internet » PHP »

Como resolver operaciones enviadas por GET

Estas en el tema de Como resolver operaciones enviadas por GET en el foro de PHP en Foros del Web. Buenas! Estoy intentando hacer una especie de calculadora, a la que uno le envia algo y lo resuelve Código PHP: $nro  =  urlencode ( $_GET ...
  #1 (permalink)  
Antiguo 24/03/2010, 16:22
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
Como resolver operaciones enviadas por GET

Buenas!

Estoy intentando hacer una especie de calculadora, a la que uno le envia algo y lo resuelve

Código PHP:
$nro urlencode($_GET['n']);

if (
is_numeric($nro)) {
    echo 
'Se puede resolver';
}else {
    echo 
'No se puede resolver';

Mi idea es resolver la operacion.
Para que no envien cualquier cosa, pense en hacer el check viendo si es un numero o no, pero para hacer eso necesito hacer que resuelva lo enviado por get

Alguna idea?

Gracias

Última edición por Zuker; 24/03/2010 a las 16:27
  #2 (permalink)  
Antiguo 24/03/2010, 16:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Como resolver operaciones enviadas por GET

puedes usar eval() para evaluar dicha expresión, a lo mejor... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/03/2010, 16:28
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Como resolver operaciones enviadas por GET

Hola!
Ya probe eval pero no lo resuelve!
  #4 (permalink)  
Antiguo 24/03/2010, 16:30
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Como resolver operaciones enviadas por GET

Cita:
Iniciado por Zuker Ver Mensaje
Hola!
Ya probe eval pero no lo resuelve!
pues como y que estas haciendo??

porque un ejemplo básico sería así...
Código PHP:
$a $_GET['a']; // 3*4
eval("\$out = $a;"); // $out = 3*4;
echo $out// 12 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/03/2010, 16:36
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Como resolver operaciones enviadas por GET

Pero eso te funciona? A mi me da error

Tengo esto por ej

Código PHP:
Ver original
  1. $nro = $_GET['n'];
  2.  
  3. eval("\$out = $nro");
  4.  
  5. if (is_numeric($out)) {
  6.     echo 'Se puede resolver';
  7. }else {
  8.     echo 'No se puede resolver';
  9. }

Y me da error en la linea del eval

Parse error: syntax error, unexpected T_LNUMBER
  #6 (permalink)  
Antiguo 24/03/2010, 16:39
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Como resolver operaciones enviadas por GET

El problema esta al usar +, ya que no lo toma como operador, recien me fije
  #7 (permalink)  
Antiguo 24/03/2010, 16:51
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Como resolver operaciones enviadas por GET

el primer paso es evaluar la expresión... en este caso is_numeric() no funcionaría del todo...

lo ideal sería un expresión regular
Código PHP:
$nro '2+1';

if (
preg_match('/^[0-9\+\-\*\/\s\(\)]+$/'$nro))
{
  eval(
"\$out = $nro;");
  echo 
"el resultado de '$nro' es $out";
}
else echo 
"'$nro' no se puede evaluar"
la idea está en validar los números y operadores matemáticos, al ser una expresión correcta simplemente se evalúa... ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #8 (permalink)  
Antiguo 24/03/2010, 17:00
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Como resolver operaciones enviadas por GET

Cita:
Iniciado por pateketrueke Ver Mensaje
el primer paso es evaluar la expresión... en este caso is_numeric() no funcionaría del todo...

lo ideal sería un expresión regular
Código PHP:
$nro '2+1';

if (
preg_match('/^[0-9\+\-\*\/\s\(\)]+$/'$nro))
{
  eval(
"\$out = $nro;");
  echo 
"el resultado de '$nro' es $out";
}
else echo 
"'$nro' no se puede evaluar"
la idea está en validar los números y operadores matemáticos, al ser una expresión correcta simplemente se evalúa... ;)
Ahi va mejor, pero igualmente sigo teniendo un problema al usar sumas.
Intenta enviar via get un 2+2

Saludos y gracias
  #9 (permalink)  
Antiguo 24/03/2010, 17:07
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Como resolver operaciones enviadas por GET

ahh claro!!

lo que sucede es que el símbolo + se considera como espacio en el envío de datos por formulario o URL, en todo caso intenta reemplazar dicho carácter en tu expresión antes de validarla.. ;)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #10 (permalink)  
Antiguo 24/03/2010, 17:15
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
No termino de entender
Si por ej yo hago echo $_GET['operacion'] y operacion es 2+2, ya directamente ahi no me sale el simbolo +...

Lo resolvi! Tan simple como usar urlencode je

Uhh, ahora se me jodio al usar el resto! jajaj

Última edición por GatorV; 25/03/2010 a las 11:00
  #11 (permalink)  
Antiguo 24/03/2010, 17:22
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Como resolver operaciones enviadas por GET

¿Qué tal si lo pasas con urlencode, y luego al recibirlo usas urldecode?
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #12 (permalink)  
Antiguo 24/03/2010, 17:28
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Como resolver operaciones enviadas por GET

No puedo convertirlo, necesito trabajar con el valor crudo del get. Por que es algo que recibe el mensaje de otra plataforma y hace un get en el php
  #13 (permalink)  
Antiguo 24/03/2010, 18:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Como resolver operaciones enviadas por GET

Cita:
Iniciado por Zuker Ver Mensaje
No termino de entender
Si por ej yo hago echo $_GET['operacion'] y operacion es 2+2, ya directamente ahi no me sale el simbolo +...
justo lo que te dije antes... el + es considerado como un espacio...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 24/03/2010, 20:14
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Como resolver operaciones enviadas por GET

Pero no entiendo, al principio dices que tu envias a través de GET y ahora dices que es otra plataforma. Si no tienes control de esa otra plataforma, entonces vas a tener un problema que el código te interprete el simbolo de + ya como te han dicho es una forma de indicar espacio. De la única forma como puedes recibir ese simbolo y lo interprete PHP conforme a como tu deseas es en su formato hexadecimal y esto lo logras con urlencode, luego tienes que usar la función que traduce a su estado "normal" que es urldecode. Como te indicaron también. Pero si no puedes hacer eso, no hay forma de que puedas leer la url como tú deseas.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #15 (permalink)  
Antiguo 24/03/2010, 21:32
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Como resolver operaciones enviadas por GET

Cita:
Iniciado por pateketrueke Ver Mensaje
justo lo que te dije antes... el + es considerado como un espacio...
Lo único que se me ocurre es hacer algo asi...

Código PHP:
$operacion str_replace(' ''+'$operacion); 
  #16 (permalink)  
Antiguo 24/03/2010, 21:35
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Como resolver operaciones enviadas por GET

Puede ser que te funcione, si es que no envian nada más con espacios.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #17 (permalink)  
Antiguo 24/03/2010, 21:52
Avatar de Zuker  
Fecha de Ingreso: marzo-2007
Ubicación: Argentina
Mensajes: 164
Antigüedad: 17 años, 8 meses
Puntos: 1
Respuesta: Como resolver operaciones enviadas por GET

Si, lo unico que quedaria revisar creo que es el regexp que si tiene valores con comas o puntos ejemplo 3,14 o 3.14 no lo detecta como valido cuando si deberia

Etiquetas: operaciones
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




La zona horaria es GMT -6. Ahora son las 01:07.