Впервые за несколько лет я пытаюсь реализовать небольшой проект в свободное время.Ничего страшного, и он будет работать только на локальном компьютереНо так как я хочу узнать что-то новое, я хочу сосредоточиться на динамическом контенте.
Пользователь должен войти в систему, чтобы получить доступ к целевой странице.И показанный контент зависит от прав пользователя.
Раньше я просто смешивал PHP с HTML и получал некоторые плохие коды (на мой взгляд), потому что у меня был PHP-код в теге body, например.
Мой код на каждой странице и подстранице всегда начинался с
<?php
session_start();
//check permissions and if the user is logged in
//redirect to login.php if not
//create navigation bar based on user permission or include another .php file
?>
И иногда я даже повторял HTML-код.
Впервые я пытаюсь использовать «современные» технологии дляполностью отделите серверную часть от внешнего интерфейса и сохраните код .html в чистоте от любых фрагментов PHP внутри.Я пытаюсь использовать базовый HTML / CSS / JS для внешнего интерфейса и использовать любой (прямо сейчас PHP) для внутреннего интерфейса.
Прямо сейчас моя «проверка», есть ли у пользователя разрешение на просмотр содержимого, завершена.с ajax и PHP-скриптом.
У меня есть обработчик события для события загрузки страниц (или разделов) и я передаю значение в PHP-скрипт, вот пример для моего start.html
document.addEventListener('DOMContentLoaded', function() {
var verusr = new XMLHttpRequest();
verusr.open('GET', '/inc/php/login.php');
verusr.onload = function() {
if (verusr.status === 200) {
if(verusr.responseText !== 'true') {
window.location = 'login.htm';
}
}
else {
alert('Request failed.');
}
};
verusr.send();
}
Мой login.php выполняет всю эту проверку, создает сеанс и возвращает эхо-значение true или false.
Это безопасный способ защиты сайта?
Наверное, не потому, что пользователь может видеть контент, если он отключает JavaScript, не так ли?
Так что обходной путь здесь заключается в динамическом построении контента страницы.
Прямо сейчасмоя навигация выглядит следующим образом:
<nav class="main">
<ul>
<li><a href="#1">Test1</a></li>
<li><a href="#2">Test2</a></li>
<li><a href="#3">Test3</a></li>
<li class="right"><a href="/inc/php/logout.php">Logout</a></li>
</ul>
</nav>
Это то, что любой увидит с отключенным JavaScript, если он зайдет на мой сайт.Это не будет большой проблемой, но это тоже не приятно.
Возможный обходной путь - построить страницу более динамично, верно?
Например, я мог бы вернуть JSON Array вместо true / false, который содержит все, что доступно, и вызвать функцию «createNav», которая перебирает все элементы массива и создает элемент списка?
Это был бы безопасный подход?Поскольку до запуска JS нет содержимого, вы не можете отключить его, чтобы увидеть что-либо.
Но, несмотря на вопрос безопасности, достаточно ли быстро?
Я бы планировал продолжить этот подход.Если кто-то щелкнет ссылку # 1, это вызовет публикацию AJAX (передача «1» сценарию), и сценарий решит, какие данные отображать, но JS решит, как создать содержимое.
ИлиДостаточно ли вернуть «ссылку» на файл .html, который может быть включен тогда?И у этого файла есть событие onload, чтобы предотвратить прямой доступ к нему?
Поскольку ранее я защищал свои страницы и подстраницы (которые были включены) с помощью фрагмента PHP, как описано выше, но защищал его с помощью AJAX, взаимодействующего с этимФрагмент кода сложен для меня, потому что вам необязательно запускать сценарий или вы можете манипулировать возвратом сценария (или изменить сам сценарий).
Но когда нет никаких данныхКлиент (несмотря на таблицу стилей) в первый момент должен помочь.
Я надеюсь, что смогу объяснить, что имел в виду, и с нетерпением жду ваших мнений.