2016-09-15 5 views
0

Например, пользователь не может получить доступ к файлам PHP, например www.mywebsite.com/mypage.php. .
что пользователь перенаправляется обратно на страницу входа в систему, если они не вошли вКак запретить пользователям просматривать документы в папке без входа?

Проблема в том, что они являются в состоянии получить доступ к URL, как: www.mywebsite.com/test/mydocument.pdf.

Как я могу запретить доступ и перенаправление на страницу входа в систему, если они не вошли в систему?

+0

Итак, вы хотите, чтобы они могли добраться до 'mydocument.pdf', когда не вошли в систему или нет? – AbraCadaver

+0

Может быть, это полезно, я думаю, что ответ хороший: https: // stackoverflow.com/questions/19645196/php-restrict-access-to-files-in-directory – Bolli

ответ

0

Аналогичный вопрос здесь php redirect if not logged in

Просто проверьте с сеансами

if(!isset($_SESSION['login'])){ 

header("Location: http://www.example.com/login.php"); 
} 

Также с сессиями вы можете установить привилегии для пользователей Acces файлов на основе их ранга.

0

Что я делаю, когда пользователь входит в систему, я устанавливаю переменной сессии, как и

$_SESSION['loggedin'] = true; 

Затем на каждой странице я делаю это в самом начале страницы

session_start(); 

if(!isset($_SESSION['loggedin'] || $_SESSION['loggedin'] !== true){ 
    header('Location: http://www.foo.com/login.php'); 
    exit(); <-- THIS IS VERY IMPORTANT 
} 

УБЕДИТЕСЬ, чтобы включить exit(); вызов функции. В противном случае клиент может отклонить запрос перенаправления, а остальная часть страницы будет отображать. Таким образом, даже если клиент отрицает запрос на перенаправление, все, что они получают, является пустой страницей. получайте удовольствие :)

PS: Если вы хотите быть умным и не позволять себе повторять код, создайте PHP-файл под названием «functions.php» (или что-то похожее на то, что вам нравится). Затем, внутри functions.php создать функцию, называемую «requireLogin()»

function requireLogin(){ 
    if(!isset($_SESSION['loggedin'] || $_SESSION['loggedin'] !== true){ 
     header('Location: http://www.foo.com/login.php'); 
     exit(); <-- THIS IS VERY IMPORTANT 
    } 
} 

Теперь на каждой странице, которую вы хотите защитить, сделать это БУМ страница

session_start(); 
require('functions.php'); 
reuireLogin(); 

защищен, и начало ваших страниц выглядит намного чище.

+0

Я знаком с этим вариантом, однако моя проблема связана с файлами/документами в другой папке или в таких папках: www.mywebsite.com/ page/yourdocument.pdf. В этом случае файлы по-прежнему доступны для просмотра пользователям, набрав URL-адрес напрямую. – user3597763

+0

В этом случае замените фактический PDF файл PHP. файл php будет проверять, вошли ли они в систему. Если они есть, файл PHP отправит им PDF-файл. Хитрость заключается в том, чтобы поместить PDF OUTSIDE из webroot. Поэтому найдите папку WWW и поместите файл PDF в папку WWW. Где-то вроде/var/hiddendocs –

0

Я уверен, что существует множество решений этой проблемы. Наиболее часто я делаю это:

  1. Храните статические файлы за пределами открытого каталога папок сайта, поэтому пользователь не может просто перейти к этому URL-адресу.
  2. Напишите страницу с php, целью которой является страница «загрузка». Эта страница будет проверять сеанс, как на других php-страницах, и будет читать файл из того места, где он хранится за пределами корня веб-сайта.

Должно быть множество примеров того, как отправить файл в браузер с php, поэтому я не буду вдаваться в это здесь, но вы должны знать, что существуют определенные риски безопасности, которые необходимо смягчить для убедитесь, что пользователь загружает только файлы, к которым вы хотите иметь доступ.

Смежные вопросы