Идентификатор сеанса PHP не сохраняется в приложении iOS

В настоящее время мое приложение для iOS получало данные с сервера, который был построен с использованием PHP + MYSQL через JSON, затем в моем PHP я попытался повторить session_id(), Мое приложение использовало NSURLConnection sendAsynchronousRequest общаться с PHP.

Я пытался запросить один и тот же URL-адрес 3 раза, идентификатор возвращаемой сессии будет иметь другое значение, я включил session_start() в моем PHP, а также.

Но если я запускаю URL в браузере, независимо от того, сколько раз я его запускаю, идентификатор сессии всегда будет одинаковым.

Вот мой код запроса iOS:

NSString *newURL = @"http://www.example.com/index.php?value=getData"];
NSURLRequest *urlRequest = [NSURLRequest requestWithURL:[NSURL URLWithString:newURL]];
[NSURLConnection sendAsynchronousRequest:urlRequest queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
if ([data length] >0 && error == nil){
NSDictionary *myDict = [NSJSONSerialization
JSONObjectWithData:data
options:kNilOptions
error:&error];
NSLog(@"%@", myDict);
}
}];

Пожалуйста помоги. Благодарю.

0

Решение

У меня была похожая проблема здесь (в веб-обозрении).

Попробуйте увеличить время жизни вашего файла cookie сеанса в вашем файле PHP.

// Start session
session_start();

// Extend cookie life time by an amount of your liking
$lifetimecookie = 30 * 24 * 60 * 60; // A month
setcookie(session_name(),session_id(),time()+$lifetimecookie);
2

Другие решения

Вы должны понимать, как PHP поддерживает сессию на стороне сервера. Это делается путем отправки куки обратно клиенту (PHPSESSID). Затем этот файл cookie отправляется обратно на сервер с каждым новым запросом ВАШЕГО БРАУЗЕРА.

Но вы НЕ используете браузер, а объект подключения. Вам нужно сохранить возвращенный идентификатор сеанса на стороне клиента и отправлять его обратно на сервер при каждом новом запросе. Это делается через заголовки. Ответ от сервера будет содержать Set-Cookie, и вам необходимо отправить cookie идентификатора сеанса с заголовком Cookie.

0