简体   繁体   English

如何使用php会话访问数据库信息?

[英]How can I access database information with php sessions?

I'm a nOOb. 我是个nOOb。 I know how to make simple login scripts but I don't quite understand how to access database information/columns across different pages with $_SESSION. 我知道如何制作简单的登录脚本,但我不太明白如何使用$ _SESSION访问不同页面的数据库信息/列。 I'm trying to display a table depending on user_level. 我正在尝试根据user_level显示一个表。

users table 用户表

id |username |email |password | user_level | user_roles |last_login 

dashboard.php dashboard.php

<?php if  ($_SESSION['login_user'] == user_level["admin"]):?>

<div class="table">
Admin table
</div>

<?php else: ?>

    <div class="table">
Employee table
</div>

login.php 的login.php

<?php
ob_start();
include 'includes/header.php';

 if($_SERVER["REQUEST_METHOD"] == "POST") {
      // username and password sent from form 

      $myusername = mysqli_real_escape_string($db,$_POST['username']);
      $mypassword = mysqli_real_escape_string($db,$_POST['password']); 


      $update_query = "UPDATE users SET last_login=now() WHERE username='" .$myusername. "'";
      $update_q = "UPDATE users SET last_update=now() WHERE username='" .$myusername. "'";
      $sql = "SELECT id FROM users WHERE username = '$myusername' and password = '$mypassword'";
      $execute_update = mysqli_query($db,$update_query);
     $execute_u= mysqli_query($db,$update_q);
      $result = mysqli_query($db,$sql);
      $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
      $active = $row['active'];

      $count = mysqli_num_rows($result);

      // If result matched $myusername and $mypassword, table row must be 1 row

      if($count == 1) {

         $_SESSION['login_user'] = $myusername;

         header("location: dashboard.php");
      }else {
         $error = "Your Login Name or Password is invalid";
      }
 }
?>

session.php session.php文件

<?php
include '../includes/config.php';
   $user_check = $_SESSION['login_user'];

   $ses_sql = mysqli_query($db,"SELECT username FROM users WHERE username = '$user_check' ");

   $row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);

   $login_session = $row['username'];

   if(!isset($_SESSION['login_user'])){
      header("location:../login.php");
   }
?>

As $_SESSION['login_user'] and username in the database are the same, you can use the $_SESSION variable across multiple pages to get the user_level of the user that is logged in. 由于$ _SESSION ['login_user']和数据库中的用户名相同,因此可以在多个页面中使用$ _SESSION变量来获取登录用户的user_level。

//checkUserLevel.php
$user_check = $_SESSION['login_user'];
$ses_sql = mysqli_query($db,"SELECT * FROM users WHERE username = '$user_check' ");//This query will only return 1 user if usernames are unique
while($row = mysqli_fetch_assoc($ses_sql)){
$user_level = $row['user_level']; //Get user_level of that user
}

//Use in dashboard.php
include 'includes/checkUserLevel.php';
if($user_level=='admin'){
 //Show Tables 
}else{
 //Do something else
}

You should be able to use this method if not let me know and i'll try help 如果不让我知道你应该能够使用这种方法,我会尝试帮助

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM