Foros del Web » Programando para Internet » PHP »

Error de $_SESSION

Estas en el tema de Error de $_SESSION en el foro de PHP en Foros del Web. Hola, De antemano gracias por cualquier ayuda brindada. Mi problema es el siguiente, tengo una app web donde quiero validar usuario y si la persona ...
  #1 (permalink)  
Antiguo 02/10/2013, 13:05
 
Fecha de Ingreso: septiembre-2010
Mensajes: 75
Antigüedad: 13 años, 7 meses
Puntos: 1
Pregunta Error de $_SESSION

Hola,

De antemano gracias por cualquier ayuda brindada.

Mi problema es el siguiente, tengo una app web donde quiero validar usuario y si la persona ya se habia logueado anteriormente, se redireccione automaticamente al modulo de su área.

Cuando las personas ingresan y se verifican las credenciales, se guarda en una variable $_SESSION los datos de validacion sin problema, para que cuando se inicie sesion en cada pagina de su modulo, estas mismas se puedan validar, el lio es que en una pagina si valida las variables en $_SESSION, pero al pasar a otra pagina en el mismo modulo, aparece como si la variable $_SESSION estuviera sin datos por lo cual saca a los usuarios al login a la fuerza.

No entiendo porque al pasar entre paginas, no se guarda la variable $_SESSION para hacer la validación necesaria.


Mi código es el siguiente:

Pagina que guarda la session:
Código:
<?php

session_start();
require '../model/Login.php';
require '../model/accesos.php';

$nombre = "";
$pass = "";

$_SESSION['validacion'] = "";
$nombre = $_POST['Usuario'];
$pass = $_POST['Contrasenia'];
$is = "false";
$log = new Login();
$accesos = new accesos();

//$qs = new QuitaEspa= $qs->quitaCaracter($pass);
//$nombre = $qs->quitaCaracter($nombre);cio();
//$pass 
$pass = md5($pass);
$is = $log->inicializar($nombre, $pass);
if ($is == "true") {
    $dep = $log->dep();
    $idlogin = $log->idlogin();

    if ($accesos->bloquearVencido($idlogin) == "true") {
        $_SESSION['usuario'] = $nombre;
        $_SESSION['validacion'] = "ok";
        $_SESSION['departamento'] = $dep;
        $_SESSION['admin'] = $idlogin;
        $accesos->insertarAcceso($idlogin);
        $_SESSION['diferenciaHora'] = $accesos->diferenciaHora($accesos->obtenerUltimaHora($idlogin), $accesos->obtenerHoraActual());
        if ($_SESSION['diferenciaHora'] >= '00:03:00' or $accesos->obtenerLogueo($idlogin) == 0) {
            $accesos->activaSesion($idlogin);
            $date = $accesos->generarUltimoAcceso($idlogin);
            $time = $accesos->generarUltimaHora($idlogin);
        } else if ($_SESSION['diferenciaHora'] <= '00:03:00') {
            $accesos->dobleSesion($idlogin);
//             $_SESSION['validacion'] = "";
//            echo "<script type=\"text/javascript\">alert(\"Ya hay alguien conectado con esta cuenta.\"); window.location=\"LOGIN\";</script>";
        }
        if ($dep == "1") {
            session_write_close();
            header("Location: ../vista/login/HTML/index.php"); //se redirije a el modulo de admin (crear carpeta nueva)
        } elseif ($dep == "0") {
            session_write_close();
            header("Location: URL DEL MODULO DE USUARIO"); // este es el home para todos los usuarios normales
        }
    } else {
        $_SESSION['error'] = 'error';
        header("Location: LOGIN");
        echo "false";
    }
} else {
    $_SESSION['error'] = 'error';
    header("Location: LOGIN");
    echo "false";
}
?>
Este es el código de session de cada pagina interna del modulo:
Código:
<?php
session_start();
if (!($_SESSION['validacion'] == 'ok' && isset($_SESSION['usuario']))) {
    //En caso de que el usuario no este autenticado, crear un formulario y redireccionar a la
    //pantalla de login, enviando un codigo de error
    header('Location: ../login/HTML/login.php');
}
require_once '../../model/conexion.php';
?>

<!DOCTYPE html>
<html>....

Etiquetas: session
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:35.