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<?php
// verificamos que no este conectado el usuario
if ( !empty( $_SESSION['usuario'] ) && !empty($_SESSION['password']) ) { $arrUsuario = esUsuario( $_SESSION['usuario'], $_SESSION['password'], $dbConn );
}
// verificamos que sea un admin
if ( empty($arrUsuario) ) { header( 'Location: ./index.php' ); }
// si se envio el formulario
if ( !empty($_POST['submit']) ) {
// definimos las variables
if ( !empty($_POST['usuario']) ) $usuario = $_POST['usuario']; if ( !empty($_POST['avatar']) ) $avatar = $_POST['avatar']; if ( !empty($_POST['fondo']) ) $fondo = $_POST['fondo'];
// si no hay errores registramos al usuario
if ( empty($usuario) ) $error['usuario'] = 'Es obligatorio completar el nombre de tu usuario';
$idusuario = $arrUsuario['usuario'];
// traemos la configuracion
$query = 'SELECT usuario,avatar,fondo FROM `usuarios` WHERE idusuario = "' . $arrUsuario['idUsuario'] . '" LIMIT 1';
if(isset($arrUsuario['idUsuario'])){
// actualiza los datos del formulario en la db
$query = "UPDATE usuarios SET usuario='".$_POST["usuario"]."', avatar='".$_POST["avatar"]."', fondo='".$_POST["fondo"]."' WHERE idusuario = '" . $arrUsuario['idUsuario'] . "' LIMIT 1 ";
header( 'Location: cuenta.php?edit=true' ); }
}
}
// traemos listado
$query = 'SELECT usuario,avatar,fondo FROM `usuarios` WHERE idusuario = "' . $arrUsuario['idUsuario'] . '" LIMIT 1';
?>
Antes encontre este codigo:
Código PHP:
Ver original// chequear si el usuario esta en la bd
$sql_chk = "SELECT usuario FROM usuarios WHERE usuario='$usuario'";
if($tot_chk > 0){
echo "Nombre de usuario no disponible";
}
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?