Foros del Web » Programando para Internet » PHP »

Como ¿implemento correctamente esta función?

Estas en el tema de Como ¿implemento correctamente esta función? en el foro de PHP en Foros del Web. buenas, compañeros del foro soy novato en la programación php y hace unos meses que vengo desarrollando un sitio web para mi proyecto en el ...
  #1 (permalink)  
Antiguo 27/07/2013, 11:57
Avatar de alfredox91  
Fecha de Ingreso: noviembre-2012
Ubicación: Venezuela-Turmero- Aragua
Mensajes: 17
Antigüedad: 11 años, 5 meses
Puntos: 0
Pregunta Como ¿implemento correctamente esta función?

buenas, compañeros del foro soy novato en la programación php y hace unos meses que vengo desarrollando un sitio web para mi proyecto en el cual diseñe una sección php para un formulario de registro, recientemente me empece a instruir en lo que son los ataques inyección sql ya que son los mas comunes he investigando encontré que la manera mas sencilla para un novato como yo es usar la función mysql_real_escape_string, por lo que he entendido debo declararla antes de cada variable en la consulta.

este es el código original del formulario

<?php


@$nombre=$_POST['nombre'];

@$CI=$_POST['CI'];

@$telefono=$_POST['telefono'];

@$edad=$_POST['edad'];

@$direccion=$_POST['direccion'];

@$profesion=$_POST['profesion'];

@$trabaja=$_POST['trabaja'];


if ($nombre!= "" && $CI!= "" && $telefono!= "" && $edad!= "" && $direccion!= "" && $profesion!= "" && $trabaja!="" )

{

mysql_connect("servidor","usuario","pass");

mysql_select_db("nombre bsd");


// Paso 2: Hacemos la consulta a la Tabla por el usuario
$busqueda= mysql_query("SELECT CI FROM habitantes WHERE CI='$CI'");


// Paso 3: vemos si hubo coincidencias
if(mysql_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver
// Inciso a:
echo "El numero de cedula ya esta registrado. Por favor intente con otro.<br>";
echo "<a href=\"javascript:history.back()\">Regresar</a>";
} else

{

mysql_query("INSERT INTO habitantes(nombre,CI,telefono,edad,direccion,profe sion,trabaja) VALUES( '$nombre', '$CI', '$telefono', '$edad', '$direccion', '$profesion', '$trabaja')");

echo "$CI ha sido registrado.";

}
}

?>


Y ESTE ES EL CÓDIGO APLICANDO DICHA FUNCIÓN


<?php


@$nombre=$_POST['nombre'];

@$CI=$_POST['CI'];

@$telefono=$_POST['telefono'];

@$edad=$_POST['edad'];

@$direccion=$_POST['direccion'];

@$profesion=$_POST['profesion'];

@$trabaja=$_POST['trabaja'];


if ($nombre!= "" && $CI!= "" && $telefono!= "" && $edad!= "" && $direccion!= "" && $profesion!= "" && $trabaja!="" )

{

mysql_connect("servidor","usuario","pass");

mysql_select_db("nombre bsd");


// Paso 2: Hacemos la consulta a la Tabla por el usuario
$busqueda= mysql_query("SELECT CI FROM habitantes WHERE CI='$CI'");


// Paso 3: vemos si hubo coincidencias
if(mysql_num_rows($busqueda)>0) { // ó " !=0 " como se quiera ver
// Inciso a:
echo "El numero de cedula ya esta registrado. Por favor intente con otro.<br>";
echo "<a href=\"javascript:history.back()\">Regresar</a>";
} else

{

mysql_query("INSERT INTO habitantes(nombre,CI,telefono,edad,direccion,profe sion,trabaja) VALUES(mysql_real_escape_string '$nombre',mysql_real_escape_string '$CI',mysql_real_escape_string '$telefono',mysql_real_escape_string '$edad',mysql_real_escape_string '$direccion',mysql_real_escape_string '$profesion',mysql_real_escape_string '$trabaja')");

echo "$CI ha sido registrado.";

}
}

?>

mi pregunta es si aplique correctamente el mysql_real_escape_string dentro del código, gracias de antemano.
  #2 (permalink)  
Antiguo 27/07/2013, 12:12
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Como ¿implemento correctamente esta función?

primero las recomendaciones
- Leer: http://www.forosdelweb.com/f18/anunc...oleta-1008145/.
- evitar el uso @: el esconder un mensaje de warning o error no lo resuelve.
- mysql_real_escape_string el manual siempre es el que te dice como debes aplicar una función, además de que si no te envía ningún error pues lo mas seguro es que lo estes aplicando bien la funcion.

Saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 27/07/2013, 15:29
Avatar de alfredox91  
Fecha de Ingreso: noviembre-2012
Ubicación: Venezuela-Turmero- Aragua
Mensajes: 17
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Como ¿implemento correctamente esta función?

gracias men.
  #4 (permalink)  
Antiguo 28/07/2013, 00:10
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 1 mes
Puntos: 292
Respuesta: Como ¿implemento correctamente esta función?

Mas recomendaciones.... lo siguiente esta no-muy-bien por varios motivos

Código PHP:
Ver original
  1. @$nombre=$_POST['nombre'];
  2.  
  3. @$CI=$_POST['CI'];
  4. @$telefono=$_POST['telefono'];
  5. @$edad=$_POST['edad'];
  6. @$direccion=$_POST['direccion'];
  7. @$profesion=$_POST['profesion'];
  8. @$trabaja=$_POST['trabaja'];

- Suprimir errores con @ solo te dara dolores de cabeza para descubrir fallas........

- Si sabes que puede darte error por estar vacio $_POST['algo'] entonces mejor has asi:

Código PHP:
Ver original
  1. $telefono=  isset($_POST['telefono']) ? $_POST['telefono'] : null;
  2. // igual con los demas

Asi lo haces bien y dejas de suprimir errores, ademas hay reportes de que es mas lento si suprimes errores
__________________
Salu2!
  #5 (permalink)  
Antiguo 28/07/2013, 09:18
Avatar de alfredox91  
Fecha de Ingreso: noviembre-2012
Ubicación: Venezuela-Turmero- Aragua
Mensajes: 17
Antigüedad: 11 años, 5 meses
Puntos: 0
Respuesta: Como ¿implemento correctamente esta función?

muchas gracias por tu consejo men lo aplicare, estaba esperando que mi tutor académico me hiciera la corrección, pero mejor pulo mas el código, como he estado aprendiendo esto con un vídeo tutorial de youtube que esta algo desactualizado, mejor seguiré leyendo el manual php. también cambiare la extensión mysql a mysqli ya que por lo que lei en otro post de aquí esta obsoleta.

Etiquetas: correctamente, formulario, mysql, registro, select, sql, tabla, variable
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 12:33.