PHP, MYSQL показывают веб-сайт только после входа в систему

Я пытаюсь сделать сайт, на котором нужно авторизоваться, чтобы получить доступ к странице. Все работает нормально, но я хочу предотвратить прямой доступ.

loginserver.php:

<?php
$error=''; //Variable to Store error message;
if (isset($_POST['submit'])){
    if (empty($_POST['user']) || empty($_POST['pass'])){
        $error = "Username or Password is Invalid";
    }
    else
    {
        //Define $user and $pass
        $user=$_POST['user'];
        $pass=$_POST['pass'];
        //Establishing Connection with server by passing server_name, user_id and pass as a patameter
        $conn = mysqli_connect("localhost", "root", "");
        //Selecting Database
        $db = mysqli_select_db($conn, "test");
        //sql query to fetch information of registerd user and finds user match.
        $query = mysqli_query($conn, "SELECT * FROM userpass WHERE pass='$pass' AND user='$user'");

        $rows = mysqli_num_rows($query);
        if ($rows == 1){
            header("Location: welcome.php"); // Redirecting to other page
        }
        else
        {
            $error = "Username of Password is Invalid";
        }
        mysqli_close($conn); // Closing connection
    }
}

?>

Welcome.php

<!doctype html>
<html>
<head>
<meta charset = "UTF-8">
</head>
<body>
<h1>Welcome</h1>
</body>
</html>
Ваш код уязвим для SQL-инъекций и будет взломан, даже если вы избегаете входов! Вместо этого используйте Подготовленные заявления. Проверить: Как я могу предотвратить SQL-инъекцию в PHP
Spoody 16.05.2018 19:58
Пожалуйста, не храните пароли в виде обычного текста и не хешируйте его с помощью слабых алгоритмов, используйте функции пароля, предоставляемый PHP. Проверить: Как использовать bcrypt для хеширования паролей в PHP
Spoody 16.05.2018 19:59

читать о php-сессии

Jeff 16.05.2018 20:01

вы создали страницу входа, и она РАБОТАЕТ !, но что вы имеете в виду под запретом прямого доступа?

xanadev 16.05.2018 20:02

затем включите простой файл (во всех остальных), который проверяет действительный логин (в сеансе) и перенаправляет на login.php, если вы не вошли в систему

Jeff 16.05.2018 20:02
ПРЕДУПРЕЖДЕНИЕ: Написать свой собственный уровень контроля доступа непросто, и есть много возможностей сделать это совершенно неправильно. Пожалуйста, не пишите свою собственную систему аутентификации, если любой современный рамки разработки, такой как Laravel, имеет встроенный надежный система аутентификации. По крайней мере, следуйте рекомендуемые лучшие практики безопасности и никогда не храните пароли в виде простого текста или слабому хешу, например SHA1 или MD5.
tadman 16.05.2018 21:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
61
1

Ответы 1

In loginserver.php page you have to start session at top of page.

<?php
session_start();
include('conn.php');

//  rest of code...

    $row = mysql_fetch_array($query);
if ($rows == 1){
    $_SESSION['uname'] = $row['user'];

            header("Location: welcome.php"); // Redirecting to other page
        }
?>  

after that check it in welcome.php page check session variable coming from user login page is active or not.    

<?php
session_start();
include('conn.php');

if (!isset($_SESSION['uname'])){
 header("Location:loginserver.php");    
}
?>

Надеюсь, это сработает для вас.

Другие вопросы по теме