Псевдо-защита разделов сайта

Panchous

Павел
Псевдо-защита разделов сайта

Признаюсь сразу, что вопрос довольно странный...
Итак:
- на сайте имеется несколько разделов.
- есть несколько типов пользователей (любой\известный).
Необходимо скрыть некоторые разделы для обычных пользователей и делать доступными для известных.
НО!
Не желательно использовать систему паролей или что-либо,
что требует администрирования.
Уровень защиты совсем не критичен!
т.е. если кто-нибудь из обычных пользователей попадет в дополнительные разделы - ничего страшного не произойдет.
Дело в том, что обычному пользователю не нужны многие из специальных сервисов, которые хотелось бы от него скрыть...
Какие варианты имеются?
------
PS:
что-то вроде того:
если все пользователи спец. раздела с одного предприятия
(известно какого), узнавать их по какому-нибудь признаку
 

Panchous

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

SiMM

Новичок
Re: Псевдо-защита разделов сайта

Автор оригинала: Panchous
что-то вроде того:
если все пользователи спец. раздела с одного предприятия
(известно какого), узнавать их по какому-нибудь признаку
Если пользователи этого одного предприятия имеют выделенный внешний IP-адрес, то почему бы не воспользоваться им? Где его взять, можно подсмотреть в [m]phpinfo[/m](INFO_VARIABLES)
 

asm

Пофигист
Так и в чем проблемма?
Как их распознать?
по IP например
 

Frol

Новичок
Panchous
это ты нас спрашиваешь как различить ТВОИХ клиентов, о которых мы НИЧЕГО не знаем?
 

specialist

Guest
Автор оригинала: Panchous
различать надо не отдельного пользователя, а некоторую группу:
типа все с домена .ru
ну а если просто брать IP посетителя и резолвить его в доменное имя..а потом уже "смотреть", какой оно зоне принадлежит?.....
 

graciano

Guest
а каковы критерии, по которым ты их будешь различать?
Вообще принципиально тут можно сделать так:
1) по IP-адресу можно разрешить/запретить доступ с определенного провайдера, города, страны - копай в сторону geoip
2) вариант предыдущего метода - получить имя хоста
PHP:
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
а затем парсить его,
3) я хочу сделать такое у себя. Сайт на англицском, для буржуинов. Анализируется HTTP_USER_AGENT: если он содержит "ru", то (дополнительно к прочему контенту) показывается российский флаг и надпись "russian version".
4) анализировать, откуда пришел посетитель. (реферер).
5) На заглавной странице предлагаешь юзеру какой-нибудь опрос, или подписаться на рассылку, либо совершить еще какое-либо действие, чтобы поставить ему куку и считать адвансед юзером. А обычным юзерам кука не ставится. При дальнейших перемещениях по сайту проверяется наличие этой куки.
Других способов, наверное, нет.
 

SiMM

Новичок
Автор оригинала: graciano
1) по IP-адресу можно разрешить/запретить доступ с определенного провайдера, города, страны - копай в сторону geoip
Интересно, зачем ему такие сложности, если его клиентов и так вполне можно узнать, в смысле, я так полагаю, их не так много, чтобы забить базу руками.
2) вариант предыдущего метода - получить имя хоста
PHP:
$host=gethostbyaddr($_SERVER['REMOTE_ADDR']);
Тоже мне, прицепились. Ну и что вы этим получить-то хотите? Ну вот у меня, к примеру, 212.44.93.106.satgate.net - и что? При этом я могу находиться в любой точке мира и быть кем угодно - никакой полезности от этого практически нет - результат - тот же, что и для просто $_SERVER['REMOTE_ADDR']
3) я хочу сделать такое у себя. Сайт на англицском, для буржуинов. Анализируется HTTP_USER_AGENT: если он содержит "ru", то (дополнительно к прочему контенту) показывается российский флаг и надпись "russian version".
Opera/7.50 (Windows NT 5.1; U) [en] - по твоему, у меня стоит английская локаль винды? Такой способ ничем не лучше случайного вывода флажка - только гораздо разумнее выводить его всегда.
4) анализировать, откуда пришел посетитель. (реферер).
Это ещё зачем в его задаче?
5) На заглавной странице предлагаешь юзеру какой-нибудь опрос, или подписаться на рассылку, либо совершить еще какое-либо действие, чтобы поставить ему куку и считать адвансед юзером. А обычным юзерам кука не ставится. При дальнейших перемещениях по сайту проверяется наличие этой куки.
Что-ж вы сразу авторизацию не предложите?
 

graciano

