Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/10/2011, 07:25
ILuzbel
 
Fecha de Ingreso: septiembre-2011
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 19
Seguridad en edicion de cuenta

Hola a todos tengo un problema con la seguridad de la edicion de cuenta de los usuarios de mi script, porque el usuario puede cambiar el nombre a uno ya existente en pocas palabras me falta un codigo que verifiche si el usuario existe antes de cambiar el nombre. el codigo es el siguiente:

Código PHP:
Ver original
  1. <?php
  2.  
  3. // verificamos que no este conectado el usuario
  4. if ( !empty( $_SESSION['usuario'] ) && !empty($_SESSION['password']) ) {
  5.     $arrUsuario = esUsuario( $_SESSION['usuario'], $_SESSION['password'], $dbConn );
  6. }
  7.  
  8. // verificamos que sea un admin
  9. if ( empty($arrUsuario) ) {
  10.     header( 'Location: ./index.php' );
  11.     die;
  12. }
  13.  
  14. // si se envio el formulario
  15. if ( !empty($_POST['submit']) ) {
  16.    
  17.     // definimos las variables
  18.                     if ( !empty($_POST['usuario']) ) $usuario = $_POST['usuario'];
  19.                     if ( !empty($_POST['avatar']) ) $avatar = $_POST['avatar'];
  20.                     if ( !empty($_POST['fondo']) ) $fondo = $_POST['fondo'];
  21.    
  22.     // si no hay errores registramos al usuario
  23.     if ( empty($error) ) {
  24.        
  25.     if ( empty($usuario) )  $error['usuario']       = 'Es obligatorio completar el nombre de tu usuario';
  26.    
  27.     $idusuario = $arrUsuario['usuario'];
  28.        
  29. // traemos la configuracion
  30. $query = 'SELECT usuario,avatar,fondo FROM `usuarios` WHERE idusuario = "' . $arrUsuario['idUsuario'] . '" LIMIT 1';
  31. $resultado = mysql_query ($query, $dbConn);
  32.  
  33. if(isset($arrUsuario['idUsuario'])){
  34.  
  35. // actualiza los datos del formulario en la db
  36. $query = "UPDATE usuarios SET usuario='".$_POST["usuario"]."', avatar='".$_POST["avatar"]."', fondo='".$_POST["fondo"]."' WHERE idusuario = '" . $arrUsuario['idUsuario'] . "' LIMIT 1 ";
  37. $result = mysql_query($query, $dbConn);
  38.        
  39.     header( 'Location: cuenta.php?edit=true' );
  40.     die;
  41. }
  42.        
  43.     }
  44. }
  45.  
  46. // traemos listado
  47. $query = 'SELECT usuario,avatar,fondo FROM `usuarios` WHERE idusuario = "' . $arrUsuario['idUsuario'] . '" LIMIT 1';
  48. $resultado = mysql_query ($query, $dbConn);
  49. $editcuenta = mysql_fetch_assoc ($resultado);
  50.  
  51. ?>

Antes encontre este codigo:

Código PHP:
Ver original
  1. // chequear si el usuario esta en la bd
  2.     $sql_chk = "SELECT usuario FROM usuarios WHERE usuario='$usuario'";
  3.     $resultado = mysql_query ($sql_chk, $dbConn) or die(mysql_error());;
  4.     $tot_chk = mysql_num_rows($resultado);
  5.     if($tot_chk > 0){
  6.     echo "Nombre de usuario no disponible";
  7.     exit();
  8.     }

que funciona bien solo que si no hago ningún cambio me dice que mi usuario existe y que no puedo cambiar los datos.

Alguien me puedo ayudar?