У меня есть UIWebView, который имеет логин. Логин представляет собой скрипт PHP и имеет функцию setcookie (). Файлы cookie устанавливаются при входе в систему (в веб-просмотре), но когда я закрываю приложение (в веб-просмотре) и снова открываю его. Файлы cookie PHP отключаются, и я должен снова войти в систему.
Вот код PHP
setcookie($_SESSION['id'], $_SESSION['user_name'], time() + (86400 * 3), "/");
setcookie($_SESSION['pro_pic'], $_SESSION['status'], time() + (86400 * 3), "/");
setcookie($_SESSION['pro_pic'], $_SESSION['email'], time() + (86400 * 3), "/");
Код для UIWebivew
- (void)viewDidLoad
{
[super viewDidLoad];
UIWebView *webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
NSString *url=@"http://server.bithumor.co/bitpicks/index1.php";
NSURL *nsurl=[NSURL URLWithString:url];
NSURLRequest *nsrequest=[NSURLRequest requestWithURL:nsurl];
[webview loadRequest:nsrequest];
webview.scrollView.bounces = NO;
[self.view addSubview:webview];
[self.view bringSubviewToFront:webview];
}
В обычном браузере Safari файлы cookie остаются установленными и работают отлично. Но это не работает в UIWebView.
Какой целевой код (только) я использую, чтобы сохранить файлы cookie PHP, чтобы мне не приходилось входить снова?
как указано здесь Продолжайте терять cookie сессии php в UIWebView Я обновил ваш код:
- (void)viewDidLoad
{
[super viewDidLoad];
UIWebView *webview=[[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width,self.view.frame.size.height)];
NSString *url=@"http://server.bithumor.co/bitpicks/index1.php";
NSURL *nsurl=[NSURL URLWithString:url];
NSMutableURLRequest *nsrequest=[NSMutableURLRequest requestWithURL:nsurl];
NSString *cookiesSaved = [[NSUserDefaults standardUserDefaults] objectForKey:@"cookies"];
NSMutableString *cookieStringToSet = (cookiesSaved ? [NSMutableString stringWithString:cookiesSaved] : [NSMutableString new]);
NSArray *cookiesToSet = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:nsurl];
for (NSHTTPCookie *cookie in cookiesToSet) {
if ([cookieStringToSet rangeOfString:cookie.name].location == NSNotFound)
{
[cookieStringToSet appendFormat:@"%@=%@;", cookie.name, cookie.value];
}
}
[[NSUserDefaults standardUserDefaults] setObject:cookieStringToSet forKey:@"cookies"];
[[NSUserDefaults standardUserDefaults] synchronize];
[webview loadRequest:nsrequest];
webview.scrollView.bounces = NO;
[self.view addSubview:webview];
[self.view bringSubviewToFront:webview];
}
Других решений пока нет …