>  기사  >  CMS 튜토리얼  >  DreamWeaver의 SMS 인증코드 기능을 구현하는 방법

DreamWeaver의 SMS 인증코드 기능을 구현하는 방법

藏色散人
藏色散人원래의
2019-12-13 09:50:303119검색

DreamWeaver의 SMS 인증코드 기능을 구현하는 방법

DreamWeaver의 SMS 인증 코드 기능을 구현하는 방법은 무엇입니까?

대부분의 웹사이트에는 이제 SMS 확인 코드가 필요합니다. DreamWeaver에는 공식적으로 SMS 확인 코드 플러그인이 없기 때문에 하나는 Alibaba Cloud의 SMS 확인 코드 인터페이스를 사용하고 다른 하나는 Alibaba의 SMS를 사용합니다. 인증 코드 인터페이스 중 하나는 Alibaba Communication SMS 인증 코드 인터페이스를 사용하고, 다른 하나는 Yunzhixun의 SMS 인터페이스를 사용합니다.

추천 학습: Dreamweaver cms

다음 튜토리얼에는 2개의 Dreamweaver SMS 확인 코드 인터페이스가 포함되어 있습니다.

드림위버 회원의 SMS 등록 시 수정해야 할 사항:

1. 다중 전송을 방지하기 위해 인증 코드를 기록하는 테이블을 생성해야 합니다. 여기서 전화코드 테이블이 생성됩니다.

2. member/templets/reg-new.htm (등록 템플릿에 요소 추가)

3. member/templets/js/reg_new.js (휴대폰 번호 확인)

4. member/index_do.php (에 따름)

5. member/reg_new.php (확인, 기록)

a 액세스하려면 Alibaba Cloud SMS 인터페이스를 사용하세요.

Alibaba Cloud를 삽입해야 합니다. member/index_do.php 인터페이스 코드의 해당 위치에 있는 SMS입니다. 특히 Alibaba Cloud SMS의 공식 데모 문서는 마스터가 작성했기 때문에 일반 사람들이 이를 사용할 때 네임스페이스 오류를 보고할 것이라는 점에 유의해야 합니다. 또한 이제 SMS 템플릿을 업데이트해야 합니다. Alibaba SMS 템플릿 검토는 매우 엄격하며 이전에는 이 문제가 허용되지 않았습니다. 따라서 감사에 실패하면 변수를 줄여야 합니다. (현재는 더 이상 Alibaba Cloud SMS 인터페이스를 활성화할 수 없습니다. 새로 오픈된 Alibaba Cloud SMS 인터페이스는 이 코드를 사용할 수 없습니다. 오랫동안 Alibaba Cloud SMS를 개설한 사용자에게만 적합합니다.)

