Como utilizo una variable de sesión (por ejemplo $_SESSION[‘usuario’] en una consulta con MYSQL?

publicado por: Anonymous

lo que necesito es realizar un Select en Mysql pero donde las condiciones sean el usuario que inició la sesión y un campo en la base de datos pero hasta ahora no lo consigo.

Tengo una tabla donde tengo los registros de un usuario y entre ellos está la empresa a la que pertenece y necesito hacer una consulta a la base de datos usando el valor del usuario que inició la sesión y la empresa como mencioné.

Probé con varios ejemplos sin éxito y tampoco encuentro una pregunta anterior que pueda ayudarme a completar lo que necesito.

En mi proyecto ya tengo un proceso de autenticación con roles que funciona correctamente pero necesito añadir esta segunda condición

Esto es el index donde se muestran los campos para el logueo

_x000D_

_x000D_

<?php_x000D_
session_start();_x000D_
if(isset($_SESSION['usuario'])){_x000D_
  if($_SESSION['usuario']['tipo'] == "Admin"){_x000D_
    header('Location: php/admin/');_x000D_
  }else if($_SESSION['usuario']['tipo'] == "Usuario"){_x000D_
    header('Location: php/usuario/');_x000D_
  }_x000D_
}_x000D_
?>_x000D_
  <!DOCTYPE html>_x000D_
  <html lang="en">_x000D_
_x000D_
  <head>_x000D_
    <meta charset="utf-8">_x000D_
  </head>_x000D_
_x000D_
  <body>_x000D_
    <div class="error">_x000D_
      <div class="container">_x000D_
        <span>Datos no coinciden. Favor intenta nuevamente.</span>_x000D_
      </div>_x000D_
    </div>_x000D_
    <div class="container">_x000D_
      <div class="row">_x000D_
        <div class="main">_x000D_
          <form action="" id="formlg">_x000D_
            <input type="text" class="form-control" pattern="[A-Za-z0-9_-]{1,15}" name="userlg" placeholder="Usuario" required>_x000D_
            <input type="text" class="form-control" pattern="[A-Za-z0-9_-]{1,15}" name="clavelg" placeholder="Clave" required>_x000D_
            <input type="submit" class="botonlg form-control btn btn-primary" value="Iniciar Sesión">_x000D_
          </form>_x000D_
        </div>_x000D_
      </div>_x000D_
    </div>

_x000D_

_x000D_

_x000D_

Esto corresponde al login.php

_x000D_

_x000D_

<?php_x000D_
_x000D_
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){_x000D_
  require 'conexion.php';_x000D_
  sleep(2);  _x000D_
  session_start();_x000D_
  _x000D_
 $mysqli->set_charset('utf8');_x000D_
  _x000D_
  $usuario = $mysqli->real_escape_string($_POST['userlg']);_x000D_
  $clave = $mysqli->real_escape_string($_POST['clavelg']);_x000D_
_x000D_
  if($nueva_consulta = $mysqli->prepare("SELECT * FROM usuarios WHERE usuario = ? AND clave = ?")){_x000D_
    $nueva_consulta ->bind_param('ss', $usuario, $clave);_x000D_
    $nueva_consulta ->execute();_x000D_
    $resultado = $nueva_consulta->get_result();_x000D_
  if($resultado ->num_rows == 1){_x000D_
    $datos = $resultado ->fetch_assoc();_x000D_
    $_SESSION['usuario'] = $datos;_x000D_
    echo json_encode(array('error' => false, 'tipo'=>$datos['tipo']));_x000D_
  }else{_x000D_
    echo json_encode(array('error'=>true));_x000D_
  }_x000D_
    $nueva_consulta->close();_x000D_
  }_x000D_
}_x000D_
_x000D_
$mysqli -> close();_x000D_
_x000D_
?>

_x000D_

_x000D_

_x000D_

Creo que sería mejor hacer la consulta ya en el login.php pues todo lo que se mostrará en el proyecto estará condicionado por el usuario y la empresa como ya comenté.

Agradezco el tiempo y la atención.

solución

Creo que lo que quieres hacer es guardar el nombre de usuario además de la empresa a la que trabaja para despues usarlas en futuras consultas, ya que serán un condicionante.

Cuando el usuario inicie sesión crea dos variables de sesión, una con el nombre y otra con la empresa:

_x000D_

_x000D_

<?php_x000D_
  session_start()_x000D_
  $_SESSION['user'] = $_POST['userInput];_x000D_
  $_SESSION['company'] = $_POST['companyInput];_x000D_
?>

_x000D_

_x000D_

_x000D_

Más tarde, para usarlo en consultas en otras páginas .php:

_x000D_

_x000D_

<?php_x000D_
  session_start()_x000D_
_x000D_
  $user = $_SESSION['user'];_x000D_
  $company = $_SESSION['company'];_x000D_
_x000D_
  $con = "SELECT * FROM table WHERE user = '$user' and company = '$company'"_x000D_
?>

_x000D_

_x000D_

_x000D_

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *