iPad/iPhone: как сохранить сеанс в веб-приложении

Добавить веб-страницу в качестве веб-приложения очень просто. Найдите здесь хорошую статью.

Проблема заключается в том, чтобы держать сеанс открытым. После переключения на другое приложение сеанс закрывается, и пользователю необходимо повторно ввести свои учетные данные.

Я нашел аналогичную запись без ответа в stack- переполнение.

Некоторые намеки?


person ic3    schedule 05.02.2012    source источник


Ответы (2)


Вместо того, чтобы хранить информацию для входа в переменную $_SESSION, сохраните ее в переменной $_COOKIE. Файл cookie будет сохранен в зависимости от того, когда вы установите срок его действия. Пока они входят «внутри» веб-приложения или обычной веб-версии (и файл cookie один и тот же), им не нужно будет входить в систему каждый раз или при переключении между ними.

person adamdehaven    schedule 10.03.2012
comment
Этот ответ нужно удалить! Вы НИКОГДА не должны хранить учетные данные для входа в переменную $_COOKIE. Это огромный риск для безопасности, и кто-нибудь прислушается к совету этого человека! - person leewilson86; 04.06.2015
comment
Нет, если $_COOKIE является анонимным и не является фактическими учетными данными для входа. - person adamdehaven; 04.06.2015

Хитрость заключается в том, чтобы сделать это:

// Start or resume session
session_start(); 

// Extend cookie life time by an amount of your liking
$cookieLifetime = 365 * 24 * 60 * 60; // A year in seconds
setcookie(session_name(),session_id(),time()+$cookieLifetime);

Я проверил это на iOS 4.2.1, 5.1.1, 6.0 и 6.1. Сессия восстанавливается даже после выключения и перезагрузки устройства.

Для более подробного обсуждения этой стратегии вы можете взглянуть на мой ответ на этот вопрос: Поддерживать сеанс PHP в веб-приложении на iPhone

person Wilbo Baggins    schedule 30.01.2013
comment
Это работает также на 7.0 и 7.1. Кажется, есть некоторые ошибки, связанные с этим. Иногда сеанс не восстанавливается. Удаление значка, очистка истории/куки, кажется, помогает. Однако, если вы вошли в веб-приложение, затем закройте, удалите значок, очистите историю и снова добавьте значок, я вошел в систему. Таким образом, файл cookie хранится где-то еще. - person Niclas; 28.04.2014
comment
Серьезно - есть причина, по которой мы устанавливаем срок действия файлов cookie... это не решение - person Tim Ogilvy; 03.05.2014
comment
Привет Тим, вы все еще можете установить срок действия файлов cookie, я не вижу проблемы. Вопрос конкретно нацелен на поддержание сеанса в рабочем состоянии; Я не могу придумать никакого другого способа сохранить сеанс, кроме как продлить время жизни файла cookie сеанса, поскольку все существование сеанса зависит от наличия этого файла cookie. Мне действительно любопытно услышать, что вы считаете лучшим решением. - person Wilbo Baggins; 05.05.2014