Сессия не сохраняется после перенаправления? - PullRequest
0 голосов
/ 06 мая 2018

Попытка сохранить роль пользователя с $_SESSION['role'] == $row['role']; Когда имя пользователя 'admin' входит в систему, он проверяет роль пользователя Admin в SQL и, если Admin существует, перенаправляет пользователя в admin.php Однако при перенаправлении на admin.php страница говорит, что $_SESSION['role'] на этой странице не определено.

Я думал, что определил это с $_SESSION['role'] == $row['role'] на login_action.php и используя start_session () в login_action.php и admin.php

Что не так?

login_action.php

<?php
      session_start();
include("connect.php"); 
$tbl_name="users"; 

$username=$_POST['username']; 
$password=$_POST['password'];

$username = stripslashes($username);
$password = stripslashes($password);
$username = mysqli_real_escape_string($conn,$username);
$password = mysqli_real_escape_string($conn,$password);
$password = sha1($password);

$result = mysqli_query($conn, "SELECT * FROM $tbl_name WHERE user='$username' AND password='$password'");

if(mysqli_num_rows($result) != 1){
      echo "<script>alert(' Wrong Username or Password Access Denied !!! Try Again');
      window.location='index.php';
      </script>";
     }else{
      $row = mysqli_fetch_assoc($result);
      $_SESSION['role'] == $row['role'];

      if($row['role'] == 'Admin'){
       header('location: admin.php');
       exit;

      else{
       echo "<script>alert('Wrong username or password. Try again');
      window.location='index.php';
      </script>";
      }
     }

admin.php

 <?php
    session_start();
    if (isset($_SESSION['role']) != 'Admin') {
        echo "You are not the admin";
    }
    ?>

    <html>
      <head>
        <title> Administrator Page </title>
     <head>

    <body><br>
     <h1 align="center">
      Welcome To Administrator Page <br>



      <a href='logout.php'>Click here to log out</a>
      </h1>
     </body>
     </html>

Ответы [ 2 ]

0 голосов
/ 06 мая 2018

в вашей login_action.php:

изменить $ _SESSION ['role'] == $ row ['role']; в $ _SESSION ['role'] = $ row ['role'];

в вашем файле admin.php:

isset ($ _ SESSION ['role'])! = 'Admin'

isset ($ var): возвращает true, если $ var установлено и не равно нулю.

Решение будет:

<?php
session_start();
if (isset($_SESSION['role']) && strtolower($_SESSION['role']) != 'admin') {
    echo "You are not the admin";
}
?>

<html>
  <head>
    <title> Administrator Page </title>
 <head>

<body><br>
 <h1 align="center">
  Welcome To Administrator Page <br>



  <a href='logout.php'>Click here to log out</a>
  </h1>
 </body>
 </html>
0 голосов
/ 06 мая 2018

Ошибка здесь:

login_action.php

else{
      $row = mysqli_fetch_assoc($result);
      $_SESSION['role'] = $row['role']; // <--- Notice only one equal

      if($row['role'] == 'Admin'){ // = inside if statement is always true
       header('location: admin.php');
       exit;
...