У меня есть приложение для iPhone, которое общается с базой данных, которая включает в себя такие вещи, как данные пользователей (то есть имя пользователя, адрес электронной почты, пароль), я создал PHP API для этого, и я подключаюсь к этому API в приложении iPhone. Моя проблема заключается в следующем: я сохраняю идентификатор пользователя в $_SESSION
, чтобы восстановить его позже, когда это необходимо, когда я вручную вхожу в систему, $_SESSION
переменные легко сохраняются, и я могу называть их всякий раз, когда захочу, но когда приложение автоматически регистрируется (что очевидно после первого входа в систему, где имя пользователя и пароль получают хранилище в ключевом ключе iPhone), переменные $_SESSION
не сохраняются, я заметил, что они только сохраняются и вызывают без проблем после выхода из системы, который переводится после session_destroy();
, вот php код я использую для входа в систему и из
session_start();
function login($user, $pass) {
$result = query("SELECT IdUser, username FROM login WHERE username='%s' AND pass='%s' limit 1", $user, $pass);
if (count($result['result'])>0) {
$_SESSION['IdUser'] = $result['result'][0]['IdUser'];
print json_encode($result);
} else {
errorJson('Authorization failed');
}
}
function logout() {
$_SESSION = array();
session_destroy();
}
Я пытался добавить session_destroy();
в начале метода входа в систему, но это не сработало.
Кстати, я могу в качестве альтернативы сохранить IdUser
в NSUserDefaults
или iPhone keychain и отправить его на сервер при необходимости. Is it safe/not wrong to do such things on the app side rather than the server side?
Я не реально получить ваш вопрос .. Вы уверены, что сессия работает с вашим приложением и печенье или что-то еще не было бы лучше? – kero
Я уверен, что это работает, я знаю, что это как-то странно. Но, возможно, это может быть у меня что-то недостающее. BTW, если я вызвал 'logout' в' applicationDidEnterBackground' и назвал 'login' в' applicationDidBecomeActive', он работает (наверняка, после того, как я закрою приложение, когда он находится в фоновом режиме, и откройте его снова), но только на это время, когда Я снова открываю приложение, которое не работает. –
Является '' session_start() '' вызывается в самой первой строке в файле PHP (прежде чем что-либо выводится)? – ub3rst4r