Ver Mensaje Individual
  #2 (permalink)  
Antiguo 16/01/2004, 18:21
Neron
 
Fecha de Ingreso: abril-2002
Mensajes: 18
Antigüedad: 22 años, 8 meses
Puntos: 0
Solucionado!!!

Le hice un par de modificaciones al script y me funcionó, aquí va pa'l que tenga los mismos problemas:

<?
// Motor autentificación usuarios.

// Cargar datos conexion y otras variables.
require ("config.php");
$usuarios_sesion="autentificator";

// 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;
// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
die ("Error cod.:1 - Acceso incorrecto!");
exit;
}


// Chequeamos si se está autentificandose un usuario por medio del formulario
if (isset($_POST['usuario']) && isset($_POST['pass'])) {


// Conexión base de datos.
// 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("$DB_SERVER", "$DB_USER", "$DB_PASS") or die(header ("Location: $redir?error_login=0"));
mysql_select_db("$DB_NAME");

// realizamos la consulta a la BD para chequear datos del Usuario.
$usuario_consulta = mysql_query("SELECT * FROM usuarios WHERE usuario='".$_POST['usuario']."'") or die(header ("Location: $redir?error_login=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) {

// eliminamos barras invertidas y dobles en sencillas
$login = stripslashes($_POST['usuario']);
// encriptamos el password en formato md5 irreversible.
$password = $_POST['pass'];

// almacenamos datos del Usuario en un array para empezar a chequear.
$usuario_datos = mysql_fetch_array($usuario_consulta);

// 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);

// chequeamos el nombre del usuario otra vez contrastandolo con la BD
// esta vez sin barras invertidas, etc ...
// si no es correcto, salimos del script con error 4 y redireccionamos a la
// página de error.
if ($login != $usuario_datos['usuario']) {
Header ("Location: $redir?error_login=4");
exit;}

// si el password no es correcto ..
// salimos del script con error 3 y redireccinamos hacia la página de error
if ($password != $usuario_datos['password']) {
Header ("Location: $redir?error_login=3");
exit;}

// Paranoia: destruimos las variables login y password usadas
unset($login);
unset ($password);

// En este punto, el usuario ya esta validado.
// Grabamos los datos del usuario en una sesion.

// inicia sessiones
session_start();
// le damos un mobre a la sesion (por si quisieramos identificarla)
session_name($usuarios_sesion);
// 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 $usuario_login con el nombre de usuario de la sesion actual
$_SESSION['usuario_user']=$usuario_datos['usuario'];

//definimos $usuario_password con el password del usuario de la sesión actual
$_SESSION['usuario_pass']=$usuario_datos['password'];

//definimos $usuario_cliente con el codigo del cliente
$_SESSION['usuario_cliente']=$usuario_datos['id_cliente'];

//definimos $usuario_nombre con el nombre del usuario asociado al pass
$_SESSION['usuario_nombre']=$usuario_datos['nombre'];

// Hacemos una llamada a si mismo (scritp) para que queden disponibles
// las variables de session en el array asociado $HTTP_...
Header ("Location: $PHP_SELF");
exit;

} else {
// si no esta el nombre de usuario en la BD o el password ..
// se devuelve a pagina q lo llamo con error
Header ("Location: $redir?error_login=2");
exit;}
}


// -------- Chequear sesión existe -------


// Iniciamos el uso de sesiones
session_start();

// 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_user']) && !isset($_SESSION['usuario_pass']) && !isset($_SESSION['usuario_cliente']) && !isset($_SESSION['usuario_nombre']))
{
die (header ("Location: $redir?error_login=7"));
exit;
}

?>


y el logout quedó así:

<?
// Cargamos variables
require ("config.php");
$usuarios_sesion="autentificator";

session_start();
// le damos un mobre a la sesion (por si quisieramos identificarla)
session_name($usuarios_sesion);
// iniciamos sesiones

session_unset();
// destruimos la session de usuarios.
session_destroy();
?>
...código de la página de salida


----------

Saludos
Mauricio