目前我的iOS应用程序是从使用PHP + MYSQL通过JSON构建的服务器检索数据,然后在我的PHP中我试图回显session_id()
。我的应用正在使用NSURLConnection sendAsynchronousRequest
与PHP进行通信。
我尝试过3次请求相同的网址,返回的会话ID将具有不同的值,我在PHP中也包含了session_start()
。
但是如果我在浏览器中运行URL,无论我运行多少次,会话ID都将始终相同。
这是我的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 :(得分:2)
我在这里遇到了类似的问题(在网页浏览中)。
尝试在PHP文件中增加会话Cookie的生命周期。
// 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);
答案 1 :(得分:0)
您必须了解PHP如何在会话服务器端保持会话。这是通过将cookie发送回客户端(PHPSESSID)来完成的。然后,随着您的浏览器的每个新请求,此cookie将被发送回服务器。
但是,您不是使用浏览器而是使用连接对象。您需要在客户端保留返回的会话ID,并在每次新请求时将其发送回服务器。这是通过标题完成的。来自服务器的响应将包含Set-Cookie,您需要使用Cookie标头发送会话ID cookie。