Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/05/2013, 13:22
jrBarcelo
 
Fecha de Ingreso: septiembre-2012
Ubicación: Palma de Mallorca
Mensajes: 25
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: Seguridad Sesiones PHP + MYSQL

Cita:
Iniciado por Triby Ver Mensaje
Cómo estás haciendo el login?

Lo primero que veo mal es que tienes en una misma línea mysql_fetch_assoc() y mysql_query(), debiendo ser más o menos así:

Código PHP:
Ver original
  1. $result = mysql_query(/* aquí la consulta */);
  2. if(mysql_num_rows() == 1) {
  3.     // Ok, el usuario existe
  4.     $sqlLogin = mysql_fetch_assoc($result);
  5.     // Aquí creas variables de sesión necesarias y cookie
  6. } else {
  7.     die('Nombre de usuario y/o contraseña inválidos');
  8. }
Buenas Triby!
Justamente el código que encontre era tuyo...gran aporte, lástima que no sepa adaptarlo de momento.


Código PHP:
function login($userMail,$userPass) {
    
session_regenerate_id(true);

    
$result mysql_query("SELECT u_id, u_nombre,u_pass,u_email,u_nivel,u_creditos FROM user WHERE u_email='$userMail' and u_pass = '$userPass'");
  
if(
mysql_num_rows() == 1) {
    
$sqlLogin mysql_fetch_assoc($result);
    
//Creamos Sesiones
    
$_SESSION = array(
        
'usuario' => array(
            
'id' => $sqlLogin['u_id'],
            
'nombre' => $sqlLogin['u_nombre'],
            
'correo' => $sqlLogin['u_email'],
            
'rol' => $rol,
            
'comprobacion' => strMd5("{$_SESSION['usuario']['id']}|{$_SESSION['usuario']['nombre']}|{$_SESSION['usuario']['correo']}|{$_SERVER['REMOTE_ADDR']}")
        )
    );
    
// Creamos cookie 'usuario' con id y cadena de comprobación
    
setcookie('usuario'"{$_SESSION['usuario']['id']}|{$_SESSION['usuario']['comprobacion']}"time() + (86400 30), '/');

}else{
    echo 
'No existe el usuario';
}


He modificado el Login tal como me comentaste, y el resto esta igual. Me crea la sesion y la cookie y me la encripta, pero cuando el header me redirecciona pierdo la sesion. No acabo de entender la primera parte de la funcion esUsuario(); por eso me debe petar....
Edito: Incluyo en ese fichero un acceso a la BD donde también inicio la sesiín, y que esta incluido en todos los archivos

Un saludo y gracias por compartir!

Última edición por jrBarcelo; 08/05/2013 a las 13:31