[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Доступ к сайту с определённого домена
akva
Доброго времени суток!
Прошу помочь, тк я не сильна в php...

Как реализовать на php, чтобы сайт открывался
только при переходе с определённого домена,
а во всех остальных обращениях с сайту он был недоступен?

Собственно задача заключается в том, чтобы несколько
сайтов были доступны пользователям только после авторизации на Главном сайте.
Вопрос с авторизацией и общей БД, более менее решён.
Просто не знаю, что придумать... ведь все сайты доступны из Инета.
Как сделать их недоступными... чтобы они ожили только после авторизации?

Я нашла только Заптрет доступа с определённого домена:

    <?php
if( strpos( $_SERVER['HTTP_REFERER'], 'ПЛОХОЙ_ДОМЕН.com' ) !== FALSE){
header('Location: http://ВАШ_АДРЕС');
exit();
}
?>


Проверила, всё работает, только вот
если бы всё наоборот...
Catzilla
if(strpos($_SERVER['HTTP_REFERER'], 'ХОРОШИЙ_ДОМЕН.com') === false){
exit("Вам запрещено просматривать сайт");
}

Но следует учесть, что реферер передается клиентом.
Следовательно, может быть легко подделан.
Кроме того, браузер может быть настроен так, что бы его не передавать.

В вашем же случае, гораздо более правильным вариантом будет использовать куки.
При авторизации записываем куку с сессией для всех доменов, а в скриптах - её проверяем.
FatCat
Цитата (akva @ 27.12.2014 - 16:27)
Собственно задача заключается в том, чтобы несколько
сайтов были доступны пользователям только после авторизации на Главном сайте.

Тогда $_SERVER['HTTP_REFERER'] не годится. Во-первых, при переходе с "главного" на вторичный в нем будет адрес главного, но при переходе на другую страницу вторичного сайта там что будет?
Во-вторых, $_SERVER['HTTP_REFERER'] ничего не говорит о том, авторизовался ли посетитель на "главном" сайте или просто проскользнул по нему.


Проще всего сделать регистрацию на "главном" и единую авторизацию.

Можно хранить на главном связку авторизации с айпишником, а на вторичных сайта спрашивать у главного - но это очень плохая практика, с одного айпишника может быть не один посетитель.
Можно проверять по $_SERVER['HTTP_REFERER'] при первом запросе, проверять на главном, и если всё хорошо, дальше вести по куке или в сессии.


Цитата (Catzilla @ 27.12.2014 - 16:57)
При авторизации записываем куку с сессией для всех доменов

На одном домене можно записать куку для другого домена?

_____________
Бесплатному сыру в дырки не заглядывают...
Catzilla
Цитата (FatCat @ 27.12.2014 - 18:02)
На одном домене можно записать куку для другого домена?

Нельзя конечно, но для этого обычно делается ряд редиректов)
По такому принципу, например, построена авторизация в гугле - после ввода пароля пользователя по очереди кидает на все домены сервиса (google.ru, youtube.com, и т.д.), которые и ставят необходимые куки.

Что бы не делать лишних редиректов, можно например на всех сайтах разместить по кнопке "войти через %имя главного%". Пользователь жмет на кнопку, попадает по адресу:
http://главный_сайт.рф/login.php?to=второстепенный_сайт.рф
Здесь ему показывается форма авторизации, если он еще не залогинен.
После авторизации (или если она уже была выполнена) его кидает назад:
http://второстепенный_сайт.рф/enter.php?session=...
уже в этом скрипте и ставится кука.
Zzepish
FatCat
Цитата
На одном домене можно записать куку для другого домена?

Написать свой браузер(или взломать текущий)- и можно передавать что угодно, куда угодно
Guest
Вот нашла решение... всё оказалось очень просто.

Для сайтов я использую движок DataLife Engine.
Как оказалось в нём имеется возможность произвольно
указывать "USERPREFIX"

Единая регистрация и авторизация на нескольких сайтах
http://dle-news.ru/tips/152-edinaja_regist...h_sajjtakh.html

Сделав всё как описано (см ссылку) в админке "дополнительных"
сайтов указываю отключить сайт, предварительно разрешив
пользователям просмотр отключенного сайта.

Как вы понимаете, при вводе адреса этих сайтов отображается
заглушка, там можно написать всё что угодно...

Но после авторизации на Главном сайте, все они становятся
доступны для просмотра.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.