Ver Mensaje Individual
  #6 (permalink)  
Antiguo 16/10/2011, 15:47
ILuzbel
 
Fecha de Ingreso: septiembre-2011
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: Como editar la informacion de un usuario

Cita:
Iniciado por Triby Ver Mensaje
1. Como prevenir si el nombre ya fue usado?
R. Haces una consulta con el nombre tecleado y que la ID no sea igual al usuario activo, supongo que tienes una columna ID para estos casos.
Ejemplo: SELECT COUNT(*) FROM usuarios WHERE usuario = $_POST['usuario'] AND id != $_SESSION['id']
Si el resultado es diferente de cero, entonces ya esta en uso.

2. Como actualizar la sesion o cookie?
R. De la misma forma que lo haces al iniciar sesion

3. Primer comentario: Identificar el usuario que esta creando/modificando?
R. Creo que en variables de sesion tienes ya si se trata de un usuario activo y sus datos.
Ejemplo:
Código PHP:
Ver original
  1. if(isset($_SESSION['usuario'])) {
  2.     // Es un usuario activo, se debe actualizar con UPDATE
  3. } else {
  4.     // Es usuario nuevo, debes ingresar los datos con INSERT
  5. }
Bueno sobre el verificar si el nombre existe y si la email existe lo añadi al registro de usuarios en este modo:

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.     }
  9.    
  10.     // chequear si el email esta en la bd
  11.     $sql_chk = "SELECT email FROM usuarios WHERE email='$email'";
  12.     $resultado = mysql_query ($sql_chk, $dbConn) or die(mysql_error());;
  13.     $tot_chk = mysql_num_rows($resultado);
  14.     if($tot_chk > 0){
  15.     echo "Email de usuario no disponible";
  16.     exit();
  17.     }

Y funciona perfectamente. Luego para la cuenta no se exactamente como meterlo hice esto:

Código PHP:
Ver original
  1. $sql_chk = 'SELECT COUNT(*) FROM usuarios WHERE usuario = "' .$_POST['usuario'].'" AND idUsuario != "' .$_SESSION['idUsuario'].'" ';
  2.     $resultado = mysql_query ($sql_chk, $dbConn) or die(mysql_error());;
  3.     $tot_chk = mysql_num_rows($resultado);
  4.     if($tot_chk > 0){
  5.     echo "Nombre de usuario no disponible";
  6.     exit();
  7.     }

En esta parte de codigo :

Código PHP:
AND idUsuario != "' .$_SESSION['idUsuario'].'" 
tengo que llamar a una varible id que tengo que crear en el formulario o a la variable id que estoy usando en este momento?
Porque para que me reconozca el sitio he incluido en el header el archivo seccion.php que contiene estos datos:

Código PHP:
Ver original
  1. // iniciamos session
  2.  
  3. // archivos necesarios
  4. require_once 'admin/config.php';
  5. require_once 'admin/conexion.php';
  6. require_once 'admin/esUsuario.php';
  7.  
  8. // obtengo puntero de conexion con la db
  9. $dbConn = conectar();
  10.  
  11. // vemos si el usuario quiere desloguar
  12. if ( !empty($_GET['salir']) ) {
  13.     // borramos y destruimos todo tipo de sesion del usuario
  14.     session_unset();
  15. }
  16.  
  17. // verificamos que no este conectado el usuario
  18. if ( !empty( $_SESSION['usuario'] ) && !empty($_SESSION['password']) ) {
  19.     $arrUsuario = esUsuario( $_SESSION['usuario'], $_SESSION['password'], $dbConn );       
  20. }

Que llaman a esta funcion:

Código PHP:
Ver original
  1. <?php
  2.  
  3. function esUsuario ( $usuario, $password, $conexion ) {
  4.    
  5.     // verifica que esten los dos campos completos.
  6.     if ($usuario=='' || $password=='') return false;
  7.    
  8.     // busqueda de los datos de usuarios para loguear.
  9.     $query = "SELECT idUsuario, usuario, password, tipo FROM `usuarios` WHERE usuario = '$usuario'";
  10.     $resultado = mysql_query ($query, $conexion);
  11.     $row = mysql_fetch_array ($resultado);
  12.     $password_from_db = $row ['password'];
  13.     unset($query);
  14.            
  15.     // verifica que el pass enviado sea igual al pass de la db.
  16.     if ( $password_from_db == $password ) {
  17.         return $row;
  18.     } else return false;
  19.    
  20.    
  21. }
  22.  
  23. ?>

El segundo comentario no se hacerlo y el tercero tengo que probarlo aun.

Muchas gracias por la ayuda, espero tu respuesta