Я использую функцию hash_hmac (md5) с IP-адресом пользователя, паролем и датой окончания срока действия файлов cookie, и никто не может расшифровать мой зашифрованный код файлов cookie
Вы просто подписываете данные cookie с помощью HMAC? Похоже на это. Все, что делает HMAC, это доказывает, что сообщение не было подделано. Кроме того, ограничение IP-адресов будет сильно раздражать пользователей за некоторыми прокси-серверами.
Поскольку HMAC - это просто подпись , данные cookie все еще могут быть прочитаны и полностью не зашифрованы, если вы не сделали это отдельно. Если вы поместили в этот файл cookie какие-либо данные, которые позволили бы третьей стороне контролировать доступ к сайту для подключения в качестве вашего пользователя (например, простой несоленый хэш пароля пользователя), то HMAC совершенно бесполезен.
Если вы хотите поместить конфиденциальную информацию в файл cookie, вам следует использовать здесь шифрование real , а не просто для подписи данных. (Читайте: делайте оба.)
Если вы не можете выполнить фактическое шифрование данных, и данные настолько рискованны, что имеет для защиты от посторонних глаз, то вам не следует отправлять их в cookie-файле. Или весь ваш сайт должен обслуживаться по SSL . Или оба.
Но давайте перейдем к сути вопроса:
Если вы пытаетесь просто определить, вошел ли текущий пользователь в систему, тогда сеансы - это фантастический выбор. Трудно заставить их не работать.
Если вы пытаетесь сделать так, чтобы логин пользователя сохранялся дольше, чем продолжительность сеанса, тогда куки-файлы в значительной степени являются наиболее эффективным инструментом. Однако вам не нужно (читай: не следует) хранить любую интересную информацию в куки. Вы можете просто сохранить хэш некоторых случайных данных и идентифицировать их в базе данных как принадлежащие указанному пользователю. Здесь могут вступить в действие ограничения вашего браузера / IP. Если пользователь не в данный момент вошел в систему, проверьте куки. Если он все еще действителен, установите его данные сеанса и сгенерируйте cookie с новым хешем, аннулируя старый.
Обязательно установите его так, чтобы один и тот же пользователь мог войти в систему на разных машинах, не выходя из системы для других. Это чертовски раздражает.
Что касается того, почему Wordpress предположительно отказывается от сессий ... ну, Wordpress не является образцом хорошего дизайна, и он сделал несколько огромных компромиссов во имя работы в значительной степени в любом месте. Общий хостинг - это ад.