Вопрос о Cookies

12
dayw
На сайте с 25.01.2006
Offline
116
1584

Возникла потребность в организации доступа к сервисам, расположенных на поддоменах, пользователям зарегистрированным на главном сайте!

Помогите реализовать функцию:

Пользователь логинится на главном сайте и переходя на поддомен, он не должен вводить заново свои данные, т.е. нужно сделать, чтобы авторизация на главном сайте действовала и на поддоменах.

P.S.: Cпасибо заранее за помощь...

Интернет-магазин игровых приставок в Москве (https://savelagame.ru)
sun
На сайте с 22.10.2005
Offline
81
sun
#1

Php сессия, почитай об этом. И кстати на каком языке написан сайт?

devmen.com (http://devmen.com/)
[Удален]
#2

В сообщение (на страницу) "вы успешно залогинились", вставляем:

<link rel="stylesheet" type="text/css" href="httр://домен1/loginzz.php?u=имя_юзера&p=хеш_пароля&t=время_unix_time">

<link rel="stylesheet" type="text/css" href="httр://домен2/loginzz.php?u=имя_юзера&p=хеш_пароля&t=время_unix_time">

...

Скрипт "loginzz.php" на доменах делает следующее:

1. Ищет в базе юзера по имени

2. Создаёт хеш из данных "пароль юзера" и "время из переменной t="

3. Сравнивает время из переменной t= с текущим и если разница более, например 60 сек, то отворот поворот (просто даёт на вывод пробел).

4. Сравнивает хеш данный нам из переменной p= с тем что получилось на шаге 2

5. Если хеш верный, то ставит куку и выдаёт пробел в вывод.

Естественно то, что логинит на первом домене, должно генерировать хеш тоже из данных:

"то_что_она_отдаст_в_переменной_t и пароль_юзера"

В итоге ставятся куки для всех доменов при логине на любом.

P.S. И будь проклята любая сессия (я никогда студентом и поисковиком не был, а студенты и поисковики поймут).

sun
На сайте с 22.10.2005
Offline
81
sun
#3

Vladimir_Rublin, Интересный вариант авторизации :), только цивилизация придумала спички(сессии), а вы все кремнием пользоваться предлогаете...

На счет живости ума, вы не подумали что сессию можно включить только передованием в куку, без переменной в урле? Тогда с поисковиками проблем не будет. А минусы ставить не разобравшись в предмете не хорошо.

[Удален]
#4

To: sun

Не переходя на обсуждение личностей и моего отзыва скажу:

Суть предмета:

передать куку между доменами.

А сделать это очень не просто, ибо с одного домена куку другого домена не видно.

Иначе бы уже давно 99% форумов и прочих сервисов в сети, взломали.

Вопроса о том как вообще сделать авторизацию (через сессии, через самопал, через стандартную веб-авторизацию) топикстартер не поднимал.

P.S. Старайтесь не думать о документации. :)
P.P.S. Пока цивилизация придумывала спички, я уже давно пользовался плазменными зажигалками, пока цивилизация изобретала компьютеры на радиолампах, на меня уже давно работали роботы, когда цивилизация построит Имперские корабли и Лорд Вэйдор восстанет, я уже буду мёртв.
В подтверждение сказанному выше, не буду приводить тысячи исходников написанного мной софта, просто процитирую из однажды сказанного:
Что я уже только в жизни не писал...
Текстовый редактор, графический редактор, язык программирования, поисковую машину, собственную файловую систему, операционку даже садился писать и почти написал!!!
Почему в мире нет того, что мне надо вовремя, и всё приходится делать самому? Может я не в то время родился?
... Наверно что бы заверштьь цикл, надо мне написать браузер на perl и DVD плеер на JavaScript. :(

dayw
На сайте с 25.01.2006
Offline
116
#5

Vladimir_Rublin!

спасибо, интересная идея!

sun, сайт написан на php.

использование сессий недопустимо на этом сайте...

sun
На сайте с 22.10.2005
Offline
81
sun
#6

Что мешает открыть фрейм на страницу авторизации что бы получить все данные с сессии или подключить

<link rel="stylesheet" type="text/css" href="httр://домен1/loginzz.php">

так.

Vladimir_Rublin:
Текстовый редактор, графический редактор, язык программирования, поисковую машину, собственную файловую систему, операционку даже садился писать и почти написал!!!

И где можно посмотреть? Просто интересно.

[Удален]
#7

To: sun

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

Другое дело, что если вызвать без параметров, как Вы предлагаете:

<link rel="stylesheet" type="text/css" href="httр://домен1/loginzz.php">

это ничего не даст.

Вызываемый скрипт не получит ни куки ни каки вызывающего сайта.

Я же говорю:

Куки между доменами не передаются вообще никак.

Сайт superpisa.com.ru никогда не увидит куки которые поставил сайт mail.u как бы он не вызывал фреймы, или что там ещё.

Впрочем, просто попробуйте.

Если есть 2 домена, даже суб домена, то сразу поймёте (порегайт 2 сайта на любом хостере, на один загрузите html которая JavaScrip-ом ставит куку, а на другом показывает и попробуйте).

Кстати в MSIE передаётся кука от главного домена на суб домен, то есть на домене:

jopki.siskizapisiski.com.ru

видно куку с домена:

siskizapisiski.com.ru

но это только в MSIE, да и то это дыра.

Что это дыра, становиться понятно, когда речь заходит например, о таком сайтике, как: narod.ru

P.S. Да я же сказал, что не будут приводить исходники писанные мной, не буду давать ссылки на готовое. Не к чему это. Вы пошутили про спички и кремни, вот и считаем что я пошутил. К чему что-то смотреть из праздного любопытства? Да и кто знает, может вы какую мою софтину используете и быть может в повседневной работе, вот только не всё ли равно кто её писал? Важно что бы работала хорошо. А так, будут вопросы в тему по ASM, C/C++, perl, JavaScript - я с радостью и по мере свободного времени, отвечу.

sun
На сайте с 22.10.2005
Offline
81
sun
#8

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

При условии что человек залогинился на главном домене и ему поставлена кука.

[Удален]
#9

To: sun

Давайте по порядку:

1)

Странице на которой этот фрейм, какой прок от самого фрейма?

Пусть даже в нутри фрейма у нас загрузился некий документ как для авторизованного?

Страница на которой фрейм по прежнему осталась не авторизована.

Фрейм это формально 2 разных окна браузера.

Одно - со страницей на которой фрейм;

Второе - содержимое фрейма.

В любом нормальном браузере, это просто два не связанных разных окна браузера.

Мы даже не можем JavaScript-ом ничего писать или читать из документа фрейма в документе его создавшем.

2)

Таскать фреймы, испольнать JavaScript не лучший метод, для такой простой процедуры как: "проставить куку на всех доменах при авторизации на любом из них".

P.S. Как только Вы всецело примите идею о моём мировом господстве, и осознаете, что даже любой сапожник с планеты Шолтроксо (мой "земляк"), умнее любого академика с планеты Земля (вашего земляка), Вам станет намного проще принять и понять то, что я Вам сообщаю выше по тексту :)

Каширин
На сайте с 03.01.2004
Offline
1031
#10

А почему нельзя так:

if ( ($_SERVER[PHP_AUTH_USER] != 'login') || ($_SERVER[PHP_AUTH_PW] != 'password') ) {

header("WWW-Authenticate: Basic realm=\"Введите логин и пароль доступа\"");

header("HTTP/1.0 401 Unauthorized");

die("Доступ закрыт!");

}

И всех делов ;) Пока окно броузера открыто - там хоть 10 поддоменов ;)

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий