Nueva pregunta

Pregunta:

Fecha: 11-09-2016 02:43:09 (En Español)

Validar ingreso a página PHP que requiere login[Resuelta]

Estoy desarrollando un sistema en php el cual hasta ahora funciona OK.!

Quiero es validar de que algun "necio" no entre desde la pagina menu.php" si antes validar que este logueado.

Yo me logeo y entro al menu, y luego me saldo cerrando sesion. pero si se me da por entrar a la pagina del menu.php directamente, habiendo cerrado sesion, me deja entrar y la idea es que debe logearse el usuario primero.

Cómo le hago?.

Gracias de anteman a todos !!!!

Saludos !!
Etiquetas: Empezar a programar - Formulario - HTML - PHP - Pregunta - Validaciones - Web Votos: 1 - Respuestas: 15 - Vistas: 34 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 11-09-2016 05:14:51 Buenos días, en donde determinás si está logueado o no?   Votos: 0 - Link respuesta
     
  • Fecha: 11-09-2016 05:18:04 Gracias !!

    Si. Antes me logueo desde un index.php que tengo y capturo datos de usuario y clave.
      Votos: 0 - Link respuesta
     
  • Fecha: 11-09-2016 05:50:10 Y, después, en cada página, preguntás si el usuario está logueado? Guardas en sesión los datos de usuario? Porque si es así, tendrías que preguntas si la variable de sesión donde guardas algún dato de usuario, está seteada y, dependiendo el perfil, si puede acceder a esa página o programa

    Algo así
    if(isset($_SESSION['susuario']){
       //código
    }
    


    Donde $_SESSION['susuario'] tenés guardado algo del usuario. Esto, como mínimo. Acá solo validás que el usuario ingresó por el login
      Votos: 2 - Link respuesta
     
  • Fecha: 11-09-2016 06:06:41 Diego Gracias !!

    No. No tengo eso en cada pagina. Pienso que debe ser así como usted dice.
    Te envió mi pagina de menú tal como la tengo actualmente.

    como seria el código para lo que quiero ¿?

    <html>
    <head>
    <title>CONTROLx</title>
    <style type="text/css">
    * {
    margin:0px;
    padding:0px;
    }
    #header {
    margin:auto;
    width:600px;
    font-family:Arial, Helvetica, sans-serif;
    }
    ul, ol {
    list-style:none;
    }
    .nav > li {
    float:left;
    }
    .nav li a {
    background-color:#000;
    color:#fff;
    text-decoration:none;
    padding:10px 12px;
    display:block;
    }
    .nav li a:hover {
    background-color:#434343;
    }
    .nav li ul {
    display:none;
    position:absolute;
    min-width:140px;
    }
    .nav li:hover > ul {
    display:block;
    }
    .nav li ul li {
    position:relative;
    }
    .nav li ul li ul {
    right:-140px;
    top:0px;
    }
    .Estilo1 {	color: #0000CC;
    	font-size: 36px;
    }
    .Estilo2 {font-size: 12px}
    .Estilo3 {color: #0000CC}
    .Estilo4 {
    	color: #000000;
    	font-weight: bold;
    }
    .Estilo5 {color: #000000}
    </style>
    </head>
    
    <body>
    
    <div id="header">
    <ul class="nav">
    <li><a href="">Inicio</a></li>
    <li><a href="">Registrar</a>
    <ul>
    <li><a href="">Clientes</a></li>
    <li><a href="">Asesores</a></li>
    <li><a href="">Técnicos</a></li>
    <li><a href="">Usuarios</a>
    <ul>
    <li><a href="">Submenu1</a></li>
    <li><a href="">Submenu2</a></li>
    <li><a href="">Submenu3</a></li>
    <li><a href="">Submenu4</a></li>
    </ul>
    </li>
    </ul>
    </li>
    
    <li><a href="">Procesos</a>
    <ul>
    <li><a href="">Facturacion</a></li>
    <li><a href="">Recibos de Caja</a></li>
    <li><a href="">Informe Técnico</a></li>
    </ul>
    </li>
    
    <li><a href="">Consultas</a>
    <ul>
    <li><a href="">Facturacion</a></li>
    <li><a href="">Recibos de Caja</a></li>
    <li><a href="">Informe Técnico</a></li>
    </ul>
    </li>
    
    <li><a href="">Acerca de</a>
    </li>
    
    
    <li><a href="logout.php">Cerrar Sesión</a>
    </ul>
    </li>
    
    </div>
    
    <div align="center">
      <blockquote>
        <blockquote>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <p><img src="logcontrolx_2.png" width="141" height="129" /> </p>
        </blockquote>
      </blockquote>
    </div>
    <p>
    <p>&nbsp;</p>
    </body>
    </html>
      Votos: 2 - Link respuesta
     
  • Fecha: 11-09-2016 06:36:52 Antes de la etiqueta <html>

    <?php
        if (strlen(session_id()) < 1)
                session_start();
       if($_SESSION['susuario']){
                 //toda la página que tenes
       }else{
             //redireccionas
             //Puede ser con header de php  .... (buscá en google, hay mucho ejemplos)
             // o con javascript
       }
    ?>


    Todo esto sirve si en el login tenés, cuando un usuario es es válido, es decir, cuando el usuario y contraseña es válido, $_SESSION['susuario'] = $row['usuario'];

    Todo esto, en todas las páginas

    Saludos

    DIEGO
      Votos: 2 - Link respuesta
     
  • Fecha: 11-09-2016 06:43:22
    <?php
    if (strlen(session_id()) < 1)
                 session_start();
    if($_SESSION['susuario']){
                 //toda la página que tenes
    }else{
                //redireccionas
               //Puede ser con header de php .... (buscá en google, hay mucho ejemplos)
               // o con javascript
    }
    ?>

    Esto en todas las páginas y scripts php que tengas (siempre y cuando tenga que estar logueado el usuario)

    http://php.net/manual/es/function.header.php
      Votos: 1 - Link respuesta
     
  • Fecha: 11-09-2016 07:21:53 Diego.

    Ya pruebo esto que me enviastes.

    Se me presento un inconveniente entre index.php con conexion a menu.php. Deja y resuelvo esto y pruebo lo que me envias.
      Votos: 0 - Link respuesta
     
  • Fecha: 11-09-2016 14:31:29 Aplica esto mi estimado
    Me supongo que usaras variables de session
    En el codigo que valida si el usuario existe en tu DB
    Si los datos ingresados existen crea una variable de session[ACCESSO] igualandolo a true sino le das false
    Y en tu pagina menu.php valida que si la variable acceso no existe lo redireccionas al loguin.

    Espero te sirva de orientacion.
      Votos: -1 - Link respuesta
     
  • Fecha: 12-09-2016 06:17:26 Mitnick deja el codigo ps .......

    COMO DECIA MITNICK EN EL PROCESO DE VALIDACION PARA EL INGRESO DE USUARIO
    SI ESTE SI EXITIERA O INGRERSO SU DATOS CORRECTAMENTE CREAS " SESSION[ACCESO] "

    Y LE ASIGNAS = TRUE.

    Ahora en cada pagina debes ingresar al inicio el codigo que valida si ACCESO = TRUE la pagina seguira renderizando de los contrario se te enviara a loguin.

    <!DOCTYPE html>
    <?php
    
    session_start();
     
    //Si no es = a true redirigimos 
     
    if( $_SESSION['ACCESO']<>TRUE){
    
    // header ("Location: rediriges a la pagina de logueo". ) 
    
        header("Location: ../ingresar.php");}
    
    ?>
    <html lang="en">
    ......tu pagina HTML
    
    


    Espero te sirva.
      Votos: 0 - Link respuesta
     
  • Fecha: 12-09-2016 19:39:47 Hola
    Como veras Mac hay varias alternativas para realizar la operatoria.
    El redireccionamiento de la página es mejor realizarla con php y no hacerlo con javascript ya que el usuario puede desactivar javascript del navegador y puede saltearse el redireccionamiento.
    yo usaria algo asi para redireccionar con codigo php:
    header("Location: pagina.php");
    exit();


    <?php
    session_start();
    if(!$_SESSION['usuario']){
    // si no hay sesion del usuario, es decir no esta logeado lo redirijo a la pagina de login
        header("Location: login.php");
         exit();
    }
    ?>
    [A partir de aquí toda la pagina HTML que vera el usuario logueado]

    Cabe aclarar que la primer linea debe estar session_start(); antes de ello NO DEBE HABER NINGUNA SALIDA AL NAVEGADOR es decir NO IMPRIMIR ABSOLUTAMENTE NADA EN PANTALLA.
    Caso contrario no funcionara.

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 12-09-2016 20:55:33 He vuelto con el fin de dejarte unos codigos que he realizado recién con intenciones ilustrativa totalmente funcional como ejemplo.

    index.php No hay mucho que decir, es la pagina inicial, comprueba si esta logueado, si lo esta lo redirige a menu.php caso contrario lo redirige a la pagina login.php que contiene el formulario para loguearse.

    <?php
    session_start();
    if(!$_SESSION['usuario']){
    // si no hay sesion del usuario, es decir no esta logeado lo redirijo a la pagina de login
        header("Location: login.php");
         exit();
    }  else {
        header("Location: menu.php"); // esta logeado
         exit();    
    }
    


    login.php [Formulario de logeo]

    <?php
    session_start();
    if($_SESSION['usuario']){
    // si  hay sesion del usuario, es decir  esta logeado lo redirijo a la pagina index donde esta el menu
        header("Location: index.php");
         exit();
    }
    
    ?>
    <!DOCTYPE HTML>
    <html lang="es">
        <head>
            <meta charset="UTF-8">
            <title>LOGIN</title>
        </head>
        <body>
            <h2>Ingreso:</h2>
            <form method="POST" action="login_verificar.php"  style="text-align: center">
    
                <p><input type="text" name="usuario" size="31"  placeholder="Usuario" required>&nbsp;<input type="password" name="password" size="31"  placeholder="Password" required>
                    <input type="submit" value="Login" name="login"></p>
            </form>
    
        </body>
    </html>
    


    login_verificar.php [recibe los datos del formulario de login]
    Este script seria reemplazado por la lógica de negocio que este utilizando para validar al usuario por ejemplo la utilización de la base de datos.
    en el ejemplo solo verifico que los datos recibidos no esten vacios y que esten definidas las variables de $_POST

    <?php
    session_start();
    $usuario = strtolower(trim($_POST['usuario']));
    $password = trim($_POST['password']);
    
    if (!isset($usuario, $password)) { // verifica si estan definidas las variables
        $login = FALSE;
    } else {
        if (empty($usuario) || empty($password)) { // verifica que no esten vacias
            $login = FALSE;
        } else {
            $login = TRUE;
        }
    }
    
    if ($login === TRUE) {
        $_SESSION['usuario'] = $usuario; // en la sesion guardo el nombre del usuario para ser usado en otras paginas
       
    }
        header("Location: index.php");
         exit();


    logout.php [cierra la sesion del usuario y lo redirige al index.php]

    <?php
    session_start();
    session_destroy(); // Elimino la sesion
    header("Location: index.php"); //redirijo al index
    exit();


    menu.php Tu script que he modificado el inicio para comprobar que el usurio este logueado y al final del codigo saludo al usuario.

    <?php
    session_start();
    if(!$_SESSION['usuario']){
    // si no hay sesion del usuario, es decir no esta logeado lo redirijo a la pagina de login
        header("Location: login.php");
         exit();
    }
    ?>
    <html>
    <head>
    <title>CONTROLx</title>
    <meta charset="UTF-8" >
    <style type="text/css">
    * {
    margin:0px;
    padding:0px;
    }
    #header {
    margin:auto;
    width:600px;
    font-family:Arial, Helvetica, sans-serif;
    }
    ul, ol {
    list-style:none;
    }
    .nav > li {
    float:left;
    }
    .nav li a {
    background-color:#000;
    color:#fff;
    text-decoration:none;
    padding:10px 12px;
    display:block;
    }
    .nav li a:hover {
    background-color:#434343;
    }
    .nav li ul {
    display:none;
    position:absolute;
    min-width:140px;
    }
    .nav li:hover > ul {
    display:block;
    }
    .nav li ul li {
    position:relative;
    }
    .nav li ul li ul {
    right:-140px;
    top:0px;
    }
    .Estilo1 {	color: #0000CC;
    	font-size: 36px;
    }
    .Estilo2 {font-size: 12px}
    .Estilo3 {color: #0000CC}
    .Estilo4 {
    	color: #000000;
    	font-weight: bold;
    }
    .Estilo5 {color: #000000}
    </style>
    </head>
    
    <body>
    
    <div id="header">
    <ul class="nav">
    <li><a href="">Inicio</a></li>
    <li><a href="">Registrar</a>
    <ul>
    <li><a href="">Clientes</a></li>
    <li><a href="">Asesores</a></li>
    <li><a href="">Técnicos</a></li>
    <li><a href="">Usuarios</a>
    <ul>
    <li><a href="">Submenu1</a></li>
    <li><a href="">Submenu2</a></li>
    <li><a href="">Submenu3</a></li>
    <li><a href="">Submenu4</a></li>
    </ul>
    </li>
    </ul>
    </li>
    
    <li><a href="">Procesos</a>
    <ul>
    <li><a href="">Facturacion</a></li>
    <li><a href="">Recibos de Caja</a></li>
    <li><a href="">Informe Técnico</a></li>
    </ul>
    </li>
    
    <li><a href="">Consultas</a>
    <ul>
    <li><a href="">Facturacion</a></li>
    <li><a href="">Recibos de Caja</a></li>
    <li><a href="">Informe Técnico</a></li>
    </ul>
    </li>
    
    <li><a href="">Acerca de</a>
    </li>
    
    
    <li><a href="logout.php">Cerrar Sesión</a>
    </ul>
    </li>
    
    </div>
    
    <div align="center">
      <blockquote>
        <blockquote>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <p>&nbsp;</p>
          <p><img src="logcontrolx_2.png" width="141" height="129" /> </p>
        </blockquote>
      </blockquote>
    </div>
        <p>Te doy la bienvenida <strong><?php echo $_SESSION['usuario'];?></strong></p>
    
    </body>
    </html>
    


    Uso como sesión el nombre del usuario que luego lo uso en menu.php para saludarlo en la linea
    <p>Te doy la bienvenida <strong><?php echo $_SESSION['usuario'];?></strong></p>

    Si se hace clic en Cerrar Sesión se ejecuta logout.php

    Hay que tener en cuenta que es totalmente mejorable el codigo expuesto, ya que lo he realizado con fines didácticos para que puedas experimentar con el y entender la lógica básica de session.

    Lo he realizado en pocos minutos por lo cual seguramente hay cosas que se me hayan pasado por alto. Creo que tiene todo lo necesario como para que puedas comenzar.

    Es un sistema de login muy pero muy básico, nada profesional ya que se emplean otras técnicas.

    Puedes prescindir de index.php puedes ingresar directamente a menu.php que de igual manera te redirige al login.

    Puedes probar los script independientemente en el navegador para ver que efecto produce cada uno de ellos.
    Cualquier cosa nos comentas.

    Espero que te sea útil.

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 12-09-2016 21:17:26 PD// como para jugar un poco dejo una variante.
    Tanto para loguearse como para desloguearse utilizando un mismo script.
    Es decir si no esta logueado hace las verificaciones para loguerlo y si esta logueado lo desloguea.
    login_verificar.php [recibe los datos del formulario de login o es ejecutado desde el enlace de Cerrar Sesión de menu.php]
    <?php
    session_start();
    
    if($_SESSION['usuario']){
    // es ejecutado desde cerrar sesion del menu.php
    // si  hay sesion del usuario, es decir  esta logeado lo deslogueo
    session_destroy(); // Elimino la sesion
        header("Location: index.php"); // lo redirijo al index
         exit();// termino el script
    }
    // es ejecutado por el formulario de login.php
    $usuario = strtolower(trim($_POST['usuario']));
    $password = trim($_POST['password']);
    
    if (!isset($usuario, $password)) { // verifica si estan definidas las variables
        $login = FALSE;
    } else {
        if (empty($usuario) || empty($password)) { // verifica que no esten vacias
            $login = FALSE;
        } else {
            $login = TRUE;
        }
    }
    
    if ($login === TRUE) {
        $_SESSION['usuario'] = $usuario; // en la sesion guardo el nombre del usuario para ser usado en otras paginas
       
    }
        header("Location: index.php");
         exit();


    En menu.php solo hay que modificar la linea del enlace de Cerrar Sesión, cambiar logout.php por login_verificar.php

    Eso para jugar un poco con los códigos

    Saludos
      Votos: 1 - Link respuesta
     
  • Fecha: 27-10-2016 01:50:34 Saludos !!

    He vuelto y retomo el tema pendiente.!!

    Probaré las soluciones expuestas por ustedes y les comento pronto !!
    Muchas Gracias !!
      Votos: 1 - Link respuesta
     
  • Fecha: 27-10-2016 18:34:15 Walter !!

    Saludos !!

    Probé el código y me funciona perfecto !!

    Bien ahora quiero probarlo con mi código, exactamente que valide el usuario que se ingresa y lo busque con la tabla en mysql, el cual esto lo hace perfecto.

    Fuera de esto le adicione a menu.php que me colocas en el pos, pero no visualiza se queda. En cambio con mi xmenux.html, me funciona, pero cuando cierro sesion y llamo al menu este ultimo me lo muestra y la idea es que se vaya a pedir datos del usuario (login ó index)

    el link
    http://controlx.eshost.com.ar/index.php

    mi usuario es mac howard, password 119964

    Si puedes validame que esta mal.

    Te agradezco tu gestion !!!
      Votos: 1 - Link respuesta
     
  • Fecha: 27-09-2017 00:57:31 Gracias a todos por las respuestas dadas.
    ya puede dar solución al tema con el apoyo de todos .

    Muchas gracias !!
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com