一、前言
随着时代的发展,验证码这种东西越来越普遍,任何一款软件都可以通过发验证码来提 高软件的安全,为了更好的达到实名制的效果,手机短信验证码开始走入了我们的生活,各种软件发送短信验证码。这个技术已经十分的普遍了,小编也在前一段时间内,接触了这个技术,下面分享给大家。
二、云片网介绍
在介绍这个技术之前,我们要先介绍——云片短信平台。
云片网是一个第三方的短信服务平台,说道第三方就不可避免要付费了。所以发送短信也是要付费来的。
可能大家都比较关心下面几个问题:
如何接入云片发送短信?
首先在云片官网注册帐户,然后进入用户后台查看您的APIKEY,之后联系您网站的技术参考云片的 API文档,进行接入,调试成功后就可以使用云片发送短信了。
在注册云片时,我们会送您10条测试短信,您可以用测试短信先进行测试。- 什么是图片验证码?为什么要加图片验证码?
图片验证码是用来确认注册人是真实有效,并非机器。例如在购买火车票时,在提交订单前需选择图片来验证身份,这个就是典型的图片验证码。
加图片验证码的目的是为了防止轰炸软件的恶意攻击。
云片的短信价格?
短信按照套餐充值,价格详情,最低55元起充,不议价。如果月发送量超过10万条,可联系在线客服。
三、代码展示
下面小编用C#来给大家展示一下这个的核心的代码:
string userid = "4933";
string account = "k000346"; //账号
string password = "pixmm1234"; //密码
string str = this.RndNum();
Context.Session["code"] = str;
string content = "注册验证码为:" + str + "【China广告邦】";
string sendTime = "";
Encoding myEncoding = Encoding.GetEncoding("UTF-8");
string param = "action=send&userid=" + userid + "&account=" + HttpUtility.UrlEncode(account, myEncoding) + "&password=" + HttpUtility.UrlEncode(password, myEncoding) + "&mobile=" + tel + "&content=" + HttpUtility.UrlEncode(content, myEncoding) + "&sendTime=" + HttpUtility.UrlEncode(sendTime, myEncoding) + "&mobilenumber=1&countnumber=1&telephonenumber=0";
byte[] postBytes = Encoding.ASCII.GetBytes(param);
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create("http://xtx.telhk.cn:8080/sms.aspx");
req.Method = "POST";
req.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
req.ContentLength = postBytes.Length;
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(postBytes, 0, postBytes.Length);
}
System.Xml.XmlDocument xmlDoc = new System.Xml.XmlDocument();
using (WebResponse wr = req.GetResponse())
{
StreamReader sr = new StreamReader(wr.GetResponseStream(), System.Text.Encoding.UTF8);
System.IO.StreamReader xmlStreamReader = sr;
xmlDoc.Load(xmlStreamReader);
}
if (xmlDoc == null)
{
Maticsoft.Common.MessageBox.Show(this, "发送失败,请检查您的手机号输入是否正确,或稍后重试~");
}
else
{
String message = xmlDoc.GetElementsByTagName("message").Item(0).InnerText.ToString();
if (message == "ok")
{
Maticsoft.Common.MessageBox.Show(this, "发送成功,请注意查收~");
}
else
{
Maticsoft.Common.MessageBox.Show(this, "发送失败,请检查您的手机号输入是否正确,或稍后重试~");
}
}
生成随机的字母或数字:
#region 生成随机的字母-王雷-2016年7月4日17:29:54
/// <summary>
/// 生成随机的字母
/// </summary>
/// <param name="VcodeNum">生成字母的个数</param>
/// <returns>string</returns>
private string RndNum()
{
string Vchar = "0,1,2,3,4,5,6,7,8,9";
string[] VcArray = Vchar.Split(',');
string VNum = ""; //由于字符串很短,就不用StringBuilder了
int temp = -1; //记录上次随机数值,尽量避免生产几个一样的随机数
//采用一个简单的算法以保证生成随机数的不同
Random rand = new Random();
for (int i = 1; i < 7; i++)
{
if (temp != -1)
{
rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks));
}
int t = rand.Next(VcArray.Length);
if (temp != -1 && temp == t)
{
return RndNum();
}
temp = t;
VNum += VcArray[t];
}
return VNum;
}
#endregion
如果想用其他语言的,请移步
四、小结
通过这次的学习,刚做出来的时候,感觉真的很高大上,真的很有意思,通过手机验证码有更加的安全,可靠。很不错的技术,加油!