Nueva pregunta

Pregunta:

Fecha: 27-11-2018 01:03:26 (En Español)

No puedo mantener atributo de sesion y queda en login[No resuelta]

Trabajo con MVC y puse una condicion en el llamado a la hoja de rutas, donde si el usuario no esta en la sesion llama al login, es decir no se puede entrar a ningun controlador sin estar logueado:

 <?php

session_start();

require_once ($_SERVER['DOCUMENT_ROOT'].'/gestionweb/routes.php');

require_once('routes.php');

 

if (isset($_SESSION['usuario'])){

    require_once ($_SERVER['DOCUMENT_ROOT'].'/gestionweb/views/template.php');

if (isset($_REQUEST['id'])){

    $id=$_REQUEST['id'];

 

}else{

$id=0;}

 

    if (isset($_GET['controller'])&&isset($_GET['action'])) {

        $controller=$_GET['controller'];

        $action=$_GET['action'];

 

        call($controller,$action,$id);

    }

}else{

    echo "no existe";

    call("login","index",0);

}

?> 


De la seguridad me voy a encargar despues,quiero que me funcione la sesion. El caso es que siempre redirige al login:
 <?php

require_once ("C:\\xampp\htdocs\gestionweb\includes\claseConexion.php");

 

class Login{

  private $estado;

  private $idp;

 

public function __construct(){

 

}

 

public function User($usuario,$pass)

{

    try

    {

            $conexion = Conexion::singleton_conexion();

 

        $stm=$conexion->prepare("SELECT * FROM despensa.usuarios WHERE nombre='".$usuario."' AND pass='".$pass."';");

 

              $stm->execute();

           $array=$stm->fetchAll(PDO::FETCH_ASSOC);

 

           if ($array>0){

                foreach ($array as $n){

 

                session_start();

            $_SESSION['usuario']=$n['nombre'];

            $_SESSION['idlog']=$n['iduser'];

                }

 

           }

        return $array;

 

 

        }

        catch(Exception $e)

        {

            die($e->getMessage());

        }

    }

 

}

 

?> 


Y aclaro que tambien llamo a sesion_start() en el documento de template..que puede ser?

Aca el javascript dentro de login:

$(document).ready(function() {

 

    $("#guardar").click(function(){

        var usuario = $("#usuario").val();

        var pass = $("#pass").val();

        $.ajax({

 

            type: "POST",

            url: "../gestionweb/views/procesologin.php",

            data: { "accion": "ingresar","user":usuario,"pass":pass},

       dataType:'json',

            error: function(){

                alert("error petición ajax");

            },

            success: function(data){

 

        if(data.length===0){

            alert("login incorrecto");

        }else{

 

            window.location.href="index.php?controller=template&action=index";

        }

 

            }

 

    });

 

});


Osea haciendo var_dump($_SESSION) en la clase user carga perfecto, tambien el json "data" de arriba trae el user y responde bien.
Pero en el index que llama a a hoja de rutas la sesion no llega.
Etiquetas: PHP Votos: 0 - Respuestas: 1 - Vistas: 7 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 03-12-2018 06:01:06 La línea 45 del segundo archivo que muestras es incorrecta. No existe el operador '>' para matrices. Lo correcto sería

    if(count($array) > 0) { ...}


    Una observación: puesto que un proceso de login presupone que solamente se obtendrá un único resultado al buscar el usuario en la base de datos, no necesitas usar un foreach() para recorrer los resultados, simplemente recuperas la información y la guardas.
      Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión