Скрипт входа со скрытыми кнопками
5204 просмотра
7 ответа
Я использовал PHP и JavaScript для создания веб-сайта моего отца. Он хочет включить систему входа в систему на своем веб-сайте, и у меня есть дизайн системы, использующий PHP. Моя проблема в том, как показать кнопки, если человек вошел в систему?
Например - у вас есть Дом , Продукты , О нас и Контакт . Я хочу, чтобы у меня были кнопки « Дилер» , « Дистрибьютор» и, возможно, другая информация, если пользователь вошел в систему. Поэтому у меня будет « Домой» , « Продукты» , « О нас» , « Контакты» , «Дилер» (при входе в систему дилера), « Дистрибьютор» (при входе в систему поставщика) вперед.
Будет ли JavaScript хорошим способом сделать это, или PHP, или, может быть, даже оба? Использование JavaScript для отображения и скрытия кнопок и PHP для проверки, какие кнопки показывать.
Автор: Dennis Источник Размещён: 03.07.2019 04:26Ответы (7)
19 плюса
Что касается безопасности, вы не можете доверять тому, что исходит от клиента :
- Посетитель может увидеть весь ваш код (HTML и Javascript, а не PHP) и попробовать что-то
- Посетитель может даже не использовать браузер; отправить запрос с помощью скрипта тривиально легко
Это означает, что скрытие кнопок является хорошим дизайном интерфейса пользователя (потому что вы не можете использовать их, если вы не вошли в систему). Но это не функция безопасности. Функция безопасности проверяет на сервере, что посетитель вошел в систему перед каждым действием, которое требует этого.
Если вы не собираетесь показывать кнопки, бесполезно отправлять HTML и изображения в браузер, а затем скрывать их с помощью Javascript. Я бы проверил с PHP.
Автор: Christian Lescuyer Размещён: 10.08.2008 07:598 плюса
В вашем файле меню или W / E вы положите:
<? require 'auth.php' ?>
<ul>
<li><a href="">Home</a></li>
<li><a href="">Products</a></li>
<? if( loggedin() ): ?><li><a href="">Secret area</a></li><? endif; ?>
</ul>
Затем на страницах, где требуется авторизация, просто сделайте это:
<?php
require 'auth.php';
require_login();
?>
Где auth.php может содержать:
<?php
function loggedin(){
return isset( $_SESSION['loggedin'] );
}
function require_login(){
if( !loggedin() ){
header( 'Location: /login.php?referrer='.$_SERVER['REQUEST_URI'] );
exit;
}
}
?>
Автор: Akira
Размещён: 11.08.2008 01:35
2 плюса
Если вы используете JavaScript, чтобы скрыть кнопки, вы открываете дыру в безопасности в приложении. Злонамеренный пользователь может либо отключить JavaScript, либо применить некоторые из них, чтобы обойти вашу безопасность.
Я предлагаю использовать PHP, чтобы выбрать визуализацию кнопок или нет. Я делаю это в .NET довольно часто.
Вы должны иметь возможность проверять доступ пользователей на стороне сервера, когда они пытаются использовать ограниченную кнопку.
Автор: EndangeredMassa Размещён: 10.08.2008 04:021 плюс
На моей работе мы создали библиотеку, которая предоставляет такие функции, как проверка входа пользователя в систему. Например:
<?php
require_once 'Auth.php';
// output some html
if (isLoggedIn()) {
echo 'html for logged in user';
}
// rest of html
Для страниц, которые должны видеть только пользователи, прошедшие аутентификацию, контроллер проверяет, вошли ли они в систему, и, если нет, перенаправляет их на страницу входа.
<?php
public function viewCustomer($customerId) {
if (!isLoggedIn())
redirectToLoginPage();
}
Автор: grom
Размещён: 11.08.2008 01:23
1 плюс
Все, что писал Кристиан Лескуйер, верно. Заметьте, однако, что он сказал «я бы», а не «вы должны». Выбор не так прост.
Прежде всего, безопасность не является проблемой при выборе. Вы должны иметь проверку безопасности на сервере, когда вы выполняете действие. Какой код решает показать / скрыть кнопку, которая приводит к действию, не имеет значения.
Это оставляет нам только один недостаток в выполнении логики «показать / скрыть» в Javascript - HTML-код, отправляемый пользователю, больше, чем необходимо. Это может не иметь большого значения.
Однако наличие логики «показать / скрыть» в PHP имеет минус. Требуемый PHP-код обычно является супом-тегом . Код Акиры дает хороший пример того, как это обычно делается.
Соответствующий код Javascript, вероятно, будет выглядеть примерно так:
if (logged())
{
elementSecretArea.style.display = "list-item";
}
(при условии, что элементы, которые могут быть скрыты, имеют отображение: по умолчанию нет).
Этот стиль также допускает приятный сценарий «Ajax»: пользователь видит страницу без секретной области, вводит пароль, видит секретную область без обновления страницы.
Итак, если у вас уже есть скрипт, который запускается при загрузке документа по другим причинам, я бы серьезно подумал о том, чтобы показать логику там.
Автор: buti-oxa Размещён: 25.08.2008 06:320 плюса
В основном там, где у вас есть меню в html, скажем, в виде списка, <ul> <li>Home</li> </ul>
вы добавляете php после </li>
последнего элемента:
<?php
if($session-logged_in) {
?>
<li>My Account</li>
<?php
}
?>
Автор: ITGaWD
Размещён: 18.09.2009 06:50
0 плюса
Что вы делаете, просто используете сеанс, когда пользователь вошел в систему. Вы можете это так
$_SESSION["UserId"] = $row['iduser'];
$_SESSION["UserType"] = $row['user_type'];
$_SESSION["UserName"] = $row['username'];
Затем вы можете проверить этого пользователя с типом пользователя и сделать видимые необходимые кнопки, как это
<?php
if( $_SESSION["UserType"] == 'Dealer'){
?>
<a href="your url" class="btn btn-primary" />
<?php
}
?>
Автор: Nipun Tharuksha
Размещён: 03.07.2019 01:24
Вопросы из категории :
- javascript Как определить, какой из указанных шрифтов был использован на веб-странице?
- javascript Валидация клиентской стороны ASP.Net
- javascript Длина объекта JavaScript
- javascript Получение текста из выпадающего списка
- javascript Скрипт входа со скрытыми кнопками
- javascript Как автоматически изменить размер текстовой области с помощью Prototype?
- javascript Удаление элементов с помощью Array.map в JavaScript
- javascript Прокрутка переполненных DIV с помощью JavaScript
- javascript API Карт Google - проблемы с классом GLatLngBounds
- javascript Проверка десятичных чисел в JavaScript - IsNumeric ()
- php Как вы отлаживаете PHP-скрипты?
- php Заставьте XAMPP / Apache обслуживать файл вне htdocs
- php Как включить файлы PHP, которые требуют абсолютного пути?
- php How can I find unused functions in a PHP project
- php Эффективное изменение размера JPEG изображения в PHP
- php MySQL или PDO - каковы плюсы и минусы?
- php Как бы вы внедрили аутентификацию на основе FORM без резервной базы данных?
- php Самый простой способ профилировать скрипт PHP
- php Изображения в PHP