Ver Mensaje Individual
  #96 (permalink)  
Antiguo 18/05/2010, 05:54
Avatar de Flow89
Flow89
 
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 346
Antigüedad: 14 años, 8 meses
Puntos: 1
Respuesta: Seguridad en PHP [Importante];

Código PHP:
<?php  
//incluimos el archivo de conexion y el modulo de seguridad
  
include("conex.php");
  include(
"segu.php");

//recogemos las variables del formulario eliminando caracteres (Prevenir ataque SQL Inyection).
$nick mysql_real_escape_string($_POST[nick]);
$password mysql_real_escape_string($_POST[password]);
$nombre mysql_real_escape_string($_POST[nombre]);
$email $_POST[email];

//comprobamos que no hayan dejado los campos vacios
if(trim($nick) != "" && trim($password) != "" && trim($nombre) != "" && trim($email) != ""){

//buscamos el id del usuario con el nick que ha introducido
  
$sql "SELECT id FROM usuarios WHERE nick='$nick'";
  
$result mysql_query($sql);

//si sale algun resultado le mostramos el error de que ese nick ya existe
  
if($row mysql_fetch_array($result)){
  echo 
"<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=fusuarios.php\">";
  echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">Error, ese nick ya ha sido registrado. <br> Seras redireccionado automaticamente.</div></td></tr></table>";
  }
  else
  {
  if (!
ereg("^([a-zA-Z0-9._]+)@([a-zA-Z0-9.-]+).([a-zA-Z]{2,4})$",$email)){
      echo 
"<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=../loginpanel/administracion.php\">";
       echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">Ese email no es valido. <br> Seras redireccionado automaticamente.</div></td></tr></table>";
  } else {
    
//si no lo registra introduciendolo a la BBDD.
$sql "INSERT INTO usuarios (nick,password,nombre,email) VALUES('$nick', '$nombre ', '$password', '$email')";   
mysql_query($sql);

// y nos redirecciona a la pagina de administracion.
  
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=../loginpanel/administracion.php\">";
  echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">El registro del usuario se ha efectuado correctamente. <br> Seras redireccionado automaticamente.</div></td></tr></table>"
  }
  
mysql_free_result($result);


  }
  }
  else
  {
//si en la comprobacion de que no esten vacios los campos, ve que alguno esta vacio muestra este error
  
echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"2; url=fusuarios.php\">";
echo 
"<table style=\"height:100%;width:100%;\"border=\"0\"><tr><td class=\"estilo34\"><div align=\"center\">Debes rellenar todos los campos. <br> Seras redireccionado automaticamente.</div></td></tr></table>";
   }
  
  
mysql_close();
  
?>
Este es el codigo final que tengo.

el caso es que yo lo he planteado así:

- Comprueba si estan vacios los campos

---- Si no lo estan comprueba si el usuario existe

-------- Si existe da error

-------- Si no existe comprueba que el email sea valido

-------------- Si no es valido, da error

-------------- Si es valido, lo crea en la BBDD

---- Si lo estan da error.



Ahora ya funciona perfectamente :)

Heli0s muchísimas gracias tio, he aprendido mazo gracias a ti, aunque aún me queda muchísimo, no he echo más que empezar, y con cosas fáciles, pero bueno...

El caso es que analizando mi propio código y la manera en que lo había echo y tal, he ido viendo errores tanto de estructura como posibles errores de sintaxis, entonces e ido modificando hasta dar con lo correcto.
__________________
Seamos realistas. Busquemos lo imposible. ;)
La forma de dar las gracias en este foro, es dando Karma, aunque a veces con un simple Gracias, basta.

Última edición por Flow89; 18/05/2010 a las 06:21