защита страницы не работает

#php #mysql

#php #mysql

Вопрос:

Мои страницы входа в систему, регистрации работают нормально, но функция protect_page не работает.Когда я не авторизуюсь и захожу на страницу, которая должна быть защищена, она показывает мне страницу. protect_page, функция входа в систему :

    <?php 
    function protect_page() {
    if (logged_in() === false) { 
    header('Location: protect.php');
    exit();
    }
    }
function logged_in(){
return (isset($_SESSION['user_id'])) ? true : false;

}
    ?>
  

init.php :

 <?php 
session_start();

require 'connect.php';
require 'general.php';
require 'users.php';
if(logged_in() === true) {
    $session_user_id = $_SESSION['user_id'] ;
    $user_data = user_data($session_user_id, 'user_id', 'username','password', 'salt');

    }
$errors = array() ; 
?>
  

adminpanel.html

 <?php 
protect_page();
include 'admin log in/init.php';
?>
  

login.php

  if($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
        }
    else 
    {
        $usernameVal = $_REQUEST["username"];         
        $hashedPW = hash('sha256', $saltedPW);
        $escapedPW = mysqli_real_escape_string($conn,$_REQUEST['password']);
        $query = "select * from users where username = '$usernameVal';";
        $resultSet = mysqli_query($conn,$query);
        if(mysqli_num_rows($resultSet) > 0) {
            $saltQuery = "select salt from users where username = '$usernameVal';";
            $result = mysqli_query($conn,$saltQuery);
            $row = mysqli_fetch_assoc($result);
            $salt = $row['salt'];
            $saltedPW = $escapedPW . $salt;
            $query = "select * from users where username = '$usernameVal' and password = '$hashedPW';";
            $resultSet = mysqli_query($conn,$query);
            if(mysqli_num_rows($resultSet) > 0) {
   header('Location: ../adminpanel.html');
            }
            else {
                echo 'Your username or password is incorrect !';
            }
        }
    }
  

register.php

 if($conn->connect_error) {
    die("Connection failed:" . $conn->connect_error);
}
else

{   
    $hashedPW = hash('sha256', $saltedPW);
    $escapedPW = mysqli_real_escape_string($conn,$_REQUEST['password']);        
    $salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
    $saltedPW = $escapedPW . $salt;
    $sql = "INSERT INTO users (username,password,salt) value ('$usernameVal','$hashedPW','$salt')";
    $result=$conn->query($sql);
    if($result==true)
        echo"Inserted";
    else 
        echo"Error";
}
  

Комментарии:

1. Где и как вы вызываете protect_page() метод? Обновите свой код, чтобы показать нам, где и как вы его используете, пожалуйста.

2. Я не получаю сообщение об ошибке

3. Я не могу определить, что-то не так с вашими методами, где и как вы вызываете этот метод? Кроме того, protect.php существует ли в том же каталоге, что и файл, в котором вы вызываете метод

4. Вы открыты для SQL-инъекций. $saltedPW не определяется при попытке хэширования, поэтому вы хэшируете пустую строку. Вам следует взглянуть на password_hash , password_verify функции.

5. Спасибо, ребята, проблема заключалась в вызове файлов