| 
	
		|  Autor | Tema: [?]Para que sirve eval()?  (Leído 9,741 veces) |  
	| 
			| 
					
						| braulio-- 
								Wiki  Desconectado 
								Mensajes: 896
								
								 
								Imagen recursiva
								
								
								
								
								
								     | 
 
Pues esa es mi duda, mas que util la verdad es que me parece una vulnerabilidad para un programador descuidado.Porque ejecutar una sentencia desde eval y no desde el código normal?
 Gracias
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Azielito 
								no es 
								Colaborador
								      Desconectado 
								Mensajes: 9.188
								
								 
								>.<
								
								
								
								
								
								     | 
 
por que con eval() podes generar codigo PHP dinamicamente   generacion de arrays, funciones, cosas mas dinamicas que dinamicas   Le metes un filtro para que solo pasen cosas locales, o sea, nunca recuperar variables ingresadas por el usuario, o evitarlo lo mas que puedas  
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Anibal784 
								 
								
								 Desconectado 
								Mensajes: 762
								 
								Yo no la vote, pero me la tengo que aguantar igual
								
								
								
								
								
								     | 
 
eval() es la piedra fundamental de cualquier lenguaje interpretado, todo lo que hace un lenguaje interpretado es llamar a eval(), lisp hace eval(), python hace eval(), ruby hace eval(), perl hace eval() y PHP hace eval(), lee la línea y se la pasa a eval.
 No hace mucho, recuerdo haber leído fundamentos de la programación en perl, en la cual hacían un requiere con la función eval, los pasos eran más o menos los siguiente:
 tomaban el archivo con código perl
 lo abrían
 se lo pasaban a eval()
 y ya tenía disponible todas las funciones de ese módulo, PHP nace de perl y por lo tanto no dudo que require/include no hagan más o meno eso, y sin eval no existiría ni include ni require, o sea, sería aún más chicloso el código PHP.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 El que llega sin que lo llamen, se va sin que lo echen. Vos no la votaste por eso la tenes adentro.
 Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta. |  |  |  | 
			| 
					
						| HardieVon 
								
								 Desconectado 
								Mensajes: 181
								
								 
								Programming HardCore
								
								
								
								
								
								     | 
 
eval() es la piedra fundamental de cualquier lenguaje interpretado, todo lo que hace un lenguaje interpretado es llamar a eval(), lisp hace eval(), python hace eval(), ruby hace eval(), perl hace eval() y PHP hace eval(), lee la línea y se la pasa a eval.
 No hace mucho, recuerdo haber leído fundamentos de la programación en perl, en la cual hacían un requiere con la función eval, los pasos eran más o menos los siguiente:
 tomaban el archivo con código perl
 lo abrían
 se lo pasaban a eval()
 y ya tenía disponible todas las funciones de ese módulo, PHP nace de perl y por lo tanto no dudo que require/include no hagan más o meno eso, y sin eval no existiría ni include ni require, o sea, sería aún más chicloso el código PHP.
 
 man y tienes algun ejemplo en php que el eval sea impresindible? por que yo eh hecho sistemas muy robustos y la verdad no eh ocupado mucho el eval, lo eh sabido suplementar. algun ejemplo que no sea de criptologia |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| ^Cloud^ 
								
								 Desconectado 
								Mensajes: 64
								
								 
								La tierra es plana.
								
								
								
								
								
								   | 
 
Que yo sepa eval evalua una cadena y si en ella encuentra código ejecutable (en este caso PHP) lo ejecuta.
 Es muy últil para hacer cosas como templates (minis... y normalmente se realiza en el buffer de salida de php) o tener formularios donde incluir código php en textareas... por ejemplo.
 
 
 Un saludo,
 
 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 Ahora resulta que imagino mi pasadoy llevo en esta clínica cuarenta años.
 Nunca jamás he pisado la calle
 y el electroshock ha sido mi padre
 |  |  |  | 
			| 
					
						| braulio-- 
								Wiki  Desconectado 
								Mensajes: 896
								
								 
								Imagen recursiva
								
								
								
								
								
								     | 
 
He leído una situación útil. Imagina que has sacado una fórmula matemática de una base de datos y la has guardado en la variable $formula. Para obtener el resultado no podrías hacer  $resultado = $formula;
 Porque resultado también contendría la formula. Pero si puedes hacer esto : eval("$resultado = ".$formula); 
 Y se tomaría $formula como una expresión matemática y no como una string. Gracias por responder |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Anibal784 
								 
								
								 Desconectado 
								Mensajes: 762
								 
								Yo no la vote, pero me la tengo que aguantar igual
								
								
								
								
								
								     | 
 
@HardieVon  
 que tu no lo hayas usado no quiere decir que no exista y que no tenga utilidad, no se como estará implementada create_function, pero de lo que estoy seguro es que hace uso de la función eval(). Míralo como asm y C, en C puedes usar asm cuando quieras, sin embargo existen muchos sistemas y muy robustos que no tienen una línea de asm. |  
						| 
								|  |  
								|  |  En línea | 
 
 El que llega sin que lo llamen, se va sin que lo echen. Vos no la votaste por eso la tenes adentro.
 Lo fino no es lo tuyo, y a mi me chupa un huevo, soy argentino y no peronista, y eso es lo que realmente te molesta. |  |  |  | 
			| 
					
						| HardieVon 
								
								 Desconectado 
								Mensajes: 181
								
								 
								Programming HardCore
								
								
								
								
								
								     | 
 
@HardieVon  
 que tu no lo hayas usado no quiere decir que no exista y que no tenga utilidad, no se como estará implementada create_function, pero de lo que estoy seguro es que hace uso de la función eval(). Míralo como asm y C, en C puedes usar asm cuando quieras, sin embargo existen muchos sistemas y muy robustos que no tienen una línea de asm.Fijate lo que dices men por que todo lo que escribiste es mentira, citame donde puse que no lo eh usado y donde dije que no existe?. braulio - es  muy bueno tu ejemplo.   PD: me apendeje. ando estresado, ni mas ni menos   que por cierto aqui en este post. demuestro un excelente uso.http://foro.elhacker.net/php/iquestcomo_hago_include_a_una_web_externa-t259360.0.html |  
						| 
								|  |  
								| « Última modificación: 27 Junio 2009, 03:25 am por HardieVon » |  En línea | 
 
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | donde puedo en contra el encristador eval unescape Seguridad
 | manu70 | 1 | 3,920 |  26 Agosto 2011, 16:00 pm por Randomize
 |  
						|   |   | Enlazando propiedades con Eval en vez de Bind .NET (C#, VB.NET, ASP)
 | DanteInfernum | 0 | 1,778 |  27 Febrero 2014, 18:26 pm por DanteInfernum
 |  
						|   |   | javascript seguridad eval Desarrollo Web
 | matake | 3 | 3,386 |  25 Julio 2016, 03:07 am por engel lex
 |  
						|   |   | equivalente a eval()? | javascript Desarrollo Web
 | Drakaris | 3 | 3,305 |  25 Enero 2021, 00:17 am por Drakaris
 |    |