Как лучше сделать функцию Запомнить меня?
Куку могут своровать. И пароль могут своровать.
При регистрации пользователя генерируем ему уникальную строку и сохраняем в БД. После запоминания ставим её в куках. Для защиты от кражи кук можно привязывать строку к IP, но не всем пользователям это подойдёт
В куки - храним токен, токен - может быть привязан к IP, подсети провайдера, браузеру (User-Agent), разрешению экрана.
При использовании токена с несовпадающими параметрами - токен устанавливается невалидным на сервере и пользователю предлагается снова ввести логин и пароль.
Схема последовательности авторизации: token -> login/pass
Схема линковки на сервере: 
userID/login:token1:md5(ip:subnet:user-agent:screen-size):salt1:timestamp1
userID/login:token2:md5(ip:subnet:user-agent:screen-size):salt2:timestamp2
..........
userID/login:tokenN:md5(ip:subnet:user-agent:screen-size):saltN:timestampN
PS: то, что не хотим учитывать в md5-хеше - ставим пустой строкой.Один токен = одно устройство = один браузер.
Генерация токена: token=hash(md5(...).saltN) (можно ещё добавить время создания)БОНУС!