В скрипте используются сессии для передачи промежуточных данных а затем записи их в базу данных через опред. время. Так сказать чтобы каждое обращение к страничке не инициировало обращение к базе. Первое обращение к странице само собой инициирует обращение и запис в базу, зате устанавливается счетчик, в течение которого данные копятся а уж потом запис. в базу. Вот тут и камень, если у кого то будут отключены куки, то фактич.получается что с каждым обращением будет создаваться новая сессия и новое обращение в базу а это летит к чертям счетчик онлайн с полями "ID сессии", счетчик посетителей, почасовая статистика - все они используют в целях оптимизации промежуточные данные сессий.
Возникает вопрос как сделать так, чтобы юзер не смог "ходить" по сайту с отключенными куками? В сети есть мини скрипт с внешней переадресацией, записью и проверкой куков, но не будешь же на каждой странице его запускать. Ест ли что то более универсальное?
Спустя 15 минут, 5 секунд (5.08.2009 - 09:15) kirik написал(а):
Цитата (RAMM13 @ 5.08.2009 - 01:00) |
В сети есть мини скрипт с внешней переадресацией, записью и проверкой куков, но не будешь же на каждой странице его запускать. Ест ли что то более универсальное? |
1. не пускать пользователей на сайт с отключенными куками
2. забить на лишние куки. Во-первых таких людей будет очень немного, во-вторых отключенные куки еще не означают запрет на запись сессионных кук, в-третьих один человек сможет просмотреть в среднем 30 страниц сайта, тоесть всего 30 лишних записей на человека.
А счетчик посщений делай по IP. Тоесть в БД записывается Sess_id | IP | time_update. И потом вытаскиваешь нужные записи не старше 5-ти минут, с группировкой по IP.
Спустя 13 минут, 55 секунд (5.08.2009 - 09:29) RAMM13 написал(а):
так вот как определить отключены ли куки у юзера? вот в чем вопрос. Только средствами PHP. без яваскриптов
Спустя 59 минут, 42 секунды (5.08.2009 - 10:29) Sylex написал(а):
Цитата (RAMM13 @ 5.08.2009 - 12:29) |
так вот как определить отключены ли куки у юзера? |
а собственно никак... куки - это заголовки, их можно только послать и получив ответ анализировать - отдал куку браузер или нет

Спустя 1 минута, 23 секунды (5.08.2009 - 10:30) Sylex написал(а):
можно сделать так:
если нет сессии - то инициализировать ее и сделать редирект на эту же страницу, ну и естественно если это будет 2 раз - то выдать ошибку "Включите куки"
если нет сессии - то инициализировать ее и сделать редирект на эту же страницу, ну и естественно если это будет 2 раз - то выдать ошибку "Включите куки"
Спустя 2 часа, 29 минут, 39 секунд (5.08.2009 - 13:00) RAMM13 написал(а):
Цитата (Sylex @ 5.08.2009 - 07:30) |
можно сделать так: если нет сессии - то инициализировать ее и сделать редирект на эту же страницу, ну и естественно если это будет 2 раз - то выдать ошибку "Включите куки" |
а если через переменные окружения? каждый раз браузер посылает кучу инфы на сервер о том от куда он, на каком компе сидит и какая ось стоит. И неужели он не отправляет кукис переменную "Вкл/откл" ?
Спустя 39 минут, 36 секунд (5.08.2009 - 13:40) Nikitian написал(а):
Недавно столкнулся с интереснейшей особенностью: если передавать хидер
PHP |
header('Expires: '.date('r',strtotime('+1 minute')).' GMT'); |
после вызова session_start(); то в експайрес записывается некоторая определённая дата (вроде 1982 год) и её никак не сменить. Очень долго бился с этой непоняткой, пока не поменял местами header(...) и session_start();
Спустя 3 часа, 8 минут, 55 секунд (5.08.2009 - 16:49) RAMM13 написал(а):
неужели никто с этим не сталкивался? тут дело даже не в механизме сессии, неважно свой он или по дефолту. Вопрос передачи "ключа" к сессии, бесконечное создание новых сессий. У меня подразуевается что раз в сессии нету переменной хоста, то человек зашел только что и это 1 посетитель. а если он будет каждый раз создават новую сессию то тогда число хостов будет вообще бессмысленным числом.
Передача через URL отключена id сессии, разрешена только через куки
Передача через URL отключена id сессии, разрешена только через куки
Спустя 1 час, 29 минут, 51 секунда (5.08.2009 - 18:18) kirik написал(а):
Цитата (Sylex @ 5.08.2009 - 02:30) |
если нет сессии - то инициализировать ее и сделать редирект на эту же страницу, ну и естественно если это будет 2 раз - то выдать ошибку "Включите куки" |
++
1. Пользователь заходит на страницу
2. Проверяем наличие установленной куки
2.1 Кука есть - разрешаем пользователю пользоваться сайтом
2.2 Куки нет - релиректим пользователя на страницу _http://site.com/?set_cookie
2.2.1 На этой странице ставим куку и редиректим чела на страницу _http://site.com/?check_cookie
2.2.1.1 Если на этой странице кук по-прежнему нет - выдаем ошибку.
Как-то так.. Можно подумать над оптимизацией этого процесса, но я бы на твоем месте забил. У самого довольно посещаемый сайт, и проблемы со счетчиком онлайн возникают только когда сайт начинают парсить криворукими скриптами через curl..
Цитата (RAMM13 @ 5.08.2009 - 08:49) |
Передача через URL отключена id сессии, разрешена только через куки |
Правильно. Через url не безопасно..
Спустя 2 часа, 27 минут, 39 секунд (5.08.2009 - 20:46) kirik написал(а):
Цитата (Nikitian @ 5.08.2009 - 05:40) | ||
Недавно столкнулся с интереснейшей особенностью: если передавать хидер
после вызова session_start(); то в експайрес записывается некоторая определённая дата (вроде 1982 год) и её никак не сменить. Очень долго бился с этой непоняткой, пока не поменял местами header(...) и session_start(); |
Я думаю что реврайт хидера может помочь:
PHP |
header('Expires: '.date('r',strtotime('+1 minute')).' GMT', true); |
Спустя 2 минуты, 51 секунда (5.08.2009 - 20:49) Nikitian написал(а):
Не, не совсем. поставил сперва header(...), а потом уже session_start() - заголовок стал правильно устанавливаться. Т.е. после session_start() именно этот заголовок не перезадать никак %)
Спустя 35 минут, 37 секунд (5.08.2009 - 21:25) kirik написал(а):
Цитата (Nikitian @ 5.08.2009 - 12:49) |
Т.е. после session_start() именно этот заголовок не перезадать никак |
А параметр replace пробовали ставить?
Спустя 6 минут, 24 секунды (5.08.2009 - 21:31) Nikitian написал(а):
Ну как бэ replace=true по умолчанию или я что-то пропустил в этой жизни?
Спустя 5 минут, 7 секунд (5.08.2009 - 21:36) kirik написал(а):
Nikitian
Сорри, невнимателен
Сорри, невнимателен

