#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. Спасибо, ребята, проблема заключалась в вызове файлов