Откуда пришел пользователь? Отслеживание внутри сайта. @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 19 ] 
*   Список форумов / Начинка и техника / Программирование для WWW » ответить » создать топик « | »
Автор Сообщение
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Заголовок сообщения: Откуда пришел пользователь? Отслеживание внутри сайта.
Сообщение Добавлено: 18 Сентябрь 2004, 18:49:52 
У меня есть три страницы:
Страница 1
Страница 2
Страница 3

Мне нужно точно знать, что:
на Страницу 2 - можно попасть только со Страницы 1
на Страницу 3 - можно попасть только со Страницы 2


Я думаю использовать такой метод:

Когда юзер приходит на Страницу 1, в базу данных записывается - "1"
Когда юзер приходит на Страницу 2 - проходит сверка с БД (если там значение "1")
Когда юзер приходит на Страницу 3 - проходит сверка с БД (если там значение "2")


Практически: все это будет на PHP+MySQL
И у меня вопрос насчет надежности и защиты: есть ли тут какие подводные камни?

Ведь я не пересылаю никаких переменных путем (GET и POST).
И не использую метод $HTTP_REFERER - который, как я слышал, можно подделать.
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 18 Сентябрь 2004, 20:59:41 
AlexShop, начинать нужно с другого: какую именно бизнес-задачу ты решаешь таким странным способом?

_________________
We've got the big memory and the small memory. The small memory's to remember the small things and the big memory's to forget the big ones.
Art-dir
соучастник
0
Сообщения: 446
Зарегистрирован: 05.07.04
Откуда: .msk.ru
Заголовок сообщения: Re: Откуда пришел пользователь? Отслеживание внутри сайта.
Сообщение Добавлено: 19 Сентябрь 2004, 11:08:36 

AlexShop писал(а):
И не использую метод $HTTP_REFERER - который, как я слышал, можно подделать.



а кому оно здесь надо, это подделывание?

более того, мало кто вообще догадается, что ты там внутри что-то отслеживаешь.

_________________
Когда предлагают варианты эскизов, я беру тот, который мне рекомендуют сами дизайнеры,
а не тот, который нравится мне.

О. Антонов (авиаконструктор)
Чебурген
соучастник
3
Сообщения: 315
Зарегистрирован: 29.08.04
Сообщение Добавлено: 19 Сентябрь 2004, 12:15:19 
AlexShop, записывать в базу циферки - это, конечно хорошо. Но как ты собрался отличать, для какого юзера ты ее пишешь?

Art-dir, считай, что дизайнеры тебе сказали - им надо. Не можешь понять - посиди послушай, что люди скажут.
Art-dir
соучастник
0
Сообщения: 446
Зарегистрирован: 05.07.04
Откуда: .msk.ru
Сообщение Добавлено: 19 Сентябрь 2004, 14:29:05 
Чебурген, считай, что раз дизайнеры сказали, то пускай и сами делают. :cool:
к тому же, вопросы программирования и безопасности дизайнеров волновать не должны.

_________________
Когда предлагают варианты эскизов, я беру тот, который мне рекомендуют сами дизайнеры,
а не тот, который нравится мне.

О. Антонов (авиаконструктор)
Чебурген
соучастник
3
Сообщения: 315
Зарегистрирован: 29.08.04
Сообщение Добавлено: 19 Сентябрь 2004, 14:44:28 
Так и хорошо - пусть делают.
Я не пойму - ты-то чего этим вопросом озаботился?
Тебя, что ли, делать заставляют?
Art-dir
соучастник
0
Сообщения: 446
Зарегистрирован: 05.07.04
Откуда: .msk.ru
Сообщение Добавлено: 19 Сентябрь 2004, 15:22:47 
Чебурген, я человеку немного помогаю.
А вот чем я тебе не угодил, я не понимаю.

_________________
Когда предлагают варианты эскизов, я беру тот, который мне рекомендуют сами дизайнеры,
а не тот, который нравится мне.

