Ver Mensaje Individual
  #18 (permalink)  
Antiguo 04/05/2005, 13:08
Avatar de nicolaspar
nicolaspar
 
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Cita:
Iniciado por Neuron_376
Si, bueno, para empezar, yo tampoco lo veo como pelea, si no al contrario, veo muy provechosas estas palticas.. asi lo veo yo...

Tu sentencia:

if(isset($_GET["cantidad_child"]) && !empty($_GET["cantidad_child"] ) ){

No se exactamente como trabaja el compilador de php, pero por lo general y normal lo que quieres hacer funcionaria asi...

if isset($_GET["cantidad_child"] = False --> Aun sigue la compilacion porque es una sola linea.

if !empty($_GET["cantidad_child"]) ---> Aqui ocurre el error que mencionabas, porque esta variable no existe, que es el error que mencionabas

Entonces, tener todo en una sola linea esa sentencia puede tener el error que tu mencionaste, asi que esa linea no soluciona el problema...

Por eso mencionaba esta forma:

if (isset($_GET["var"]) --> Verificar si existe la variable.
{
Claro, acá es donde no es así, sino que ejecuta primero uno, y después el siguiente, por eso no use "and", sino "&&".


Cita:
Iniciado por Neuron_376
$var = $_GET["var"]; --> Recuperar la variable tal como esta.
$var = trim($Var); --> Limpias la variable de espacios en blanco, y caracteres raros como TAB.

if empty($Var) --> Ahora si sabes que la variable esta totalmente limpia, y aseguras que esta sentencia es correcta, despues de esto y puedes convertir la variable al tipo que necesitas y ver errores de TIPO_DE_DATOS, algo como:

$var = (int)%var;

}

Pero ya te aseguraste de que la variable es valida... con el Isset solamente pasa esto:

_ = Espcio en blanco

$var = "__cadena_" = True
$var = "___" = True
$var = "[TAB]" = True

Entonces, ahi esta el error de usar solo Isset y Empty, porque Empty dice que la cadena no esta vacia porque encuentra espacios vacios.

Tambien algo como

$var = NULL = True (Isset), False(Empty)

Entonces ese es el detalle donde veo que cae el error.

Por eso decia que era mejor, primero tener las lineas separadas por como trabaja el compilador al evaluar esa linea, y tambien el detalle de tener cadenas sucias que no seran detectadas por esa linea.

Bueno, esa es mi manera de mirar ese caso, y de hecho a ese tipo de validaciones aplica como te digo para todo, Get, Post, Session, Cookies, etc, y tambien para otros lenguajes como ASP.
Está bien, eso es válido, pero con mas razón, no esta mal lo que yo puse, intenta, hacete un archivo con esto:
if(isset($_GET["cantidad_child"]) && !empty($_GET["cantidad_child"]) ){
echo "si";
}else{
echo "no";
}
Y llamalo y probá de ponerle un espacio en el get a esa variable, y verás que el resultado es siempre "no".

Cita:
Iniciado por Neuron_376
Ademas... jejejeje, validar de esa forma te quita muchos problemas, como SQL Injection, etc.
Está perfecto tener en vista medidas para sql injection, pero con el trim() no solucionas nada...lo primero que debes tener en cuenta es que no puedan meterte sentensias como having, group y demás esta decir que si pasa un drop estas frito, aunque quien vaya directo a esto no es peligroso

Bueno, ese es mi punto de vista... un saludo

De la misma manera, y espero que no termine acá
__________________
Mi punto de partida es Que Bueno Lo Nuevo