Спустя 10 часов, 49 минут, 56 секунд (6.08.2009 - 08:26) Guest написал(а):
Цитата (RAMM13 @ 5.08.2009 - 13:49) |
неужели никто с этим не сталкивался? тут дело даже не в механизме сессии, неважно свой он или по дефолту. Вопрос передачи "ключа" к сессии, бесконечное создание новых сессий. У меня подразуевается что раз в сессии нету переменной хоста, то человек зашел только что и это 1 посетитель. а если он будет каждый раз создават новую сессию то тогда число хостов будет вообще бессмысленным числом. Передача через URL отключена id сессии, разрешена только через куки |
Зачем вам сесии?
Зачем вам не пускать пользователя, если отключены куки?
Зачем?
Что вы хотите обмануть?
Себя?
Знаете, что такое сессия?
Спустя 5 минут, 28 секунд (6.08.2009 - 08:31) Guest написал(а):
Цитата (RAMM13 @ 5.08.2009 - 06:00) |
В сети есть мини скрипт с внешней переадресацией, записью и проверкой куков, но не будешь же на каждой странице его запускать. |
На каждой странице нужно запускать все, что касается счетчиков, безопасности, идентификации и прочей лабуды которую вы там делаете. Что, испугались пару лишних запросов к базе?
Спустя 3 часа, 7 минут, 34 секунды (6.08.2009 - 11:39) RAMM13 написал(а):
Цитата (Guest @ 6.08.2009 - 05:31) | ||
На каждой странице нужно запускать все, что касается счетчиков, безопасности, идентификации и прочей лабуды которую вы там делаете. Что, испугались пару лишних запросов к базе? |
сессии необходимы для работы всего скрипта. если куки отключены то ничего потенциальный юзер не сможет сделать, даже навредит, т.к. идентификация юзера идет по его ID сессии а не по связке IP+Браузер, что более точно определяет фактическое число юзеров. В случае отключенных кук, сессия будет пересоздаваться каждый раз, тем самым вводит в заблуждение систему, т.к. каждый раз новый ID сессии подразумевает под собой нового юзера. Вот по этому и хочу запретить. Уже давно ясно что куки необходимы для нормального интерактива в сети. Тот, кто отключает их должен знать что тем самым кастрирует свои возможности.
По поводу пары лишних запросов=> для проекта малого это дельно, однако если хочешь проект с запасом прочности нужно улавливать моменты которые будут больше всего востребованы и кэшировать их. Даже 10сек кэш может крупно помочь в загруженном сайте.
Спустя 3 часа, 30 минут, 11 секунд (6.08.2009 - 15:09) Guest написал(а):
Цитата (RAMM13 @ 6.08.2009 - 08:39) |
сессии необходимы для работы всего скрипта. если куки отключены то ничего потенциальный юзер не сможет сделать, даже навредит, т.к. идентификация юзера идет по его ID сессии а не по связке IP+Браузер, что более точно определяет фактическое число юзеров. В случае отключенных кук, сессия будет пересоздаваться каждый раз, тем самым вводит в заблуждение систему, т.к. каждый раз новый ID сессии подразумевает под собой нового юзера. |
Вы хоть думайте, что вы пишите. Где это сказано, что сессии не работают при отключенных куках? С какого перепуга будет создаваться куча переменных ID?
Полистайте мануал, много нового для себя откроете, а то так и будете бороться с надуманными проблемами.
Спустя 3 часа, 10 минут, 1 секунда (6.08.2009 - 18:19) kirik написал(а):
Цитата (Guest @ 6.08.2009 - 07:09) |
Где это сказано, что сессии не работают при отключенных куках? |
Если в браузере отключены все куки, то сессии работать не будут. Если же браузер принимает сессионные куки, то работать будет соответственно.
Спустя 28 минут, 23 секунды (6.08.2009 - 18:48) Nikitian написал(а):
Цитата (kirik @ 6.08.2009 - 15:19) | ||
Если в браузере отключены все куки, то сессии работать не будут. Если же браузер принимает сессионные куки, то работать будет соответственно. |
Вообще-то существует ещё 2 взаимодополняющих альтернативных способа передачи id сессии: дописывание get-параметром ко всем ссылкам и дописывание во все формы скрытого поля с id сессии. Эти способы являются так же нативными, как и посылка куки (ведь куку вы сами не посылаете

Спустя 59 минут, 19 секунд (6.08.2009 - 19:47) kirik написал(а):
Цитата (Nikitian @ 6.08.2009 - 10:48) |
Вообще-то существует ещё 2 взаимодополняющих альтернативных способа передачи id сессии: дописывание get-параметром ко всем ссылкам и дописывание во все формы скрытого поля с id сессии. |
Угу.. ТС о втором способе говорил. И правильно замечено, что на практике его применять несекурно и некрасиво... Тоесть остаются только куки

Спустя 41 минута, 40 секунд (6.08.2009 - 20:29) Guest написал(а):
1.php
PHP |
<?php |
2.php
PHP |
<?php |
3.php
PHP |
<?php |
Спустя 1 минута, 25 секунд (6.08.2009 - 20:30) Guest написал(а):
Проверьте при отключенных куках в браузере работоспособность этого кода.
Спустя 26 минут, 37 секунд (6.08.2009 - 20:57) kirik написал(а):
Цитата (Guest @ 6.08.2009 - 17:30) |
Проверьте при отключенных куках в браузере работоспособность этого кода. |
Тогда уж лучше такой:
PHP |
session_start(); |
Но не принципиально - не работает. (Браузер ФФ 3)
Спустя 11 часов, 25 минут, 22 секунды (7.08.2009 - 08:22) RAMM13 написал(а):
Цитата (Guest @ 6.08.2009 - 17:29) | ||||||
1.php
2.php
3.php
|
ты удали все куки и запрети прием их и проверь. каждое обращение - новая сессия. Мануалы по этому поводу прочитал все которые хот что то новое говорят. По сути вот зачем делать отключение кук? вирусы не подцепиш таким образом, разве что могут нацепить рекламку, да и та будет тока на определенном домене ток, сброс каких то настроек по дефаулту на сайте, тож както топорно. Так что скажем НЕТ отключателям кук
Спустя 9 часов, 14 минут, 43 секунды (7.08.2009 - 17:37) kirik написал(а):
Цитата (RAMM13 @ 7.08.2009 - 00:22) |
По сути вот зачем делать отключение кук? |
Так в том то и дело

Спустя 5 часов, 28 минут, 39 секунд (7.08.2009 - 23:05) Guest написал(а):
Цитата (RAMM13 @ 7.08.2009 - 05:22) |
По сути вот зачем делать отключение кук? |
Чтобы вас не определили, как зарегистрированного пользователя. и что бы нигде не засветиться
Спустя 16 часов, 57 минут, 42 секунды (8.08.2009 - 16:03) RAMM13 написал(а):
Цитата (Guest @ 7.08.2009 - 20:05) | ||
Чтобы вас не определили, как зарегистрированного пользователя. и что бы нигде не засветиться |
От кого светится? Засветишь свою Opera 9.6? или супер-секретный динамический IP? причем тут куки тогда.