| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Как узнать, включены ли куки? |
| Автор: maxipub 30.10.2014, 18:11 |
| Собственно, сабж. ЗЫ: при первом запросе. |
| Автор: baldina 30.10.2014, 18:58 |
| никак Добавлено через 8 минут и 35 секунд что бы проверить, надо поробовать установить и принять, а для этого браузер должен сделать повторный запрос. обычно манипулируют Location, чтобы с точки зрения пользователя это был первый запрос, но технически браузер обращается повторно. |
| Автор: s0lman 30.10.2014, 19:20 |
| Можно попробовать стартовать сессию. Если не ошибаюсь, по умолчанию SID передается в куках, если они недоступны - в УРЛ. Если в GET найдется идентификатор сессии - возможно, куки отключены. Хотя я уверен, что проверка включены ли куки - неправильный способ решения какой-то более глобальной задачи. |
| Автор: baldina 30.10.2014, 19:25 |
пока не будет соответствующего запроса (повторного) ничего в get не найдется |
| Автор: baldina 31.10.2014, 10:36 |
отнюдь. проблема в реализации. разве сложно проверить, что $_COOKIE пустой? |
| Автор: SergV 31.10.2014, 12:15 | ||||
На пхп проверить можно только после перезагрузки страницы, если куки не записаны их нет, то пишем, перезагружаем и читаем. Записались, значить включены, нет, значить нет. А вот с JavaScript думаю можно проверить без перезагрузки страницы, но я в JS ноль, так что это ток предположение, судя по быстрому поиску, в JS есть возможность работы с куками. JavaScript работает на стороне клиента, в отличии от пыха, а значить можно сразу проверить включена в браузере поддержка куков, или нет.
А какой смысл давать гостям настраивать сайт под себя по полной программе? Если им нужны настройки, пусть регистрируются нормально, и тогда уже в базе хранить эти настройки. Не хотят региться, то минимум настроек в куки, типа выбрать цвет сайта или тему, и язык по умолчанию(если есть), и всё, кукис на год, и хватит баловать. ИМХО конечно, но я лично не вижу смысла гостям давать лишние настройки сайта, даже точнее сказать вообще давать им какие нибудь настройки. Но если это так важно, то максимум то что написал выше, а для этого размера куков хватит за глаза, да и можно ведь для одного сайта их создать несколько, если одного мало. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Kak-uznat-vklyucheny-li-kuki-id54525545ae2015db778b4567#findElement_E7045_54535346ae2015da28e4c5ce_0 |
| Автор: maxipub 31.10.2014, 12:42 | ||||
Здорово. А как определить что это не первый запрос от пользователя? Разве что реферер на ум приходит, но этот вариант не надежен. Банально, многие фаерволы, блокировщики рекламы, плагины и т.д. его вырезают. IP + юзерагент тоже гарантий не дают. Там можно. Но JavaScript есть не у всех юзеров. Сейчас многие шарятся с телефонов, например.
Сорри, это не вариант в принципе, мы работаем по принципу "все для клиента" и последними не разбрасываемся. |
| Автор: Aliance 31.10.2014, 14:44 | ||
А зачем это определять?
JS есть в мобильных устройствах. Равно как и куки. У вас есть ЯМетрика? Она показала бы % пользователей без JS |
| Автор: s0lman 31.10.2014, 16:18 | ||
Если, к примеру, храните язык и тему оформления сайта в куках, то если будете достоверно знать, что куки отключены - что это изменит? |
| Автор: SergV 31.10.2014, 17:04 | ||||
Если юзер заходит первый раз на сайт, то куков 100 пудов нет, а это проверяется через пустой $_COOKIE. Дальше, если отключен яваскрипт, то к примеру тегом <noscript> можно вывести предупреждение, что без включенного яваскрипт не будет доступно то или сё... Плюс..., не знаю не одного фаервола или блокировшика который бы вырезал ява скрипт. Есть блокировка по баннерам, всплывающим окнам, и переходам на другую страницу без спроса, а такие скрипты как доступ к кукам думаю не один блокировщик не заблокирует.
Яваскрипт по умолчанию есть у всех юзеров, если они его сами не отключили в браузере. Это Flash не доступен по умолчанию на всяких там айфонах/айпадах, и вроде как на новых андроидах, но и то его можно поставить вручную. Так что, если всё для клиента, то тут без яваскрипт не обойтись, и здесь для отдельных клиентов, что яваскрипт отключают, можно вежливо дать понять - " Уважаемый пользователь, у вас отключена поддержка JavaScript, которая требуется для полноценной работы сайта. Без JavaScript вы не сможете пользоваться теми и теми возможностями...". Думаю не кто материться не станет из клиентов, и не уйдёт с сайта, да же те кто не знает как его включить назад, если дать ссылку на помощь как включить яваскрипт и куки. Большинство же клиентов/посетителей даже не знают что ява скрипт можно отключить, а те кто знает, знают как и включить. Этот ответ добавлен с нового Винграда - http://ru.vingrad.com/Kak-uznat-vklyucheny-li-kuki-id54525545ae2015db778b4567#findElement_E7045_5453970bae20150b57e4c5c2_0 |
| Автор: baldina 31.10.2014, 17:11 |
вариантов масса - сессии, параметры запроса, логика приложения. http://viper-7.com/SeqXf4 |
| Автор: maxipub 3.11.2014, 13:32 | ||||||
Вы писали: "отнюдь. проблема в реализации. разве сложно проверить, что $_COOKIE пустой?". Если первый заход - кук не будет в любом случае. А если куки отключены, то они и не появятся. Итак, имеем ситуацию с запросом без кук: и как тут понять, это просто первый заход на сайт, или же кукиши отключены? Об этом и речь.
0.7%
Не будет засоряться БД.
Таких полно. Я не знаток в них, но тот же NoScript к примеру, жутко популярный. сессии === кукиши ??? Добавлено через 2 минуты и 35 секунд Спасибо всем за обсуждение! |
| Автор: baldina 3.11.2014, 19:53 |
нет Добавлено через 4 минуты и 58 секунд maxipub, открою вам страшную тайну: если бы в php не существовало сессий, а в http кук, то все равно остается возможность эмуляции сессии. для этого в каждый запрос добавляется идентификатор. это всегда возможно, т.к. контент и содержащиеся в нем ссылки генерируются сервером. Добавлено через 5 минут и 47 секунд и вот это http://php.net/manual/ru/session.idpassing.php на досуге |
| Автор: maxipub 4.11.2014, 13:41 |
| baldina, вы передаете идентификатор сессии через URL? |
| Автор: sQu1rr 4.11.2014, 15:58 |
вам всего лишь пытаются сказать что так делать можно, а значит сессия != куки. Сессия - это сервер-сайд, идентификатор сессии может хранится в куки, а можно и по урл передовать. |
| Автор: maxipub 4.11.2014, 16:19 |
| sQu1rr, это не сессии, а пародия, сессия. Человек зашел, все настроил, пошарился. Ок. А когда он зайдет на сайт в следующий раз? Как сессии, работающие через URL, нам помогут? |
| Автор: s0lman 4.11.2014, 17:02 |
Записали в куки. Отключены куки - его проблемы - при следующем заходе заново все настроит. Не вижу никакого резона что-то с базой химичить. Притом, если отключены куки, то идентификатор сессии уже точно потеряется, или я ошибся? Не сессия, работающая, а идентификатор сессии, передаваемый. Разницу чувствуете? |
| Автор: maxipub 4.11.2014, 18:48 |
В теме писалось зачем это надо. Ладно, всем еще раз спасибо. |