В настоящее время мое приложение для 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);
}
}];
Пожалуйста помоги. Благодарю.
У меня была похожая проблема здесь (в веб-обозрении).
Попробуйте увеличить время жизни вашего файла 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);
Вы должны понимать, как PHP поддерживает сессию на стороне сервера. Это делается путем отправки куки обратно клиенту (PHPSESSID). Затем этот файл cookie отправляется обратно на сервер с каждым новым запросом ВАШЕГО БРАУЗЕРА.
Но вы НЕ используете браузер, а объект подключения. Вам нужно сохранить возвращенный идентификатор сеанса на стороне клиента и отправлять его обратно на сервер при каждом новом запросе. Это делается через заголовки. Ответ от сервера будет содержать Set-Cookie, и вам необходимо отправить cookie идентификатора сеанса с заголовком Cookie.