Заголовок сообщения: Откуда пришел пользователь? Отслеживание внутри сайта. Добавлено: 18 Сентябрь 2004, 18:49:52
У меня есть три страницы:
Страница 1
Страница 2
Страница 3
Мне нужно точно знать, что:
на Страницу 2 - можно попасть только со Страницы 1
на Страницу 3 - можно попасть только со Страницы 2
Я думаю использовать такой метод:
Когда юзер приходит на Страницу 1, в базу данных записывается - "1"
Когда юзер приходит на Страницу 2 - проходит сверка с БД (если там значение "1")
Когда юзер приходит на Страницу 3 - проходит сверка с БД (если там значение "2")
Практически: все это будет на PHP+MySQL
И у меня вопрос насчет надежности и защиты: есть ли тут какие подводные камни?
Ведь я не пересылаю никаких переменных путем (GET и POST).
И не использую метод $HTTP_REFERER - который, как я слышал, можно подделать.
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.
Заголовок сообщения: Re: Откуда пришел пользователь? Отслеживание внутри сайта. Добавлено: 19 Сентябрь 2004, 11:08:36
AlexShop писал(а):
И не использую метод $HTTP_REFERER - который, как я слышал, можно подделать.
а кому оно здесь надо, это подделывание?
более того, мало кто вообще догадается, что ты там внутри что-то отслеживаешь.
_________________ Когда предлагают варианты эскизов, я беру тот, который мне рекомендуют сами дизайнеры, а не тот, который нравится мне. О. Антонов (авиаконструктор)
Чебурген, считай, что раз дизайнеры сказали, то пускай и сами делают. к тому же, вопросы программирования и безопасности дизайнеров волновать не должны.
_________________ Когда предлагают варианты эскизов, я беру тот, который мне рекомендуют сами дизайнеры, а не тот, который нравится мне. О. Антонов (авиаконструктор)
Чебурген, я человеку немного помогаю.
А вот чем я тебе не угодил, я не понимаю.
_________________ Когда предлагают варианты эскизов, я беру тот, который мне рекомендуют сами дизайнеры, а не тот, который нравится мне. О. Антонов (авиаконструктор)
Это не помощь, а вредительство.
Именно этим и не угодил.
Реферер ему даром не сдался. И человек совершенно правильно от него отказывается. Зачем ему нужен помощник, который знает еще меньше, чем он сам?
Не знаешь нормальных методов - помолчи, послушай.
Дождись ответа на вопрос Crazy.
Чебурген, что помошь, а что вредительство — не тебе судить.
затыкать рот ты другим будешь.
_________________ Когда предлагают варианты эскизов, я беру тот, который мне рекомендуют сами дизайнеры, а не тот, который нравится мне. О. Антонов (авиаконструктор)
triptyl, код правильный, а постановка вопроса - неверная.
Перед тем, как отвечать на вопрос "зачем писать в базу", надо ответить на вопрос "что писать в базу".
А перед тем, как писать готовый код, сначала лучше узнать - а для чего это нужно.
triptyl, код правильный, а постановка вопроса - неверная. Перед тем, как отвечать на вопрос "зачем писать в базу", надо ответить на вопрос "что писать в базу". А перед тем, как писать готовый код, сначала лучше узнать - а для чего это нужно.
просто человек хотел хранить а базе то, что лучше бы хранить в сессии. Если хранить подобную информацию в базе, то, во-первых, база свихнется при большом количестве пользователей, во-вторых, все будет очень тормозить.
насколько было ясно из самого первого постинга, необходимо просто ограничить доступ к страницам, если до этого не были просмотрены предыдущие. что и сделано.
_________________ все приборы врут, все, кто с нами, умрут, кольцевые дороги никуда не ведут
просто человек хотел хранить а базе то, что лучше бы хранить в сессии.
Не вижу никаких оснований для такого вывода. Сессия -- это, в первую очередь, запрет кэширования. Т.е. зло. Повышение нагрузки на сервер и канал и ухудшение качества индексирования поисковиками.
Цитата:
насколько было ясно из самого первого постинга, необходимо просто ограничить доступ к страницам, если до этого не были просмотрены предыдущие. что и сделано.
Да-да. Найдем прямое решение для неверно поставленной задачи и будем радоваться.
Сессия -- это, в первую очередь, запрет кэширования. Т.е. зло. Повышение нагрузки на сервер и канал и ухудшение качества индексирования поисковиками.
оффтопик:
Кролики — не только ценный мех, но и 3,5 кг диетического мяса.
А вот что получше будет: дергать базу при каждом обращении к странице чтобы считать/записать туда единичку-двоечку, или использовать для этого сессии (вспомним классический пример их использования http://www.php.net/manual/ru/ref.session.php)?
И базу-то мы, может, несильно дергать будем, и сессии-то могут в cookie сохраняться, а не дописывать sid в url...
Другое дело, что
Crazy писал(а):
Найдем прямое решение для неверно поставленной задачи и будем радоваться.
— где там реакция вопрошающего господина AlexShop?
_________________ все приборы врут, все, кто с нами, умрут, кольцевые дороги никуда не ведут
А вот что получше будет: дергать базу при каждом обращении к странице чтобы считать/записать туда единичку-двоечку, или использовать для этого сессии (вспомним классический пример их использования http://www.php.net/manual/ru/ref.session.php)?
это если с базой данных делать тут вообще надо заводить временные уч.зап на каждый браузер и делать чтоб они потом убивались. сессии сами все сделают. в этом случае с ними удобнее.
Прошу прощения что так пропал. Я как раз занимался как раз этим вопросом. И пришел к выводу, что нет достаточно надежного способа решения этой проблемы.
Сессии не подходят. Вопрос был в том: как отследить юзера (который уже имеет сессию), что он (юзер) не нарушает порядок посещения страниц.
Страница 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.. в БД.
Это заблуждение.
проистекающее, как я полагаю, из поверхностного знакомства с предметом.
С какой стати "хакер" увидит 3 страницу, если в сессии не будет отметки о посещении первых двух?
Вариант с сессиями, когда в сессию пишутся данные из форм на страницах 1 и 2 ничем принципиально не хуже варианта, когда данные из форм пишутся в базу, а в формах есть хидден поле, идентифицирующее запись.
Какая принципиальная разница, где проверять данные - в сессии или в базе?
В общем, делать можно как угодно, но в умозаключениях своих желательно исходить из реальных фактов, а не фантазий.
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.