Guest
Originally posted by SiMM
Интересно, зачем ему такие сложности, если его клиентов и так вполне можно узнать, в смысле, я так полагаю, их не так много, чтобы забить базу руками.
не спорю, может быть и сложно, но ИМХО зачем делать ручками то, что может сделать скрипт? Даже если клиентов не очень много. Хотя "много" - понятие относительное.
Тоже мне, прицепились. Ну и что вы этим получить-то хотите? Ну вот у меня, к примеру, 212.44.93.106.satgate.net - и что? При этом я могу находиться в любой точке мира и быть кем угодно - никакой полезности от этого практически нет - результат - тот же, что и для просто $_SERVER['REMOTE_ADDR']
я честно написал, что это вариант, разновидность предыдущего. А полезно это может быть вот чем. Если мы хотим вычислить юзеров, пользующимся определенным провайдером, что лучше - хранить в базе диапазон IP-адресов (и реализовывать алгоритм проверки IPа на вхождение в этот диапазон) или одно имя хоста (для проверки достаточно одной функции strpos)?
Opera/7.50 (Windows NT 5.1; U) [en] - по твоему, у меня стоит английская локаль винды?
а разве по HTTP_USER_AGENT можно определить, русская стоит винда или английская? Поделись опытом плиз. :) Я почему-то всегда был уверен, что по HTTP-заголовкам можно узнать только язык(и), поддерживаемые браузером, но никак не локаль винды.
Такой способ ничем не лучше случайного вывода флажка - только гораздо разумнее выводить его всегда.
нет, не разумнее. Специфика сайта (электронная коммерция) такова, что я вынужден скрывать от буржуев тот факт, что я русский. :mad: Иначе я рискую остаться без клиентов. Следовательно, предже чем показать русский флаг, я должен быть на 200% уверен, что посетитель русский. И самый простой способ убедиться в этом - это поискать в HTTP_USER_AGENT подстроку "ru". А если ты пользуешься английской Оперой и не увидишь флажка - ничего страшного, значит, ты дружишь с английским и так разберешься. Дешево и сердито, но на первое время достаточно. Придет время - перейду на другой тариф у хостера и запущу geoip.
Это ещё зачем в его задаче?
это всего лишь еще один параметр, по которому можно дифференцировать посетителей. А нужно ли это в его задаче и может ли быть ему полезно - я полагаю, лучше спросить его самого. Panchous, ау!
Что-ж вы сразу авторизацию не предложите?
это проще реализовать, чем авторизацию.

-~{}~ 29.11.04 11:27:

Прокосячил.
Поправлюсь:
Нужно проверять наличие фрагмента "ru" в любой из переменных $_SERVER['HTTP_USER_AGENT'] или $_SERVER['HTTP_ACCEPT_LANGUAGE'].
А не только в $_SERVER['HTTP_USER_AGENT'].
 

SiMM

Новичок
Автор оригинала: graciano
не спорю, может быть и сложно, но ИМХО зачем делать ручками то, что может сделать скрипт? Даже если клиентов не очень много. Хотя "много" - понятие относительное.
ЧТО сделает скрипт?
А полезно это может быть вот чем. Если мы хотим вычислить юзеров
Давайте без если - прочитайте ТЗ - никому не нужны юзвери конкретного провайдера - нужны конкретные юзвери (не все юзвери одинаково полезны)
а разве по HTTP_USER_AGENT можно определить, русская стоит винда или английская? Поделись опытом плиз. :) Я почему-то всегда был уверен, что по HTTP-заголовкам можно узнать только язык(и), поддерживаемые браузером, но никак не локаль винды.
А разве опера не поддерживает русский язык? Или есть какая-то специальная русская опера, которая указывает в заголовках [ru]? И вообще, какое это имеет отношение к первоначальному вопросу?
Специфика сайта (электронная коммерция) такова, что я вынужден скрывать от буржуев тот факт, что я русский.
В таком случае дешевле скрывать это даже от русских. Вернее, ваш способ ничем не лучше скрывания этого от русских - потому что я - русский, однако на ваш взгляд по IP'у получаюсь жителем Швеции.
Иначе я рискую остаться без клиентов.
Без русских - вы уже остаётесь. Не совсем, конечно, но процент есть.
И самый простой способ убедиться в этом - это поискать в HTTP_USER_AGENT подстроку "ru".
Кто вам сказал, что она там будет? ;) Заголовки эти необязательны, не говоря о том, что поисковики их наверняка не посылают ;)
А если ты пользуешься английской Оперой и не увидишь флажка - ничего страшного, значит, ты дружишь с английским и так разберешься.
Ошибка вышла - не дружу, а русской оперы - не бывает.
Придет время - перейду на другой тариф у хостера и запущу geoip.
"Выудить" русских он вам не поможет.
 

