void Stage2() // setonline { char *phone, *password, *p; char buf[MAXLEN]; MYSQL_RES *mysql_res; MYSQL_ROW row; phone = GetValue("phone"); if ((phone == NULL) || (phone[0] == 0)) DisplayStage('0', "输入的电话号码为空", 1); CheckPhone(phone); strncpy(PHONE, phone, 12); password = GetValue("password"); if ((password == NULL) || strlen(password) != 6) DisplayStage('1', "请输入密码", 1); snprintf(buf, MAXLEN, "select pass from PhonePass where phone='%s' and valid>now()", phone); mysql_res = ExecSQL(buf, 1); row = mysql_fetch_row(mysql_res); if (row == NULL) DisplayStage('0', "未查到一周内的电话号码信息,请重新输入", 1); if (strcmp(row[0], password) != 0) { DisplayStage('1', "密码错误,请重新输入", 1); } p = GetValue("timespan"); if ((p == NULL) || (*p == 0)) p = "1"; else *(p + 1) = 0; if ((*p != '1') && (*p != '7')) p = "1"; snprintf(buf, MAXLEN, "replace into MACPhone values('%s','%s',now(), date_add(now(), interval %s day))", MAC, PHONE, p); ExecSQL(buf, 0); snprintf(buf, MAXLEN, "insert into Log values('%s','%s','%s',now(),'online %s day')", remote_addr(), MAC, PHONE, p); ExecSQL(buf, 0); IPOnline((*p - '0') * 24 * 3600); }
void Stage1() // sendsms, dispay input page { char *phone,*p; char buf[MAXLEN]; char pass[MAXLEN]; MYSQL_RES *mysql_res; MYSQL_ROW row; FILE *fp; p = GetValue("changenum"); if ( p ) DisplayStage('0',"请输入电话号码",0); phone = GetValue("phone"); if( phone==NULL || phone[0]==0 ) DisplayStage('0',"输入的电话号码为空",1); CheckPhone(phone); strncpy(PHONE,phone,12); p = GetValue("havepass"); if(p) DisplayStage('1',"请输入密码",0); // 检查该设备当天是否发送过短信, 每天最多 MAXPERMAC snprintf(buf,MAXLEN,"select count from MACcount where MAC='%s' and sendday=curdate()",MAC); mysql_res = ExecSQL(buf,1); row = mysql_fetch_row(mysql_res); if( row ) { if( atoi(row[0]) >= MAXPERMAC ) { sprintf(buf,"每台设备每天允许%d手机登录,今天已经使用%s次,请换台设备再试",MAXPERMAC,row[0]); DisplayStage('0',buf,1); } snprintf(buf,MAXLEN,"update MACcount set count=count+1 where MAC='%s' and sendday=curdate()",MAC); ExecSQL(buf,0); } else { snprintf(buf,MAXLEN,"replace into MACcount values ('%s', now(), 1)",MAC); ExecSQL(buf,0); } // 检查手机当天是否发送过短信, 每天最多 MAXPERPHONE snprintf(buf,MAXLEN,"select count from Phonecount where phone='%s' and sendday=curdate()",PHONE); mysql_res = ExecSQL(buf,1); row = mysql_fetch_row(mysql_res); if( row ) { if( atoi(row[0]) >= MAXPERPHONE ) { sprintf(buf,"每个手机每天允许%d短信,今天已经使用%s次,请换手机再试",MAXPERPHONE,row[0]); DisplayStage('0',buf,1); } snprintf(buf,MAXLEN,"update Phonecount set count=count+1 where phone='%s' and sendday=curdate()",PHONE); ExecSQL(buf,0); } else { snprintf(buf,MAXLEN,"replace into Phonecount values ('%s', now(), 1)",PHONE); ExecSQL(buf,0); } snprintf(buf,MAXLEN,"select pass from PhonePass where phone='%s' and now()<valid",PHONE); mysql_res = ExecSQL(buf,1); row = mysql_fetch_row(mysql_res); if( row==NULL ) { srand(time(NULL)); int i; for(i=0;i<6;i++) { int r; r=rand(); pass[i]='0' + r%10; } pass[6]=0; } else strncpy(pass,row[0],7); snprintf(buf,MAXLEN,"replace into PhonePass values ('%s', '%s', date_add(now(), interval 8 day) )",PHONE,pass); ExecSQL(buf,0); snprintf(buf,MAXLEN,"php /usr/src/sendsms/sendsms.php %s \"%s是您在中国科大访客WLAN密码,一周内都可以使用本密码登录,请保留本短信。\" 2>/dev/null",PHONE,pass); fp=popen(buf,"r"); if(fp==NULL){ snprintf(buf,MAXLEN,"insert into Log values('%s','%s','%s',now(),'send pass error')", remote_addr(), MAC, PHONE); ExecSQL(buf,0); DisplayStage('0',"密码发送失败",1); } fgets(buf,MAXLEN,fp); if(strncmp(buf,"OK",2)==0) { snprintf(buf,MAXLEN,"insert into Log values('%s','%s','%s',now(),'send pass ok')", remote_addr(), MAC, PHONE); ExecSQL(buf,0); DisplayStage('1',"请输入手机上收到的密码",0); } else { char tmp[MAXLEN]; strncpy(tmp,buf,MAXLEN); snprintf(buf,MAXLEN,"insert into Log values('%s','%s','%s',now(),'send pass error %s')", remote_addr(), MAC, PHONE,tmp); ExecSQL(buf,0); DisplayStage('0',tmp,1); } }