О. Антонов (авиаконструктор)
Чебурген
соучастник
3
Сообщения: 315
Зарегистрирован: 29.08.04
Сообщение Добавлено: 19 Сентябрь 2004, 17:30:22 
Это не помощь, а вредительство.
Именно этим и не угодил.
Реферер ему даром не сдался. И человек совершенно правильно от него отказывается. Зачем ему нужен помощник, который знает еще меньше, чем он сам?
Не знаешь нормальных методов - помолчи, послушай.
Дождись ответа на вопрос Crazy.
Art-dir
соучастник
0
Сообщения: 446
Зарегистрирован: 05.07.04
Откуда: .msk.ru
Сообщение Добавлено: 19 Сентябрь 2004, 17:46:05 
Чебурген, что помошь, а что вредительство — не тебе судить.

затыкать рот ты другим будешь.

_________________
Когда предлагают варианты эскизов, я беру тот, который мне рекомендуют сами дизайнеры,
а не тот, который нравится мне.

О. Антонов (авиаконструктор)
triptyl Муж.
новый человек
0
Сообщения: 88
Зарегистрирован: 11.05.04
Сообщение Добавлено: 20 Сентябрь 2004, 10:07:45 
а зачем на каждой странице писать в базу, потом выдирать? есть же сессии :)

на странице 1

Код:
<?php
   session_start ();
   $_SESSION [ "referer" ] = 1;
?>


на странице 2

Код:
<?php
   session_start ();
   if ( ( !isset ( $_SESSION [ "referer" ] ) ) || ( $_SESSION [ "referer" ] != 1 ) ):
      header ( "Location: http://страница1");
      die;
   else:
      $_SESSION [ "referer" ] = 2;
   endif;
?>


на странице 3

Код:
<?php
   session_start ();
   if ( ( !isset ( $_SESSION [ "referer" ] ) ) || ( $_SESSION [ "referer" ] != 2 ) ):
      header ( "Location: http://страница2");
      die;
   else:
      $_SESSION [ "referer" ] = 3;
   endif;
?>


кажется, так.

_________________
все приборы врут, все, кто с нами, умрут, кольцевые дороги никуда не ведут
Чебурген
соучастник
3
Сообщения: 315
Зарегистрирован: 29.08.04
Сообщение Добавлено: 20 Сентябрь 2004, 10:11:35 
triptyl, код правильный, а постановка вопроса - неверная.
Перед тем, как отвечать на вопрос "зачем писать в базу", надо ответить на вопрос "что писать в базу".
А перед тем, как писать готовый код, сначала лучше узнать - а для чего это нужно.
triptyl Муж.
новый человек
0
Сообщения: 88
Зарегистрирован: 11.05.04
Сообщение Добавлено: 20 Сентябрь 2004, 18:50:08 

Чебурген писал(а):
triptyl, код правильный, а постановка вопроса - неверная.
Перед тем, как отвечать на вопрос "зачем писать в базу", надо ответить на вопрос "что писать в базу".
А перед тем, как писать готовый код, сначала лучше узнать - а для чего это нужно.



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

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

_________________
все приборы врут, все, кто с нами, умрут, кольцевые дороги никуда не ведут
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 20 Сентябрь 2004, 18:59:41 

triptyl писал(а):
просто человек хотел хранить а базе то, что лучше бы хранить в сессии.



Не вижу никаких оснований для такого вывода. Сессия -- это, в первую очередь, запрет кэширования. Т.е. зло. Повышение нагрузки на сервер и канал и ухудшение качества индексирования поисковиками.


Цитата:
насколько было ясно из самого первого постинга, необходимо просто ограничить доступ к страницам, если до этого не были просмотрены предыдущие. что и сделано.



Да-да. Найдем прямое решение для неверно поставленной задачи и будем радоваться. :)
triptyl Муж.
новый человек
0
Сообщения: 88
Зарегистрирован: 11.05.04
Сообщение Добавлено: 20 Сентябрь 2004, 23:28:24 

Crazy писал(а):
Сессия -- это, в первую очередь, запрет кэширования. Т.е. зло. Повышение нагрузки на сервер и канал и ухудшение качества индексирования поисковиками.



оффтопик:
Кролики — не только ценный мех, но и 3,5 кг диетического мяса.