graciano

Guest
2 SiMM
ЧТО сделает скрипт?
Давайте без если - прочитайте ТЗ - никому не нужны юзвери конкретного провайдера - нужны конкретные юзвери (не все юзвери одинаково полезны)
а как мы узнаем, что этот юзверь-конкретный, а тот-нет? У нас есть только один способ - это анализ HTTP-заголовков. Все, что мы сможем из них выудить полезного: IP-адрес, наличие куки, откуда пришел, юзер-агент, ну еще там по мелочам - то наше.
И вывод о том, полезен юзверь или нет, нам придется делать только на основе этих заголовков.
Хотя нет, вру, есть и другие способы - написать трояна на JavaScript'e. Но это будет оффтопик.:)
А разве опера не поддерживает русский язык? Или есть какая-то специальная русская опера, которая указывает в заголовках [ru]?
а русской оперы - не бывает.
я юзаю русифицированную версию Оперы 7.54, которая отдает вот такой юзер-агент:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) Opera 7.54 [ru]
И вообще, какое это имеет отношение к первоначальному вопросу?
передо мной стоит (почти) аналогичная задача. И я вынес на суд форумлян свой вариант ее решения.
Кто вам сказал, что она там будет? ;) Заголовки эти необязательны, не говоря о том, что поисковики их наверняка не посылают;)
я так сказал. посмотрев логи.
В таком случае дешевле скрывать это даже от русских. Вернее, ваш способ ничем не лучше скрывания этого от русских - потому что я - русский, однако на ваш взгляд по IP'у получаюсь жителем Швеции.
Без русских - вы уже остаётесь. Не совсем, конечно, но процент есть.
Для русских предназначен особый раздел - www.mysite.com/rus/ . И реклама этого раздела будет ограниченной - на некоторых форумах и через САРы. Основной упор предполагается сделать все-таки на буржуев. Юзеры, попавшие на сайт с русского раздела, будут осведомлены о том, что на главной странице им делать в общем-то нечего. А если "русский", попав на главную страницу не с русского раздела и увидев флажок (хочу сделать его крупным и повесить на видном месте), не кликнет на него - то это его проблемы. Не хочет - и не надо.
 

SiMM

Новичок
Я бы на вашем месте купил два домена (mysite.com и mysite.ru) и не парился, отдавая com'овским посетителям английский контент, а ru'шным - русский - по анализу заголовков конкретного юзверя вы никогда не узнаете.
И вообще - сделали бы свою тему - поскольку, имхо, ваша задача отлична от первоисходной.
 

graciano

Guest
"Выудить" русских он вам не поможет.
согласен. надобно будет крепко подумать, стоит ли связываться с geoip'om.

-~{}~ 29.11.04 15:39:

Originally posted by SiMM
Я бы на вашем месте купил два домена (mysite.com и mysite.ru) и не парился, отдавая com'овским посетителям английский контент, а ru'шным - русский
жаба давит $19 за домен RU отдавать.
по анализу заголовков конкретного юзверя вы никогда не узнаете
иногда смогу узнать. если предварительно удалось поставить ему куку.
И вообще - сделали бы свою тему - поскольку, имхо, ваша задача отлична от первоисходной.
да, в принципе, уже поздно. мою задачу уже обсудили. Учту на будущее.
 

SiMM

Новичок
Автор оригинала: graciano
жаба давит $19 за домен RU отдавать.
И этот человек рассказывает мне о том, как дорожит иностранными клиентами? ;)
иногда смогу узнать. если предварительно удалось поставить ему куку.
Для этого ещё нужно узнать, какую куку ему ставить ;)
PS: не сдержался ;)
 

Dor

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

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

SiMM

Новичок
Нет никаких пользователей с домена ру - у провайдера вообще может быть просто внешний IP-адрес, и никакого доменного имени к нему при этом может быть не привязано, что вы к домену прицепились - это вообще не показатель (212.44.93.106.satgate.net - ну и что это? - а между тем - я житель России ;) )
 

4m@t!c

Александр
Может, я скажу глупость, но я на своем сайте сделал так.
У меня есть переменная, которая хранит ранг(уровень доступа к странице). У каждого юзера в БД есть помимо прочих полей - поле ранга. Когда юзер логинится. я прописываю куку-ранг и когда выдаю страницы - считываю куку и выдаю содержимое согласно рангу...
 
Сверху