<!--#include file="../../inc/cms_class.asp"-->
<%
dim act
act = getform("act","both")
select case act
	case "sendcode" sendcode
	case "checkcode" checkcode
	case "checkmobile" checkmobile
	case "checkusername" checkusername
	case else echo getsession("smscode")
end select
function UTF2GB(UTFStr)
for Dig=1 to len(UTFStr)
   '如果UTF8编码文字以%开头则进行转换
   if mid(UTFStr,Dig,1)="%" then
      'UTF8编码文字大于8则转换为汉字
     if len(UTFStr) >= Dig+8 then
        GBStr=GBStr & ConvChinese(mid(UTFStr,Dig,9))
        Dig=Dig+8
     else
       GBStr=GBStr & mid(UTFStr,Dig,1)
     end if
   else
      GBStr=GBStr & mid(UTFStr,Dig,1)
   end if
next
UTF2GB=GBStr
end function

'GB2312转UTF8的asp代码  将GB编码文字转换为UTF8编码文字
Function toUTF8(szInput)
     Dim wch, uch, szRet
     Dim x
     Dim nAsc, nAsc2, nAsc3
     '如果输入参数为空，则退出函数
     If szInput = "" Then
         toUTF8 = szInput
         Exit Function
     End If
     '开始转换
      For x = 1 To Len(szInput)
         '利用mid函数分拆GB编码文字
         wch = Mid(szInput, x, 1)
         '利用ascW函数返回每一个GB编码文字的Unicode字符代码
         '注：asc函数返回的是ANSI 字符代码，注意区别
         nAsc = AscW(wch)
         If nAsc < 0 Then nAsc = nAsc + 65536
    
         If (nAsc And &HFF80) = 0 Then
             szRet = szRet & wch
         Else
             If (nAsc And &HF000) = 0 Then
                 uch = "%" & Hex(((nAsc \ 2 ^ 6)) Or &HC0) & Hex(nAsc And &H3F Or &H80)
                 szRet = szRet & uch
             Else
                'GB编码文字的Unicode字符代码在0800 - FFFF之间采用三字节模版
                 uch = "%" & Hex((nAsc \ 2 ^ 12) Or &HE0) & "%" & _
                             Hex((nAsc \ 2 ^ 6) And &H3F Or &H80) & "%" & _
                             Hex(nAsc And &H3F Or &H80)
                 szRet = szRet & uch
             End If
         End If
     Next         
     toUTF8 = szRet
End Function

'二进制转换为十六进制的asp代码
function c2to16(x)
    i=1
    for i=1 to len(x) step 4
       c2to16=c2to16 & hex(c2to10(mid(x,i,4)))
    next
end function

'二进制转换为十进制的asp代码
function c2to10(x)
    c2to10=0
    if x="0" then exit function
      i=0
    for i= 0 to len(x) -1
       if mid(x,len(x)-i,1)="1" then c2to10=c2to10+2^(i)
    next
end function

'十六进制转换为二进制的asp代码
function c16to2(x)
     i=0
     for i=1 to len(trim(x))
       tempstr= c10to2(cint(int("&h" & mid(x,i,1))))
       do while len(tempstr)<4
          tempstr="0" & tempstr
       loop
       c16to2=c16to2 & tempstr
    next
end function

function c10to2(x)
    mysign=sgn(x)
    x=abs(x)
    DigS=1
    do
       if x<2^DigS then
         exit do
       else
         DigS=DigS+1
       end if
    loop
    tempnum=x
    i=0
    for i=DigS to 1 step-1
       if tempnum>=2^(i-1) then
          tempnum=tempnum-2^(i-1)
          c10to2=c10to2 & "1"
       else
          c10to2=c10to2 & "0"
       end if
    next
    if mysign=-1 then c10to2="-" & c10to2
end function



function sendCode()
	dim phonenum,smscode,smsdata
	phonenum=getform("phonenum","both")
	smscode= gen_key(4)
	Session.Timeout=10
	setsession "smscode",smscode
	setsession "phonenum",phonenum
	smsdata=sendsms(phonenum,"验证码为"&smscode&",有效期10分钟，请不要把验证码泄露给其他人。")
	if smsdata="1" then
		echo "1发送成功，请4位数字验证码正确输入"
	else
		echo smsdata
	end if
End Function

Function gen_key(digits)	
	dim output,num
	dim char_array(50)
	char_array(0) = "0"
	char_array(1) = "1"
	char_array(2) = "2"
	char_array(3) = "3"
	char_array(4) = "4"
	char_array(5) = "5"
	char_array(6) = "6"
	char_array(7) = "7"
	char_array(8) = "8"
	char_array(9) = "9"
	randomize
	do while len(output) < digits
	num = char_array(Int((9 - 0 + 1) * Rnd + 0))
	output = output + num
	loop
	gen_key = output
End Function

sub checkcode	
	dim checkname,checkparam,checktype,nowcode
		checkname=getform("name","both")
		checkparam=getform("param","both")	:	if isnul(checkparam) then  die "验证码为空"
		checktype=getform("checktype","both")
		if isnul(checktype) then checktype=0
		if checkname="smscode" or checktype="smscode" then 
			nowcode=getsession("smscode")	:	if isnul(nowcode) then	die "请先获取验证码"				
		elseif checkname="code" or checktype="code" then 
			nowcode=getsession("imgcode")	:	if isnul(nowcode) then	die "验证码生成错误，请联系管理员"	
		end if
		if checkparam=nowcode then  echo "y" else echo "验证码不正确"
end sub

sub checkmobile
		dim checkname,checkparam,checktype
		checkname=getform("name","both")
		checkparam=getform("param","both")
		checktype=getform("checktype","both")
		if isnul(checktype) then checktype=0
		if checkstr(checkparam,"mobile") then
			if  checktype=0 then if ifmobileUsed(checkparam) then  echo "此号码已被使用，手机号可登录" else echo "y"
			if  checktype=1	then if ifmobileUsed(checkparam) then  echo "y" else echo "手机号不存在" 
		else
			echo "手机号码不正确"
		end if
end sub

sub checkusername
		dim checkname,checkparam,checktype
		checkname=getform("name","both")
		checkparam=getform("param","both")
		checktype=getform("checktype","both")
		if isnul(checktype) then checktype=0
		if checkstr(checkparam,"username") then
			if  checktype=0 then if ifnameUsed(checkparam) then echo "此账号已被使用,请更换" else echo "y"
			if  checktype=1	then if ifnameUsed(checkparam) then echo "y" else  echo "账号不存在" 
		else
			echo "账号格式不正确"
		end if
end sub
%>