Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con inicio de sesión

Estas en el tema de Problema con inicio de sesión en el foro de PHP en Foros del Web. Hola a todos… tengo el problema de no poder iniciar sesión a un panel de control, ingreso la contraseña correcta y su usuario pero no ...
  #1 (permalink)  
Antiguo 18/09/2016, 19:19
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
Problema con inicio de sesión

Hola a todos… tengo el problema de no poder iniciar sesión a un panel de control, ingreso la contraseña correcta y su usuario pero no me es permitido ingresar… alguien me podría ayudar a ver cuál sería el problema de mi código porfavor, llevo una semana y me tiene desesperado.

INDEX.PHP
Código PHP:
Ver original
  1. require('_conexion.inc.php');
  2. include ('includes/funciones.php');
  3. sec_session_start();
  4.    
  5.     if(isset($_SESSION["username"])){
  6.         header("Location: pag-protegida.php");
  7.     }
  8.    
  9.     if(!empty($_POST))
  10.     {
  11.         $email = mysqli_real_escape_string($cnx,$_POST['email']);
  12.         $password = mysqli_real_escape_string($cnx,$_POST['pass']);
  13.         $error = '';
  14.        
  15.         $sha1_pass = sha1($password);
  16.        
  17.         $consulta = "SELECT NOMBRE FROM usuario_admin WHERE EMAIL = '$email' AND PASSWORD = '$sha1_pass'";
  18.         $result=$cnx->query($consulta);
  19.         $rows = $result->num_rows;
  20.        
  21.         if($rows > 0) {
  22.             $row = $result->fetch_assoc();
  23.             $_SESSION['username'] = $row['NOMBRE'];
  24.             $_SESSION['pass'] = $row['PASSWORD'];
  25.             $_SESSION['email'] = $row['EMAIL'];
  26.            
  27.             header("location: pag-protegida.php");
  28.             } else {
  29.             $error = "El nombre o contraseña son incorrectos";
  30.         }
  31.     }
Código HTML:
Ver original
  1. <form  action="<?php $_SERVER['PHP_SELF']; ?>"  method="post">
  2.                         <h1>Login</h1>
  3.                         <div class="form-group">
  4.                             <input class="form-control"  name="email" type="text" placeholder="Usuario">
  5.                         </div>
  6.                         <div class="form-group">
  7.                            
  8.                             <input class="form-control"  name="pass" type="password" placeholder="Password">
  9.                         </div>
  10.                         <div class="form-group">
  11.                             <label>
  12.                                 <input type="checkbox" name="remember_me">
  13.                                 Recuerdame
  14.                             </label>
  15.                         </div>
  16.                         <input  type="submit" value="Entrar"/>
  17.                     </form>

FUNCIONES.PHP
Código PHP:
Ver original
  1. function sec_session_start() {
  2.     $session_admin_panel = 'username';  
  3.     $secure = "SECURE";
  4.  
  5.     //Esto detiene que JavaScript sea capaz de acceder a la identificación de la sesión.
  6.     $httponly = true;
  7.  
  8.     // Obliga a las sesiones a solo utilizar cookies.
  9.     if (ini_set('session.use_only_cookies', 1) === FALSE) {
  10.         header("Location: ../index.php");
  11.         exit();
  12.     }
  13.  
  14.     // Obtiene los params de los cookies actuales.
  15.     $cookieParams = session_get_cookie_params();
  16.     session_set_cookie_params($cookieParams["lifetime"],
  17.     $cookieParams["path"],
  18.     $cookieParams["domain"],
  19.     $secure,
  20.     $httponly);
  21.  
  22.     session_name($session_admin_panel);
  23.  
  24.     session_start();            // Inicia la sesión PHP.
  25.     session_regenerate_id();    // Regenera la sesión, borra la previa.
  26. }
  27.  
  28.  
  29.  
  30. function login_check($cnx) {
  31.  
  32.     if (isset($_SESSION['email'], $_SESSION['pass']) == true) {
  33.         header("Location: pag-protegida.php");
  34.         exit();
  35.         }else {
  36.            header("Location: index.php");
  37.         exit();
  38.        }
  39. }

