не хочу занудствовать, но еще не рассмотрен вопрос защиты от фиксирования идентификатора сеанса, в этом случае функция session_regenerate_id() генерирует новый идентификатор сессии текущего посетителя. само же значение идентификатора сессии в куки устанавливается функцией session_start(), а вам ее в любом случае надо вызвать, иначе сессии не будут работать
т.е. я хочу сказать, что пытаясь придумать какое то собственное решение вместо использования системных решений, вы рискуете в будущем что то забыть или не учесть по незнанию и необходимость использования такой функции как, например, session_regenerate_id() , вызовет у вас потом головную боль
поэтому по порядку:
1.1 Что писать в куки/сессию?
ничего вручную в куки писать не нужно, вызываете session_start().
в сессию можете записать значение is_auth = true после того, как проверите, что логин и пароль верные
1.2 Как на каждой странице организовать проверку авторизован пользователь или нет?
ну это впрос больше архитектуры приложения, чем вопрос только авторизации. для пары страниц можно сделать общий подключаемый файл проверки авторизации, а для среднего проекта лучше сразу использовать фреймворк, но тогда вопросы об авторизации у вас вероятно изменятся, т.к. во фреймворках обычно уже заложен базовый функционал авторизации. в самом простом случае проверяете что значение сессии is_auth === true
1.3 Если нужно, чтобы у пользователя был только одновременный доступ с одного устройства - как быть?
ну это довольно сложно но попробую объяснить вкратце
- во первых, нужно хранить актуальный идентификатор сессии пользователя в постоянном хранилище, БД или еще где либо (т.е. на каждой странице после проверки авторизации обновляете идентификатор сессии в БД)
- во вторых, вам нужно хранить сессии авторизации в определенной папке, заданной функцией session_save_path($dir). смысл в том, что папка $dir должна быть доступна вам для записи чтения (изучите вопрос безопасности отдельно)
- в третьих, после успешной авторизации вы извлекаете из БД идентификатор сессии данного пользователя (см п. 1) и удаляете эту сессию из директории (см п. 2), и только потом записываете новый идентификатор сессии пользователя в БД (снова см. 1)
1.4 А если с нескольких?
тоже самое что в 1.3, только раньше у вас была структура таблицы допустим user_id, session_id, а в данном случае будет user_id,session_id, device_id т.е. смысл в том, что это не таблица пользователей а таблица сессий пользователей
Тажк рекомендую прочитать книгу "PHP. Рецепты программирования" от издательства O'Reilly, второе издание или более позднее
По второму вопрос в сущности ничего не меняется, кроме того, что дополняется функционалом инициализации и обработки ответов от vk.com. об этом можете почитать на странице
https://vk.com/dev/auth_sites