function getrandchar($length){
    $str = null;
    $strPol = "0123456789abcdefghijklmnopqrstuvwxyz";
    $max = strlen($strPol)-1;
        for($i=0;$i<$length;$i++){
        $str.=$strPol[rand(0,$max)];
        }
        return $str;
    }
    $code = getrandchar(5);
  
    require_once(DEDEINC.&#39;/aliyun-php-sdk-core/Config.php&#39;);
    use Sms\Request\V20160927 as Sms;
    $iClientProfile = DefaultProfile::getProfile("cn-shenzhen", "your accessKey", "your accessSecret"); //登录阿里云查看: "your accessKey", "your accessSecret"
    $client = new DefaultAcsClient($iClientProfile);   
    $request = new Sms\SingleSendSmsRequest();
    $request->setSignName("签名");/*签名名称*/
    $request->setTemplateCode("SMS_1111");/*模板code*/
    $request->setRecNum($phone);/*目标手机号*/
    $request->setParamString("{\"code\":\"$code\",\"tel\":\"电话号码\"}");/*模板变量,请确保跟审核过的短信模版变量一致,数字一定要转换为字符串*/
    try {
        $response = $client->getAcsResponse($request);
        print_r($response);
    }
    catch (ClientException  $e) {
        print_r($e->getErrorCode());  
        print_r($e->getErrorMessage());  
    }
    catch (ServerException  $e) {  
        print_r($e->getErrorCode());  
        print_r($e->getErrorMessage());
    }
      
    $inquery = " INSERT INTO `dede_phonecode` (`ip`,`phone`,`phonecode`,`used`,`sendtime`) VALUES ( &#39;$ip&#39;,&#39;$to&#39;,&#39;$code&#39;,&#39;1&#39;,&#39;$nowtime&#39;); ";
    $rs = $dsql->ExecuteNoneQuery2($inquery);
    if( $rs = 1 ){
        ShowMsg(&#39;发送成功,请注意查收!&#39;,&#39;-1&#39;);
        exit();
    }
    exit();

첨부된 내용은 다음과 같습니다. Alibaba Cloud SMS 템플릿: 확인 코드: ${code}. 귀하가 등록을 하지 않은 경우 이 메시지를 무시하십시오. 궁금한 점이 있으면 문의하세요! 전화: ${tel}

b. Alibaba Dayu의 SMS 인터페이스를 사용하여 액세스하세요.

마찬가지로 member/index_do.php의 해당 위치에 다음 코드를 삽입해야 합니다.

function getrandchar($length){
$str = null;
//$strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
$strPol = "0123456789abcdefghijklmnopqrstuvwxyz";
$max = strlen($strPol)-1;
for($i=0;$i<$length;$i++){
$str.=$strPol[rand(0,$max)];
}
return $str;
}
$code = getrandchar(5);
  
require_once(DEDEINC.&#39;/alidayu-php-sdk/TopSdk.php&#39;);
$client = new TopClient;
$client ->appkey = &#39;111111&#39; ; //登录阿里大于查看appkey。
$client ->secretKey = &#39;aaaaaaaaaaaaaa&#39; ; //登录阿里大于查看secret。
$req = new AlibabaAliqinFcSmsNumSendRequest;
$req ->setExtend( "" );
$req ->setSmsType( "normal" );
$req ->setSmsFreeSignName( "城子居" ); /*签名名称*/
$req ->setSmsParam( "{\"code\":\"$code\",\"name\":\"注册\"}" ); /*模板变量,请确保跟审核过的短信模版变量一致,数字一定要转换为字符串*/
$req ->setRecNum($phone);/*目标手机号*/
$req ->setSmsTemplateCode( "SMS_1111111" );//登录阿里大于查看/*模板ID编号*/
$resp = $client ->execute( $req );
  
$inquery = " INSERT INTO `imm_phonecode` (`ip`,`phone`,`phonecode`,`used`,`sendtime`)  VALUES ( &#39;$ip&#39;,&#39;$to&#39;,&#39;$code&#39;,&#39;1&#39;,&#39;$nowtime&#39;); ";
$rs = $dsql->ExecuteNoneQuery2($inquery);
if( $rs = 1 ){
ShowMsg(&#39;发送成功,请注意查收!&#39;,&#39;-1&#39;);
exit();
}
exit();

c. 최신 Alibaba Communication SMS 인터페이스를 사용하여 액세스하세요.

function getrandchar($length){
$str = null;
//$strPol = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz";
$strPol = "0123456789";
$max = strlen($strPol)-1;
for($i=0;$i<$length;$i++){
$str.=$strPol[rand(0,$max)];
}
return $str;
}
$number = getrandchar(4);
  
require_once(DEDEINC.&#39;/aliyun-php-sdk-core/Config.php&#39;);
require_once(DEDEINC.&#39;/Dysmsapi/Request/V20170525/SendSmsRequest.php&#39;);
require_once(DEDEINC.&#39;/Dysmsapi/Request/V20170525/QuerySendDetailsRequest.php&#39;);
  
function sendSms() {
global $phone, $number;
  
//此处需要替换成自己的AK信息
$accessKeyId = "yourAccessKeyId";
$accessKeySecret = "yourAccessKeySecret";
//短信API产品名
$product = "Dysmsapi";
//短信API产品域名
$domain = "dysmsapi.aliyuncs.com";
//暂时不支持多Region
$region = "cn-beijing";
  
//初始化访问的acsCleint
$profile = DefaultProfile::getProfile($region, $accessKeyId, $accessKeySecret);
DefaultProfile::addEndpoint("cn-beijing", "cn-beijing", $product, $domain);
$acsClient= new DefaultAcsClient($profile);
  
$request = new Dysmsapi\Request\V20170525\SendSmsRequest;
//必填-短信接收号码
$request->setPhoneNumbers($phone);
//必填-短信签名
$request->setSignName("99商铺网");
//必填-短信模板Code
$request->setTemplateCode("SMS_74725029");
//选填-假如模板中存在变量需要替换则为必填(JSON格式)
$request->setTemplateParam("{\"number\":\"$number\"}");
//选填-发送短信流水号
$request->setOutId("1234");
  
//发起访问请求
$acsResponse = $acsClient->getAcsResponse($request);
}
  
sendSms();
  
$inquery = " INSERT INTO `imm_phonecode` (`ip`,`phone`,`phonecode`,`used`,`sendtime`)  VALUES ( &#39;$ip&#39;,&#39;$phone&#39;,&#39;$number&#39;,&#39;1&#39;,&#39;$nowtime&#39;); ";
$rs = $dsql->ExecuteNoneQuery2($inquery);
if( $rs = 1 ){
echo "发送成功,请注意查收!";
exit();
}
exit();

여기에 Alibaba의 세 가지 SMS 인터페이스가 모두 있습니다. 해당 SDK는 공식 Alibaba Cloud에서 다운로드해야 합니다.

d. Yunzhixun SMS 인터페이스를 사용하여 액세스:

마찬가지로 member/index_do.php의 해당 위치에 Yunzhixun SMS 인터페이스 코드를 삽입해야 합니다.

function getrandchar($length){
$str = null;
$strPol = "0123456789abcdefghijklmnopqrstuvwxyz";
$max = strlen($strPol)-1;
for($i=0;$i<$length;$i++){
$str.=$strPol[rand(0,$max)];
}
return $str;
}
require_once(DEDEINC.&#39;/ucpaas.class.php&#39;);
$options[&#39;accountsid&#39;]=&#39;&#39;;  //对应ucpaas.com用户ID
$options[&#39;token&#39;]=&#39;&#39;;  //对应ucpaas.com里面的用户token
$ucpass = new Ucpaas($options);
$appId = ""; //对应ucpaas.com里面的项目ID
$to = $phone;
$templateId = ""; //对应ucpaas.com里面的短信模版ID
$code = getrandchar(5);
$param= $code.&#39;,短信模版参数2&#39;.&#39;,短信模版参数3&#39;; // $code为生成的验证码,短信模版参数2,短信模版参数3,参数之间用英文逗号间隔。
$ucpass->templateSMS($appId,$to,$templateId,$param);
  
$inquery = " INSERT INTO `dede_phonecode` (`ip`,`phone`,`phonecode`,`used`,`sendtime`) VALUES ( &#39;$ip&#39;,&#39;$to&#39;,&#39;$code&#39;,&#39;1&#39;,&#39;$nowtime&#39;); ";
$rs = $dsql->ExecuteNoneQuery2($inquery);
if( $rs = 1 ){
ShowMsg(&#39;发送成功,请注意查收!&#39;,&#39;-1&#39;);
exit();
}
exit();

마찬가지로 SMS 템플릿을 첨부하세요: 인증 코드: {1}. 귀하는 {2}에 있습니다. 이에 대한 책임이 없다면 이 메시지를 무시하십시오. 궁금한 점이 있으면 전화: {3}

로 문의하세요.

위 내용은 DreamWeaver의 SMS 인증코드 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.