$aplicacion"; return 11; Header ("Location: $redir?error_login=11"); exit; } // Actualizar el campo de entrada mysql_query("INSERT INTO logs (id_usuario, id_aplicacion, fecha, hora, accion, datos, ip, pagina, procedencia) VALUES ('$usuario_datos[id]', '$usuario_datos4[id]', '".date("Y-m-d")."', '".date("H:i:s")."', '$accion', '".parse(captura_datos())."', '".parse($_SERVER['REMOTE_ADDR'])."', '".parse($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])."', 'mysql')") or die("->".mysql_error()); mysql_query("UPDATE usuarios SET intentos_fallidos='0' WHERE id='$usuario_datos[id]'") or die("Fallo en fallo intentos a cero: .".mysql_error()); // En este punto, el usuario ya esta validado. // Grabamos los datos del usuario en una sesion. // le damos un nombre a la sesion. session_name("PAULA"); // incia sessiones session_start(); // Paranoia: decimos al navegador que no "cachee" esta página. session_cache_limiter('nocache,private'); // Asignamos variables de sesión con datos del Usuario para el uso en el // resto de páginas autentificadas. // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios $_SESSION['usuario_id']=$usuario_datos['id']; $usuario_asoc = mysql_query("SELECT perfil FROM usuario_aplicacion WHERE usuario='$usuario_datos[id]' AND aplicacion='$usuario_datos4[id]'") or die("No se puede acceder a los perfiles".mysql_error()); $usuario_datos_asoc = mysql_fetch_array($usuario_asoc); $usuario_consulta2 = mysql_query("SELECT nombre FROM perfiles WHERE id='$usuario_datos_asoc[perfil]'") or die("No se puede acceder a los grupos".mysql_error()); $usuario_datos2 = mysql_fetch_array($usuario_consulta2); $_SESSION['perfil']=$usuario_datos2['nombre']; //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios $_SESSION['usuario_login']=$usuario_datos['usuario']; //definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado) $_SESSION['usuario_password']=$password; $_SESSION['autentificado']=1; $_SESSION['clase']="mysql"; // liberamos la memoria usada por la consulta, ya que tenemos estos datos en el Array. mysql_free_result($usuario_consulta); // cerramos la Base de dtos. mysql_close($db_conexion); // Paranoia: destruimos las variables login y password usadas unset($login); unset ($password); // Control multiple login_multiple(); // Hacemos una llamada a si mismo (script) para que queden disponibles // las variables de session en el array asociado $HTTP_... return -1; } // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // --------------------------------------------------------------------------- // Motor autentificación usuarios. function paula ($tipo, $aplicacion, $salto_error, $mi_user, $mi_pass, $salto_exito) { // Datos conexión a la Base de datos (MySql) $sql_host="www.grise.upm.es"; // Host, nombre del servidor o IP del servidor Mysql. $sql_usuario="root"; // Usuario de Mysql $sql_pass="M35u45kU"; // contraseña de Mysql require_once("aut_multiple.php"); require_once("aut_captura.php"); // chequear página que lo llama para devolver errores a dicha página. $url = explode("?",$_SERVER['HTTP_REFERER']); $pag_referida=$url[0]; $redir=$pag_referida; //print("-->'$mi_user' -->'$mi_pass' -->'".$_POST['user']."' -->'$_POST[pass]'
"); // Chequeamos si se está autentificandose un usuario por medio del formulario if ((($mi_user!="") AND ($mi_pass!="")) OR (isset($_POST['user']) AND isset($_POST['pass']))) { if ((isset($_POST['user']) AND isset($_POST['pass']))) { // eliminamos barras invertidas y dobles en sencillas $login = stripslashes($_POST['user']); // encriptamos el password en formato md5 irreversible. $password =$_POST['pass']; } else { $login = $mi_user; $password = $mi_pass; } if((strlen($login)<1) OR (strlen($password)<1)) { if ($salto_error) { Header ("Location: $redir?error_login=7"); exit; } else { return 7; } } // $error_ldap = login_ldap($login, $password, $aplicacion, $sql_host, $sql_usuario, $sql_pass, "login"); //print "-->$error_ladp"; //switch ($error_ldap) { switch (100) { case -1: if ($salto_exito) { $pag=$_SERVER['PHP_SELF']; Header ("Location: $pag"); exit; } else { return ""; } break; case 100: $error_mysql = login_mysql($login, $password, $aplicacion, $sql_host, $sql_usuario, $sql_pass, "login"); //die("....>$error_mysql"); if ($error_mysql != -1) { if ($salto_error) { fallido($login,$aplicacion,"mysql",$error_mysql); Header ("Location: $redir?error_login=$error_mysql"); exit; } else { return $error_mysql; } } else { if ($salto_exito) { $pag=$_SERVER['PHP_SELF']; Header ("Location: $pag"); exit; } else { return ""; } } break; default: if ($salto_error) { Header ("Location: $redir?error_login=$error_ldap"); exit; } else { return $error_ldap; } } } else { // -------- Chequear sesión existe ------- // usamos la sesion de nombre definido. session_name("PAULA"); // Iniciamos el uso de sesiones session_start(); control_multiple($aplicacion, true, true); // Chequeamos si estan creadas las variables de sesión de identificación del usuario, // El caso mas comun es el de una vez "matado" la sesion se intenta volver hacia atras // con el navegador. if ((!isset($_SESSION['usuario_login']) && !isset($_SESSION['usuario_password']))) { // Borramos la sesion creada por el inicio de session anterior session_unset(); // Destruye las variables session_destroy(); if ($tipo=="estricto") { if (!isset($_SERVER['PHP_AUTH_USER'])) { // Actualizar el campo de entrada mysql_connect($sql_host, $sql_usuario, $sql_pass); mysql_select_db("paula"); $usuario_consulta4 = mysql_query("SELECT id FROM aplicacion WHERE nombre='$aplicacion'") or die("No se puede acceder a las aplicaciones antes de not_login: ".mysql_error()); $usuario_datos4 = mysql_fetch_array($usuario_consulta4); mysql_query("INSERT INTO logs (id_usuario, id_aplicacion, fecha, hora, accion, datos, ip) VALUES (null, '$usuario_datos4[id]', '".date("Y-m-d")."', '".date("H:i:s")."', 'not_login', '".parse(captura_datos())."', '".parse($_SERVER['REMOTE_ADDR'])."')") or die("-->".mysqL_error()); mysql_close(); //header('WWW-Authenticate: Basic realm="Private Area"'); //header('WWW-Authenticate: Negotiate"'); //header('WWW-Authenticate: NTLM', false); Header("Location: /login.php?dir=$_SERVER[REQUEST_URI]"); exit; } print "Error cod.: 2 - Forbidden."; print "You must be login for this."; } else if ($tipo=="flexible") { print ""; } else { print "Error en los parametros de autenticador"; exit; } } else { // Refrescar la cookie actualizar_cookies(); // Actualizar el campo de entrada mysql_connect($sql_host, $sql_usuario, $sql_pass); mysql_select_db("paula"); $usuario_consulta4 = mysql_query("SELECT id FROM aplicacion WHERE nombre='$aplicacion'") or die("No se puede acceder a las aplicaciones al en_uso".mysql_error()); $usuario_datos4 = mysql_fetch_array($usuario_consulta4); $usando="INSERT INTO logs (id_usuario, id_aplicacion, fecha, hora, accion, datos, ip, pagina, procedencia)"; $usando.=" VALUES ('$_SESSION[usuario_id]', '$usuario_datos4[id]', '".date("Y-m-d")."', '".date("H:i:s")."', 'en_uso', '".parse(captura_datos())."', '".parse($_SERVER['REMOTE_ADDR'])."', '".parse($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])."', '$_SESSION[clase]')"; mysql_query($usando) or die("--2>".mysql_error()); mysql_close(); } return ""; } } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- function exits_ldap_wiki($login) { // Cargar datos conexion y otras variables. //require_once ("aut_configuracion.php"); //---------------- Conexión LDAP Active Directory de MAIN ----------------------------------- $dn = "DC=grise, DC=upm, DC=es"; $ldapconn = ldap_connect("main.grise.upm.es",389) or die("ERROR: No se pudo conectar con el Servidor LDAP."); if ($ldapconn) { ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION,3); // Ponemos esto aquí por que en esta funcion no tenemos contraseña y no podríamos buscar si existe $ldapbind = ldap_bind($ldapconn,"Administrador@grise.upm.es","Ft92vR_y"); if ($ldapbind) { // Search surname entry $sr=ldap_search($ldapconn, "CN=Users, DC=grise, DC=upm, DC=es", "(samaccountname=$login)"); if (ldap_count_entries($ldapconn, $sr) == 1) { $info = ldap_get_entries($ldapconn, $sr); // Buscar el grupo $group=0; $group_found=true; while (($info[0]["memberof"][$group] != "") && !$group_found) { // Vamos a comprobar que sea miembro del grupo correcto if (stripos($info[0]["memberof"][$group],"CN=Usuarios de PAULA") === false) { $group++; } else { $group_found=true; } } if (!$group_found) { // No se encuentra en la cadena return -1; } return $info[0]["uid"][0]; } else { // Error al buscar return -1; } } else { return -1; } // del bind } else { // del conect return -1; } } // ------------------------------------------------------------------------------ function exits_mysql_wiki($login, $sql_host, $sql_usuario, $sql_pass) { // Cargar datos conexion y otras variables. //require_once ("aut_configuracion.php"); //----------------Conexión base de datos MYSQL ---------- // si no se puede conectar a la BD salimos del scrip con error 0 y // redireccionamos a la pagina de error. $db_conexion= mysql_connect($sql_host, $sql_usuario, $sql_pass); if (!$db_conexion) { return 0; } mysql_select_db("paula"); // realizamos la consulta a la BD para chequear datos del Usuario. $usuario_consulta = mysql_query("SELECT id,usuario FROM usuarios WHERE usuario='".$login."'"); if (!$usuario_consulta) { return -1; } // miramos el total de resultado de la consulta (si es distinto de 0 es que existe el usuario) if (mysql_num_rows($usuario_consulta) != 0) { return $usuario_consulta['id']; } else { return -1; } } // ------------------------------------------------------------------------------ function variables_sesion($user_id, $user_name, $user_pass,$user_category, $salto, $aplic) { if ((!isset($_SESSION['usuario_login']) && !isset($_SESSION['usuario_password']))) { $sql_host="www.grise.upm.es"; // Host, nombre del servidor o IP del servidor Mysql. $sql_usuario="paula"; // Usuario de Mysql $sql_pass="M35u45kU"; // contraseña de Mysql $db_conexion= mysql_connect($sql_host, $sql_usuario, $sql_pass); mysql_select_db("paula"); $usuario_consulta4 = mysql_query("SELECT id FROM aplicacion WHERE nombre='$aplic'") or die("No se puede acceder a las aplicaciones en variables_sesion: ".mysql_error()); $usuario_datos4 = mysql_fetch_array($usuario_consulta4); // Guardar en log, para BD exterior guardar_log($user_id,$usuario_datos4['id'],"login"); // le damos un nombre a la sesion. session_name("PAULA"); // incia sessiones session_start(); // Paranoia: decimos al navegador que no "cachee" esta página. session_cache_limiter('nocache,private'); // Asignamos variables de sesión con datos del Usuario para el uso en el // resto de páginas autentificadas. // definimos usuarios_id como IDentificador del usuario en nuestra BD de usuarios $_SESSION['usuario_id']=$user_id; //definimos usuario_nivel con el Nivel de acceso del usuario de nuestra BD de usuarios $_SESSION['usuario_login']=$user_name; $_SESSION['perfil']=$user_category; //definimos usuario_password con el password del usuario de la sesión actual (formato md5 encriptado) $_SESSION['usuario_password']=md5($user_pass); $_SESSION['autentificado']=1; $_SESSION['clase']="other"; if ($salto) { $pag=$_SERVER['PHP_SELF']; Header ("Location: $pag"); exit; } } } // ------------------------------------------------------------------------------ function guardar_log($id_user,$id_apli,$accion) { // Datos conexión a la Base de datos (MySql) $sql_host="www.grise.upm.es"; // Host, nombre del servidor o IP del servidor Mysql. $sql_usuario="root"; // Usuario de Mysql $sql_pass="M35u45kU"; // contraseña de Mysql $db_conexion= mysql_connect($sql_host, $sql_usuario, $sql_pass) or die(header ("Location: $redir?error_login=0")); mysql_select_db("paula"); mysql_query("INSERT INTO logs (id_usuario, id_aplicacion, fecha, hora, accion, datos, ip, pagina, procedencia) VALUES ('$id_user', '$id_apli', '".date("Y-m-d")."', '".date("H:i:s")."', '$accion', '".parse(captura_datos())."', '".parse($_SERVER['REMOTE_ADDR'])."', '".parse($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])."', 'other')") or die("Fallo en logout.".mysql_error()); mysql_close(); } // ------------------------------------------------------------------------------ function fallido ($id_user,$id_apli,$proce,$el_error) { // Datos conexión a la Base de datos (MySql) $sql_host="www.grise.upm.es"; // Host, nombre del servidor o IP del servidor Mysql. $sql_usuario="paula"; // Usuario de Mysql $sql_pass="M35u45kU"; // contraseña de Mysql $db_conexion= mysql_connect($sql_host, $sql_usuario, $sql_pass) or die(header ("Location: $redir?error_login=0")); mysql_select_db("paula"); $usuario_consulta4 = mysql_query("SELECT id FROM aplicacion WHERE nombre='$id_apli'") or die("No se puede acceder a las aplicaciones desde el log: ".mysql_error()); $usuario_datos4 = mysql_fetch_array($usuario_consulta4); $usuario_consulta = mysql_query("SELECT id,usuario,pass FROM usuarios WHERE usuario='".$id_user."'"); $usuario_datos = mysql_fetch_array($usuario_consulta); if ($usuario_datos['id'] != "") { mysql_query("INSERT INTO logs (id_usuario, id_aplicacion, fecha, hora, accion, datos, ip, pagina, procedencia) VALUES ('$usuario_datos[id]', '$usuario_datos4[id]', '".date("Y-m-d")."', '".date("H:i:s")."', 'fallo', 'ERROR=$el_error
".parse(captura_datos())."', '".parse($_SERVER['REMOTE_ADDR'])."', '".parse($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])."', '$proce')") or die("Fallo en fallo.".mysql_error()); if ($el_error != "10") mysql_query("UPDATE usuarios SET intentos_fallidos=intentos_fallidos+'1' WHERE id='$usuario_datos[id]'") or die("Fallo en fallo intentos: .".mysql_error()); } else { mysql_query("INSERT INTO logs (id_usuario, id_aplicacion, fecha, hora, accion, datos, ip, pagina, procedencia) VALUES (null, '$usuario_datos4[id]', '".date("Y-m-d")."', '".date("H:i:s")."', 'fallo', 'ERROR=$el_error
NAME=$id_user
".parse(captura_datos())."', '".parse($_SERVER['REMOTE_ADDR'])."', '".parse($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'])."', '$proce')") or die("Fallo en fallo.".mysql_error()); } mysql_close(); } function parse($arreglo) { //cambia %27 por ' y luego le aplica la funcion especial para guardar en BD $arreglo=str_replace("%27","'",$arreglo); $arreglo=mysql_real_escape_string($arreglo); //$arreglo=str_replace("'","\'",$arreglo); //print "--->".$arreglo ."
"; return $arreglo; } ?>