А вот что получше будет: дергать базу при каждом обращении к странице чтобы считать/записать туда единичку-двоечку, или использовать для этого сессии (вспомним классический пример их использования http://www.php.net/manual/ru/ref.session.php)?

И базу-то мы, может, несильно дергать будем, и сессии-то могут в cookie сохраняться, а не дописывать sid в url... :rotate:

Другое дело, что


Crazy писал(а):
Найдем прямое решение для неверно поставленной задачи и будем радоваться.



— где там реакция вопрошающего господина AlexShop? :roll:

_________________
все приборы врут, все, кто с нами, умрут, кольцевые дороги никуда не ведут
Crazy Муж.
Модератор
107
Сообщения: 14561
Зарегистрирован: 23.12.01
Откуда: Moscow
Сообщение Добавлено: 21 Сентябрь 2004, 05:02:26 

triptyl писал(а):
А вот что получше будет: дергать базу при каждом обращении к странице чтобы считать/записать туда единичку-двоечку, или использовать для этого сессии (вспомним классический пример их использования http://www.php.net/manual/ru/ref.session.php)?



Этот вопрос содержит две логические ошибки. :)
модератор
новый человек
0
Сообщения: 82
Зарегистрирован: 10.07.04
Откуда: :адуктО
Сообщение Добавлено: 26 Сентябрь 2004, 18:27:30 
это если с базой данных делать тут вообще надо заводить временные уч.зап на каждый браузер и делать чтоб они потом убивались. сессии сами все сделают. в этом случае с ними удобнее.
AlexShop Муж.
участник
34
Сообщения: 1866
Зарегистрирован: 17.02.04
Сообщение Добавлено: 28 Сентябрь 2004, 03:39:49 
Прошу прощения что так пропал. Я как раз занимался как раз этим вопросом. И пришел к выводу, что нет достаточно надежного способа решения этой проблемы.

Сессии не подходят. Вопрос был в том: как отследить юзера (который уже имеет сессию), что он (юзер) не нарушает порядок посещения страниц.
Страница 1 - Страница 2 - Страница 3
(а не: Страница 1 - Страница 3)

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

Так вот, после всяких дум я решил что опытный юзер (назовем его - "хакер" что бы все поняли) без труда сможет зайти на страницу 3, не заполнив нужные формы страниц 1 и 2. И тут его ничем не остановить.

Решение:
Каждая страница - должна быть самодостаточной.
Страница допускает появления юзера с "ниоткуда".
К примеру: на Страницу 3 - "хакер" может попасть: скачав формы Страницы 2 к себе в компьютер. (На $HTTP_REFERER больших надежд возлагать не будем)

Страница 3 принимает данные, фильтрует их, если надо - выдает ошибку.
И если все хорошо, Страница 3 проверяет, есть ли в БД - записи
Страницы 1. И только после этого записывает, то что юзер ей послал.


Т.е. проблема решилась при правильной постановке вопроса.

Ну и пусть (при оформлении заказа) - юзер заходит сразу на Страницу 10. Перед тем как принять данные - Страница 10 проверит наличие данных страниц 1,2,3,4,5,6,7,8.. в БД.
MpaK999 Муж.
участник
1
Сообщения: 1716
Зарегистрирован: 14.11.02
Откуда: Ufa/Russia
Сообщение Добавлено: 28 Сентябрь 2004, 11:24:47 
может всё это "хакерство" решить с помощью авторизации?

_________________
:: metal kick ass ::
Чебурген
соучастник
3
Сообщения: 315
Зарегистрирован: 29.08.04
Сообщение Добавлено: 28 Сентябрь 2004, 16:57:49 

Цитата:
Сессии не подходят.


Это заблуждение.
проистекающее, как я полагаю, из поверхностного знакомства с предметом.
С какой стати "хакер" увидит 3 страницу, если в сессии не будет отметки о посещении первых двух?

Вариант с сессиями, когда в сессию пишутся данные из форм на страницах 1 и 2 ничем принципиально не хуже варианта, когда данные из форм пишутся в базу, а в формах есть хидден поле, идентифицирующее запись.
Какая принципиальная разница, где проверять данные - в сессии или в базе?

В общем, делать можно как угодно, но в умозаключениях своих желательно исходить из реальных фактов, а не фантазий.
*   Список форумов / Начинка и техника / Программирование для WWW « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 19 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100