1. 程式人生 > >【IOS】利用ASIHTTPRequest 實現一個簡單的登陸驗證

【IOS】利用ASIHTTPRequest 實現一個簡單的登陸驗證

【原創作品, 歡迎轉載,轉載請在明顯處註明! 謝謝。

今天給大家帶來一個簡單的登陸驗證,用的是ASIHttpRequest 這個開源類庫,使用的方法很簡單,從網上下載下來以後,新增到專案中,並新增一下這些框架。

下面上程式碼

// // ViewController.h // NetDemo // // Created by zhouhaifeng on 12-6-6. // Copyright (c) 2012年 zhouhaifeng. All rights reserved. // #import <UIKit/UIKit.h> #import "ASIHttpHeaders.h" #import "CJSONDeserializer.h" #import "tooles.h" @interface ViewController : UIViewController<ASIHTTPRequestDelegate> { UITextField *username; UITextField *password; } @property (nonatomic,retain) UITextField *username; @property (nonatomic,retain) UITextField *password; @end // // ViewController.m // NetDemo // // Created by zhouhaifeng on 12-6-6. // Copyright (c) 2012年 zhouhaifeng. All rights reserved. // #import "ViewController.h" #define HOSTURL @"http://192.168.1.105/NetDemo/index.php"; @interface ViewController () -(void) login:(id)sender; -(void) GetErr:(ASIHTTPRequest *)request; -(void) GetResult:(ASIHTTPRequest *)request; @end @implementation ViewController @synthesize username,password; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UILabel *txt1 = [[UILabel alloc] initWithFrame:CGRectMake(30,100,70,30)]; [txt1 setText:@"使用者名稱"]; [txt1 setBackgroundColor:[UIColor clearColor]]; [self.view addSubview:txt1]; UILabel *txt2 = [[UILabel alloc] initWithFrame:CGRectMake(30,140,70,30)]; [txt2 setText:@"密 碼"]; [txt2 setBackgroundColor:[UIColor clearColor]]; [self.view addSubview:txt2]; username = [[UITextField alloc]initWithFrame:CGRectMake(120,100, 150, 30)]; [username setBorderStyle:UITextBorderStyleRoundedRect]; [self.view addSubview:username]; password = [[UITextField alloc]initWithFrame:CGRectMake(120,140, 150, 30)]; [password setBorderStyle:UITextBorderStyleRoundedRect]; [password setSecureTextEntry:YES]; [self.view addSubview:password]; UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [btn setTitle:@"提交" forState:UIControlStateNormal]; [btn addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside]; [btn setFrame:CGRectMake(90, 180, 150, 40)]; [self.view addSubview:btn]; } -(void) login:(id)sender { //表單提交前的驗證 if (username.text == nil||password.text==nil ) { [tooles MsgBox:@"使用者名稱或密碼不能為空!"]; return; } //隱藏鍵盤 [username resignFirstResponder]; [password resignFirstResponder]; // [tooles showHUD:@"正在登陸...."]; NSString *urlstr = HOSTURL; NSURL *myurl = [NSURL URLWithString:urlstr]; ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:myurl]; //設定表單提交項 [request setPostValue:username.text forKey:@"username"]; [request setPostValue:username.text forKey:@"password"]; [request setDelegate:self]; [request setDidFinishSelector:@selector(GetResult:)]; [request setDidFailSelector:@selector(GetErr:)]; [request startAsynchronous]; } //獲取請求結果 - (void)GetResult:(ASIHTTPRequest *)request{ [tooles removeHUD]; NSData *data =[request responseData]; NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:data error:nil];

//

輸出接收到的字串

NSString *str = [NSStringstringWithUTF8String:[data bytes]];

NSLog(@"%@",str);

//判斷是否登陸成功

if ([dictionary objectForKey:@"yes"]) { [tooles MsgBox:[dictionary objectForKey:@"yes"]]; return; }else if ([dictionary objectForKey:@"error"] != [NSNull null]) { [tooles MsgBox:[dictionary objectForKey:@"error"]]; return; } } //連線錯誤呼叫這個函式 - (void) GetErr:(ASIHTTPRequest *)request{ [tooles removeHUD]; [tooles MsgBox:@"網路錯誤,連線不到伺服器"]; } - (void)viewDidUnload { [super viewDidUnload]; // Release any retained subviews of the main view. } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } -(void) dealloc { [username release]; [password release]; [super dealloc]; } @end php端驗證的程式碼,隨便寫了下,後面就是返回一個JSON格式的字串。
<?php if($_POST['username'] == "admin" && $_POST['password'] == "admin") { echo '{"yes":"登陸成功"}'; }else { echo '{"error":"使用者名稱或密碼錯誤"}'; }; ?>