手机验证码

 

一个软件在用户注册的时候,往往是需要验证码的。也就是要先把验证码发在手机上,然后,用户在软件中输入,若验证码正确,注册用户才可登陆。

 

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    //BOOL值默认为NO。
    NSLog(@"---timeStart--%d-----",timeStart);
    
    //发送验证码到手机上-Button
    UIButton *sendYZM=[UIButton buttonWithType:UIButtonTypeCustom];
    [sendYZM setFrame:CGRectMake(50, 100, 250, 50)];
    [sendYZM setBackgroundColor:[UIColor redColor]];
    [sendYZM setTitle:@"发送注册验证码到手机上" forState:UIControlStateNormal];
    [sendYZM setTitleColor:[UIColor colorWithRed:66/255.0 green:66/255.0 blue:221/255.0 alpha:1.0] forState:UIControlStateNormal];
    [sendYZM addTarget:self action:@selector(doClickButton:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:sendYZM];

}
-(void)doClickButton:(UIButton *)btn
{
    timeStart=YES;
    sysTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES];
    // 可以通过fire这个方法去触发timer,即使timer的firing time没有到达
    [sysTimer fire];
    [self getAuthCode];

}

//随时更新验证码发送的时间
- (void)timerFireMethod:(NSTimer *)timer

{
    //定义一个NSCalendar对象
    NSCalendar *cal = [NSCalendar currentCalendar];
    //初始化目标时间...
    NSDateComponents *endTime = [[NSDateComponents alloc] init];
    //得到当前时间
    NSDate *today = [NSDate date];
    NSDate *date = [NSDate dateWithTimeInterval:60 sinceDate:today];
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
    NSString *dateString = [dateFormatter stringFromDate:date];
    
    static int year;
    static int month;
    static int day;
    static int hour;
    static int minute;
    static int second;
    
    if(timeStart) {
        //从NSDate中取出年月日,时分秒,但是只能取一次
        year = [[dateString substringWithRange:NSMakeRange(0, 4)] intValue];
        month = [[dateString substringWithRange:NSMakeRange(5, 2)] intValue];
        day = [[dateString substringWithRange:NSMakeRange(8, 2)] intValue];
        hour = [[dateString substringWithRange:NSMakeRange(11, 2)] intValue];
        minute = [[dateString substringWithRange:NSMakeRange(14, 2)] intValue];
        second = [[dateString substringWithRange:NSMakeRange(17, 2)] intValue];
        timeStart = NO;
    }
    
    [endTime setYear:year];
    [endTime setMonth:month];
    [endTime setDay:day];
    [endTime setHour:hour];
    [endTime setMinute:minute];
    [endTime setSecond:second];
    
    //把目标时间装载入date
    NSDate *todate = [cal dateFromComponents:endTime];
    
    //用来得到具体的时差,是为了统一成北京时间
    unsigned int unitFlags = NSYearCalendarUnit| NSMonthCalendarUnit| NSDayCalendarUnit| NSHourCalendarUnit| NSMinuteCalendarUnit| NSSecondCalendarUnit;
    
    NSDateComponents *d = [cal components:unitFlags fromDate:today toDate:todate options:0];
    NSLog(@"----%d---",[d second]);
    if([d second] < 60 && [d second] > 0) {
        NSString *miao = [NSString stringWithFormat:@"%d",[d second]];
        NSLog(@"---miao----%@",miao);
        
        UIButton *sendYZM=[UIButton buttonWithType:UIButtonTypeCustom];
        [sendYZM setFrame:CGRectMake(50, 100, 250, 50)];
        [sendYZM setBackgroundColor:[UIColor redColor]];
        [sendYZM setTitle:[NSString stringWithFormat:@"重新发送验证码(%@秒)",miao] forState:UIControlStateNormal];
        [sendYZM setTitleColor:[UIColor colorWithRed:66/255.0 green:66/255.0 blue:221/255.0 alpha:1.0] forState:UIControlStateNormal];
        [self.view addSubview:sendYZM];
       
    }else if([d second] == 0) {
        [sysTimer invalidate];
        
        UIButton *sendYZM=[UIButton buttonWithType:UIButtonTypeCustom];
        [sendYZM setFrame:CGRectMake(50, 100, 250, 50)];
        [sendYZM setBackgroundColor:[UIColor redColor]];
        [sendYZM setTitle:@"重新发送验证码" forState:UIControlStateNormal];
        [sendYZM setTitleColor:[UIColor colorWithRed:66/255.0 green:66/255.0 blue:221/255.0 alpha:1.0] forState:UIControlStateNormal];
        [sendYZM addTarget:self action:@selector(doClickButton:) forControlEvents:UIControlEventTouchUpInside];
        [self.view addSubview:sendYZM];
    }
}
- (void)getAuthCode{
    //将电话号码发送到服务器,服务器返回验证码。当验证码和注册用户输入一样的时候,则可以进行下一步操作。
}

 

 

 

手机验证码,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。