Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/01/2018, 23:27
ceysmar
 
Fecha de Ingreso: febrero-2015
Ubicación: venezuela
Mensajes: 50
Antigüedad: 9 años, 10 meses
Puntos: 0
Exclamación sesión segura php

hola estoy haciendo una pagina web y dichas sesiones administraran digamos un saldo dinero que sera valido para mis clientes asi que estoy intentando hacer una función de php para iniciar sesión
quiero ver si le parece segura o no ? ya que yo no soy un experto en la materia en cuanto sesiones segura

no mostrare el html ya que eso es básico pero aquí la función que inicia sesión
Código PHP:
Ver original
  1. public function login($f)
  2.     {
  3.         //validamos campos vacios
  4.         if ($f->correo != "") {
  5.             if ($f->pass != "") {
  6.                 // validamos fomrato de correo electronico
  7.                 if (filter_var($f->correo, FILTER_VALIDATE_EMAIL)) {
  8.                     $correo1    = $this->con->real_escape_string(trim(strtolower($f->correo)));
  9.                     $resultados = $this->con->query("SELECT * FROM  user WHERE correo='$correo1'");
  10.                     $data       = $resultados->fetch_array(MYSQLI_ASSOC);
  11.                     $correo2    = $data['correo'];
  12.                     $clave      = $data['clave'];
  13.                     $resultados->close();
  14.                     if (password_verify($f->pass, $clave) and $correo1 == $correo2) {
  15.                         session_start();
  16.                         $_SESSION['user_emeil'] = $data['correo'];
  17.                         $_SESSION['user_id']    = $data['id'];
  18.                         $_SESSION['user_name']  = $data['nombre'];
  19.                         $_SESSION['segure']     = md5(rand() . $_SESSION['user_emeil']);
  20.                         $token                  = $this->con->query("UPDATE user SET segure ='{$_SESSION['segure']}' WHERE id='{$_SESSION['user_id']}'");
  21.                         echo "2";
  22.  
  23.                     } else {
  24.                         echo "<div id='mensaje' class='alert alert-danger'>Correo Electrónico o Contraseña incorrectas.</div>";
  25.                     }
  26.                 } else {
  27.                     echo "<div id='mensaje' class='alert alert-danger'>El Correo Electrónico es invalido.</div>";
  28.                 }
  29.             } else {
  30.                 echo "<div id='mensaje' class='alert alert-danger'>El campo Contraseña esta vació.</div>";
  31.             }
  32.         } else {
  33.             echo "<div id='mensaje' class='alert alert-danger'>El campo Correo Electrónico esta vació.</div>";
  34.         }
  35.  
  36.     }

y aquí la función que chequea las sesiones esta incluido en todas las paginas que solo serán visible al usuario registrado
Código PHP:
Ver original
  1. public function CheckSesion()
  2.     {
  3.         if (!empty($_SESSION['user_id']) && !empty($_SESSION['segure'])) {
  4.  
  5.             //quitamos el posible SQLInjection del user y password
  6.             $_SESSION['user_id'] = $this->con->real_escape_string($_SESSION['user_id']);
  7.             $_SESSION['segure']  = $this->con->real_escape_string($_SESSION['segure']);
  8.  
  9.             //checamos que exista
  10.             $chequear = $this->con->query("SELECT * FROM user WHERE id = '{$_SESSION['user_id']}' and segure = '{$_SESSION['segure']}'");
  11.             $existe   = $chequear->num_rows;
  12.             if ($existe == 1) {
  13.                 //volvemos a calcular un segure
  14.                 $prueva             = $_SESSION['segure'];
  15.                 $_SESSION['segure'] = md5(rand() . $_SESSION['user_emeil']);
  16.                 $token              = $this->con->query("UPDATE user SET segure ='{$_SESSION['segure']}' WHERE id='{$_SESSION['user_id']}'");
  17.                 $chequear->close();
  18.  
  19.             } else {
  20.                 session_destroy();
  21.                 header("Location:../account.php");
  22.                 exit;
  23.             }
  24.  
  25.         } else {
  26.             session_destroy();
  27.             header("Location:../account.php");
  28.             exit;
  29.         }
  30.     }

en el formulario de inicio sesión el chequeo por si ya esta logiado solo redirecciona a la pagina de bienvenido usuario y en bienvenido usuario es donde se comprueba la sesion
Código PHP:
Ver original
  1. <?php
  2. if (!empty($_SESSION['user_id']) && !empty($_SESSION['segure'])) {
  3.  
  4.     header("Location:user/index.php");
  5.  
  6. } else {
  7. }
  8.  
  9. ?>