短信验证码 我用的是 短信宝的 网址:http://www.smsbao.com
注册账号后购买短信次数,把账号密码存在单独的数据库里面,
username对应短信宝账号。password对应密码 加密方式:MD5, text是发送短信的内容。
html页面:
因为我这边账号就是手机号,所以没有输入手机号的文本框
点击触发控制器里面的代码:
$statusStr = array(
"0" => "短信发送成功",
"-1" => "参数不全",
"-2" => "服务器空间不支持,请确认支持curl或者fsocket,联系您的空间商解决或者更换空间!",
"30" => "密码错误",
"40" => "账号不存在",
"41" => "余额不足",
"42" => "帐户已过期",
"43" => "IP地址限制",
"50" => "内容含有敏感词"
);
// 密码字符集,生成随机6位数验证码
$chars = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
// 在 $chars 中随机取 $length 个数组元素键名
$keys = array_rand($chars, 6);
$password = '';
for($i = 0; $i < 6; $i++)
{
// 将 $length 个数组元素连接成字符串
$password .= $chars[$keys[$i]];
}
$phone = input('post.phone');//要发送短信的手机号码
$sms = Db::name('smscode')->find(array('id'=>'1'));//查询数据库里面储存的验证码信息
$smsapi = "http://api.smsbao.com/";
$user = $sms['username']; //短信平台帐号
$pass = $sms['password']; //短信平台密码
Session::set('smscode',$password);//将生成的随机验证码 储存在Session里面
$content = str_replace("000000",$password,$sms['text']);//将随机验证码替换掉数据库里面发送 内容的000000,发送的短信内容
$sendurl = $smsapi."sms?u=".$user."&p=".$pass."&m=".$phone."&c=".urlencode($content);
$result =file_get_contents($sendurl) ;//发送之后的返回值
if($result=='0')
{
//输出,短信发送成功
echo $statusStr[$result];
//此时可以更新发送状态
}else{
//输出 短信发送失败原因
echo $statusStr[$result];
}