Ver Mensaje Individual
  #19 (permalink)  
Antiguo 04/05/2005, 13:31
Avatar de Neuron_376
Neuron_376
 
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Bien..

Ya nos estamos poniendo de acuerdo...

Yo no sabia que con && evitabas el problema del compilador, tu dices que esto pasa entonces

if (!isset($_GET["cantidad_child"]) --> False ... el compilador se sale porque tienes el && y NO SE EJECUTA LA SEGUNDA LINEA

?????

Ahi es donde aun me queda la duda, de hecho yo pensaba que el && era exactamente lo mismo que and, y de hecho me parece que && realmente fuerza a ejecutar la segunda sentencia, no recuerdo porque, pero me parece que asi es, que con el && fuerzas a ejecutar ambas para evaluarlas porque las estas asociando para obtener resultado, mientras que and va evaluando 1 por 1 porque no tiene propiedad asociativa, eso es lo que recuerdo mas o menos. Pero igual, creo que con ambas la linea se ejecuta completa.

Solo que asi:

&& --> (sentencia1 && sentencia2)
and -> sentencia1 and sentencia2

Es decir, primero 1 y luego la otra, un ejemplo que encontre de esto ahorita:

$a && $b || $c -----> (a [y] b) or c
$a AND $b || $c ----> a [y] (b or c)

Lo investigue ahorita para no escribir mentiras de esto, pero igual aun pienso que se ejecuta la linea completa, aunque si no fuera asi, tendria que ser con AND y no con &&, porque && si esta forzando a realizar las dos sentencias, mientas que AND no, y asi con AND el compilador podria decir...

a = False ---> Sigue un AND ? Si si sigue un AND, entonces el resultado es False porque ya se que lo primero es falso.

En cambio con el && nunca podria hacer esa distincion porque por la propiedad de asociacion del && esta obligado a ejecutar las sentencias completas.

Lo que menciona del $_GET, bien, no puedes mandar datos con basura, pero si lo pasas como URLENCODE entonces podras mandar cadenas sucias como "__valor" "_[TAB]" etc, y esa linea que tienes no funcionara, el Isset dira true y el Empty dira False, lo que hace que pueda continuar adelante, en cambio de trim si te limpia de espacios a los lados, y de caracteres raros, por lo tanto deja una cadena vacia totalmente correcta como:

trim("_") = ""
trim("_[TAB]") = ""
trim("cadena__") = "cadena"

Entonces si sirve de mucho el trim, del SQLInjection tienes razon, faltan mas validaciones, pero este proceso es solo la primera parte, como dije, el sieguiente paso es convertir y verificar el TIPO de dato que debe ser esa variables, etc... pero eso es mas adelante.

Poco a poco sacamos los detalles no crees...