Хорошо, я объясню, как работает базовая концепция и очень простая реализация, чтобы добиться успеха.
PHP (и большинство веб-приложений) полагаются на сервисы RESTful - которые, к нашей озабоченности в связи смомент означает, что каждый запрос не связан удаленно с любым другим выполняемым запросом - будь то тот же пользователь или другие.
Так что это значит?
Это означает, что для каждого отдельного запроса вы должны выполнять свои проверки.Вам необходимо убедиться, что у пользователя есть права на выполнение этой страницы или, что менее строго, он видит ее содержимое.
Как это достигается?
Во многих отношенияхна самом деле.Существует множество методов, применяемых для принудительной авторизации в веб-приложениях, но они, по сути, оба разбиваются на один из двух - либо централизованный, либо децентрализованный.
- Централизованный
Это означает, что все ваши действия (и контроллеры) обрабатываются в одном файле.Скажи index.php.Этот файл будет затем включать или делегировать свои задачи другим файлам (которые сами по себе не могут выполняться с помощью обычных запросов) на основе параметров запроса.Это очень популярный подход, но не совсем прямой для новых разработчиков.Примеры приложений, использующих этот подход, могут иметь URL-адреса типа: index.php? Do = register, index.php? Do = login, index.php? Do = showtopic & topic_id = 2 и т. Д.
Простая реализация этого метода будет выглядеть следующим образом:
<?php
// index.php
define('RUNNING_APP', true);
// 1. place your auth code here, or...
switch ($_REQUEST['do']) {
case 'register':
// 2. or here
include 'inc/register.php';
break;
case 'do_register':
// 2. and here, and before every include.. and so forth.
include 'inc/do_register.php';
break;
}
?>
<?php
// inc/register.php
defined('RUNNING_APP') or die('Cannot access this script directly'); // make sure to break direct access
?>
<form action="index.php?do=do_register">
<!-- form elements -->
</form>
и т. Д.
Я задокументировал, куда должен идти обычный код авторизации.
- Децентрализовано
Однако, используя этот подход, ваш код авторизации должен идти в начале каждого отдельного файла.URL-адреса приложений такого рода обычно выглядят примерно так: register.php, login.php и т. Д.Основная проблема здесь заключается в том, что вам нужно выполнять всю логику аутентификации для каждого файла, как указано выше, и это может быть беспокойной работой, если ваши файлы увеличиваются в объеме.Удобное решение состоит в том, чтобы иметь эту логику в одном файле и включать этот файл (который убил бы запрос на unauth personel) перед любой вашей логикой.Простым примером будет:
<?php
// index.php
include('inc/auth.php');
// index logic
?>
<?php
// register.php
include 'inc/auth.php';
// register logic
?>
<?php
// inc/auth.php
$logged_in = false;
if (!$logged_in) {
die ('You do not have permission to access this page. Please login');
}
?>