PAG-PROTEGIDA.PHP
Código PHP:
Ver original
  1. include ('php/superior.php');  // en archivo superior se incluye conexion.inc.php
  2. include_once ('includes/funciones.php');
  3. sec_session_start();
  4.  
  5. <?php if (login_check($cnx) == true) : ?>
  6.  <p>Bienvenido <?php echo htmlentities($_SESSION['username']); ?>!</p>
  7. <?php else : ?>
  8.             <p>
  9.                 <span class="error">Usted no esta autorizado para ver esta página.</span> Favor <a href="index.php">Use el registro</a>.
  10.             </p>
  11.         <?php endif; ?>

CERRAR.PHP
Código PHP:
Ver original
  1. // Desconfiguro todos los valores de sesión.
  2.     $_SESSION = array();
  3.    
  4.     // Obtengo los parámetros de sesión.
  5.     $params = session_get_cookie_params();
  6.    
  7.     // Borro el cookie actual.
  8.     setcookie(session_name(),'', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
  9.    
  10.     // Destruyo sesión.
  11.     session_destroy();
  12.     header("Location: ../index.php");
  13.     exit();

Favor ayudenme.. Gracias de ante mano, saludos..
  #2 (permalink)  
Antiguo 18/09/2016, 19:38
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.135
Antigüedad: 13 años, 1 mes
Puntos: 170
Respuesta: Problema con inicio de sesión

No estoy seguro que tenga que ver con tu error... pero aqui:

Código PHP:
Ver original
  1. $consulta = "SELECT NOMBRE FROM usuario_admin WHERE EMAIL = '$email' AND PASSWORD = '$sha1_pass'";
  2.         $result=$cnx->query($consulta);
  3.         $rows = $result->num_rows;
  4.        
  5.         if($rows > 0) {
  6.             $row = $result->fetch_assoc();
  7.             $_SESSION['username'] = $row['NOMBRE'];
  8.             $_SESSION['pass'] = $row['PASSWORD'];
  9.             $_SESSION['email'] = $row['EMAIL'];

en el SELECT solo tomas nombre, comparandolo con mail y password... luego ese mismo query donde solo seleccionas nombre lo ocupas para extraer password y mail para las variables de session?
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #3 (permalink)  
Antiguo 18/09/2016, 19:54
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Problema con inicio de sesión

Como seria la forma correcta petit89? no doy con ello, ya ni siquiera se si asi esta bien o no.. de hecho, si en el archivo funciones.php quito la funcion login_check ingreso sin ningun problema.. pero se podria ingresar por la URL sin ella.. (soy super novato en esto de php)
  #4 (permalink)  
Antiguo 19/09/2016, 08:02
Avatar de marciano_79  
Fecha de Ingreso: agosto-2009
Mensajes: 88
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Problema con inicio de sesión

Estimado.. ya di con el error.. el problema esta en el archivo funciones.php

Elimine el archivo y deje de llamar la sesión como funcion, sec_session_start(); y solo uso session_start(); y todo funciona bien.. tambien del archivo index.php sobre lo que me señalastes, lo deje así..

Código PHP:
Ver original
  1. if($rows > 0) {
  2.             $row = $result->fetch_array();
  3.             $_SESSION['username'] = $row['NOMBRE'];

Ahora no niego que me habría gustado crear la sesión con una función para que sea más segura pero ni idea como hacerlo... Saludos!
  #5 (permalink)  
Antiguo 02/10/2016, 13:15
Avatar de skywolker  
Fecha de Ingreso: julio-2011
Ubicación: España
Mensajes: 195
Antigüedad: 12 años, 8 meses
Puntos: 8
Respuesta: Problema con inicio de sesión

Es que si no nos pones lo que te devuelve los notice warning o fatal error no podemos aclarar tus dudas .

Etiquetas: sesiones
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 16:05.