Это не кажется, что это - Ваша проблема, но весь поиск и устранение неисправностей должен запуститься с основ. Я думаю, что это только применяется, если Вы используете сенсорную панель, но Ubuntu имеет функцию, которая, как предполагается, отключает Вашу мышь, в то время как Вы вводите. Это вызвало некоторые проблемы для меня в прошлом. Вот больше информации об этом.
Для меня, снимая тот флажок решил мои проблемы. Если это не имеет место для Вас, обновите свой вопрос с большей информацией о Вашей установке и мышь, которую Вы используете.
Уведомление о безопасности : основывать cookie на MD5-хэше детерминированных данных - плохая идея; лучше использовать случайный токен, полученный из CSPRNG. См. ответ ircmaxell на этот вопрос, чтобы узнать о более безопасном подходе.
Обычно я делаю что-то вроде этого:
Конечно, вы можете использовать другие имена файлов cookie и т. д., также вы можете изменить содержимое файла cookie, просто убедитесь, что его нелегко создать. Например, вы также можете создать user_salt при создании пользователя и также поместить его в cookie.
Также вы можете использовать sha1 вместо md5 (или любой другой алгоритм)
Есть две очень интересные статьи, которые я обнаружил в поисках идеального решения проблемы «запомнить меня»:
Я задал один из аспектов этого вопроса здесь , и ответы приведут вас ко всем необходимым ссылкам на файлы cookie с тайм-аутом на основе токенов.
В основном, вы не сохраняете userId в cookie. Вы храните одноразовый токен (огромную строку), который пользователь использует для получения своего старого сеанса входа в систему. Затем, чтобы сделать его действительно безопасным, вы запрашиваете пароль для тяжелых операций (например, изменение самого пароля).
Создайте хэш, возможно, с секретом, известным только вам, а затем сохраните его в своей базе данных, чтобы его можно было связать с пользователем. Должно работать достаточно хорошо.
Реализация функции «Держать меня в системе» означает, что вам нужно точно определить, что это будет значить для пользователя. В простейшем случае я бы сказал, что у сеанса гораздо более длительный тайм-аут: 2 дня (скажем) вместо 2 часов. Для этого вам понадобится собственное хранилище сеанса, возможно, в базе данных, поэтому вы можете установить время истечения срока действия данных сеанса. Затем вам нужно убедиться, что вы установили файл cookie, который будет храниться несколько дней (или дольше), а не истечет при закрытии браузера.
Я слышу, как вы спрашиваете: «Почему 2 дня? Почему не 2 недели? ". Это связано с тем, что использование сеанса в PHP автоматически продлевает срок действия. Это связано с тем, что истечение срока действия сеанса в PHP на самом деле является тайм-аутом простоя.
Теперь, сказав это, я ' d, вероятно, реализую более жесткое значение тайм-аута, которое я сохраняю в самом сеансе, через 2 недели или около того, и добавлю код, чтобы увидеть это и принудительно аннулировать сеанс. Или хотя бы вывести их из системы. Это будет означать, что пользователю будет периодически предлагаться войти в систему. Yahoo! делает это.
Я бы рекомендовал подход, упомянутый Стефаном (т.е. следовать рекомендациям в Improved Persistent Login Cookie Best Practice), а также рекомендую убедиться, что ваши cookies являются HttpOnly cookies, чтобы они не были доступны для потенциально вредоносного JavaScript.