Просмотр полной версии : Ограничить доступ
Вобщем есть у меня ресурс http://ace-x.ru/, как сделать так, чтобы пользователь пришедший на сайт не мог просматривать диры если он не прошел авторизацию ( не залогинен ) а то толку с авторизации никакой, така как она под конец только редиректит на суб домен с контентом на который и без авторизации можно зайти.
помоему это можно реализовать средствами .htaccess но как именно понятия не имею.
http://omsk777.ru/all.php?act=htaccess
тут подробно описано все
там не то, там просто разрешить или запретить доступ, а мне нужно чтобы только залогиненых пускал, а осальных с пляжу.
В-третьих, файлом .htaccess Вы сможете создать "закрытую зону", в которую можно попасть используя пароль и логин. Например, папка для служебного пользования или администрирования. В этом случае, заведем на сервере дополнительную папку, назовем ее passwd (http://ваш_сайт.ru/passwd/). Создадим в ней временный файл test.php, из которого мы узнаем полный путь до этой папки на сервере, записав в него такие строки:
<?php
$path = getcwd ();
$path = str_replace ('\\', '/', $path);
echo $path;
?>
При запуске test.php (http://ваш_сайт.ru/passwd/test.php) узнаем
полный_путь_до_passwd_на_серве е
После этого, запишем в passwd файл .htpasswd с данными логина и пароля через ":", выглядеть .htpasswd будет так:
login:password
Так будет выглядеть Ваш файл с парой "логин:пароль" в Windows, то есть просто записали в файл с паролями Ваши пароль и логин, и больше ничего не надо. Но на системах Linux его надо зашифровать. То есть, как появляется в базе новый пользователь с парой "логин:пароль" на системах Unix? Там администратор вводит в командную строку: htpasswd -nb userfiile login password. После этого, в файле userfiile появляется пользователь с именем Login и зашифрованным паролем типа d8bny9xqDGvHc. Он появляется после автоматической шифрацией его сервером Apache. Тогда строка login:password в .htpasswd:
login:d8bny9xqDGvHc
При авторизации сервер поймет, что это пользователь login с паролем password. То есть, покажем как шифруется пароль сервером Apache:
<?php
$password = "ваш_пароль";
$path_t = substr ( md5 ( uniqid ($password)), 0, 3). "-56";
$password = crypt ($password, $path_t);
?>
На выходе такого скрипта и получим такой зашифрованный пароль, какой должен быть при работе самого сервера Apache. Закроем папку passwd для просмотра другими пользователями, как это сделать, мы рассмотрели в первом случае использования .htaccess, то есть запишем его в папку passwd со словами:
Options -Indexes
deny from all
Проверим запускается ли теперь наш файл test.php. Вы увидите, что не запускается, но нам он уже больше не нужен. Итак, мы создали папку passwd, узнали полный путь до нее, создали в ней файл с Вашими логин и паролем, плюс закрыли ее для просмотра другими пользователями.
Теперь создадим приватную папку, например privat (http://ваш_сайт.ru/privat/), в которую можно будет попасть, только, зная Ваш логин и пароль. Создаем в ней приватный файл privat.php (http://ваш_сайт.ru/privat/privat.php), например, для админских функций. И, наконец, записываем в нее .htaccess со следующими строками:
AuthType basic
AuthName 'Authorization...'
AuthUserFile 'полный_путь_до_passwd_на_серве ре/.htpasswd'
Require valid-user
DirectoryIndex privat.php
Что мы прописали в файле .htaccess в этот раз:
Первая строка - тип аутентификации
Вторая строка - что будет написано в диалоговом меню
Третья строка - откуда берем логин и пароль, полный путь до passwd мы ранее узнали.
Четвертая строка - для всех у кого совпали логин и пароль продолжить не отвергая
Пятая строка - при удачной авторизации переправляем пользователя на файл privat.php
Что в итоге, у нас получилось:папка: passwd ..
.htpasswd
login:d8bny9xqDGvHc
.htaccess
Options -Indexes
deny from all
папка: privat ..
privat.php Ваш недоступный скрипт
.htaccess
AuthType basic
AuthName 'Authorization...'
AuthUserFile 'полный_путь_до_passwd_на_серве ре/.htpasswd'
Require valid-user
DirectoryIndex privat.php
Теперь, чтобы пользователь попал на файл privat.php, ему надо пройти аутентификацию, иначе сервер выдаст ошибку.
Посмотреть как это выглядит можно здесь. Логин - pass, пароль - pass.
Попробуйте другие пароли и логины, Вы увидите, что к файлу privat.php доступа у Вас не будет. Кроме этого, после того как Вы авторизированы, больше пароль запрашиваться не будет.
а это что тогда ?
~NeiTRoN~
30.07.2008, 20:44
Вобщем есть у меня ресурс http://ace-x.ru/, как сделать так, чтобы пользователь пришедший на сайт не мог просматривать диры если он не прошел авторизацию ( не залогинен ) а то толку с авторизации никакой, така как она под конец только редиректит на суб домен с контентом на который и без авторизации можно зайти.
помоему это можно реализовать средствами .htaccess но как именно понятия не имею.
А чем тебе авторизация не устраивает. Пользователь авторизируется, потом забиваешь сессии и в скрипты которые тебе надо ограничить вставляешь
if ( !isset ( $_SESSION[]) || ($_SESSION[]=='' ))
И если он не авторизован он выдаст то что ты укажешь
а если там html страницы , картинки , архивы ? куда в них впихнеш сессии ?
~NeiTRoN~
30.07.2008, 20:51
а если там html страницы , картинки , архивы ? куда в них впихнеш сессии ?
Ну да это сесиями не прикроешь=)
BlackSun
30.07.2008, 23:55
http://main.ace-x.ru/bakup/
Warning: require_once(E:\Server\AppServ\www\vhosts\ace-x.ru\public_html\main\plugins\function.checkAction sTpl.php) [function.require-once]: failed to open stream: No such file or directory in E:\Server\AppServ\www\vhosts\ace-x.ru\public_html\main\bakup\templates_c\c_579e98f5 3082b116e5b9e3c671152f7f.php on line 1
Fatal error: require_once() [function.require]: Failed opening required 'E:\Server\AppServ\www\vhosts\ace-x.ru\public_html\main\plugins\function.checkAction sTpl.php' (include_path='.') in E:\Server\AppServ\www\vhosts\ace-x.ru\public_html\main\bakup\templates_c\c_579e98f5 3082b116e5b9e3c671152f7f.php on line 1
если для ТС basic-авторизация неприемлима, то поможет mod_rewrite: указав доступные только для зарегистрированных пользователей директории таким образом, что бы сперва запрос отправлялся на обработку php-скрипту, который в соответствии с сессией будет принимать решение.
http://main.ace-x.ru/bakup/
и что?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot