今天给大家带来一个简单的登陆验证,用的是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.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];
- <P class=p1><SPAN class=s1> </SPAN><SPAN class=s2>//</SPAN>输出接收到的字符串</P><P class=p2><SPAN class=s4> NSString</SPAN><SPAN class=s3> *str = [</SPAN><SPAN class=s4>NSString</SPAN><SPAN class=s3> </SPAN>stringWithUTF8String<SPAN class=s3>:[data </SPAN>bytes<SPAN class=s3>]];</SPAN></P><P class=p3> <SPAN class=s5>NSLog</SPAN>(<SPAN class=s6>@"%@"</SPAN>,str);</P><P class=p1><SPAN class=s1> </SPAN><SPAN class=s2>//</SPAN>判断是否登陆成功</P>
- 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
//
// 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":"用户名或密码错误"}';
- };
- ?>
<?php
if($_POST['username'] == "admin" && $_POST['password'] == "admin")
{
echo '{"yes":"登陆成功"}';
}else
{
echo '{"error":"用户名或密码错误"}';
};
?>