Heim > CMS-Tutorial > DEDECMS > Hauptteil

So implementieren Sie die SMS-Bestätigungscode-Funktion von DreamWeaver

藏色散人
Freigeben: 2019-12-13 09:50:30
Original
3108 Leute haben es durchsucht

So implementieren Sie die SMS-Bestätigungscode-Funktion von DreamWeaver

Wie implementiert man die SMS-Bestätigungscodefunktion von Dreamweaver?

Heutzutage erfordern die meisten Websites die Verwendung von SMS-Bestätigungscodes. Da DreamWeaver offiziell kein SMS-Bestätigungscode-Plug-in hat, haben wir mehrere SMS-Bestätigungscode-Plug-ins geschrieben Cloud-SMS-Bestätigungscode-Schnittstellen, eine verwendet die SMS-Bestätigungscode-Schnittstelle von Alibaba, eine verwendet die SMS-Bestätigungscode-Schnittstelle von Alibaba Communications und die andere verwendet die SMS-Schnittstelle von Yunzhixun.

Empfohlene Lerninhalte: Dreamweaver cms

Das folgende Tutorial enthält 2 Schnittstellen für Dreamweaver-SMS-Bestätigungscodes.

Orte, die für die SMS-Registrierung von Dreamweaver-Mitgliedern geändert werden müssen:

1. Es muss eine Tabelle erstellt werden, um den Bestätigungscode aufzuzeichnen, um ein mehrfaches Senden zu verhindern.

2. member/templets/reg-new.htm (Elemente zur Registrierungsvorlage hinzufügen)

3. member/templets/js/reg_new.js (Mobiltelefonnummer überprüfen)

4. member/index_do.php (Bestimmen Sie, ob der Registrierungsbestätigungscode basierend auf den Hintergrundeinstellungen gesendet werden soll)

5. member/reg_new.php (Verifizierung, Datensatz)

a Zugriff auf die Alibaba Cloud SMS-Schnittstelle:

Sie müssen den Alibaba Cloud SMS-Schnittstellencode an der entsprechenden Stelle von member/index_do.php einfügen. Es ist besonders wichtig zu beachten, dass das offizielle Demo-Dokument von Alibaba Cloud SMS von einem Meister geschrieben wurde, sodass normale Benutzer bei der Verwendung Namespace-Fehler melden. Dies muss beachtet werden. Darüber hinaus muss die SMS-Vorlage jetzt aktualisiert werden. Die Überprüfung der SMS-Vorlage ist sehr streng und andere Variablen sind nicht zulässig. Daher müssen die Variablen reduziert werden, wenn die Prüfung fehlschlägt. (Derzeit ist es nicht mehr möglich, die Alibaba Cloud SMS-Schnittstelle zu öffnen. Die neu eröffnete Alibaba Cloud SMS-Schnittstelle kann diesen Code nicht verwenden. Er ist nur für diejenigen geeignet, die die Alibaba Cloud SMS-Schnittstelle schon vor langer Zeit geöffnet haben.)

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();
Nach dem Login kopieren

Im Anhang finden Sie die SMS-Vorlage von Alibaba Cloud: Bestätigungscode: ${code}. Sie registrieren sich. Wenn Sie dies nicht tun, ignorieren Sie bitte diese Nachricht. Wenn Sie Fragen haben, kontaktieren Sie uns bitte! Telefon: ${tel} index_do.php Fügen Sie den folgenden Code ein.

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();
Nach dem Login kopieren

c. Verwenden Sie die neueste Alibaba Communication SMS-Schnittstelle, um auf Folgendes zuzugreifen:

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();
Nach dem Login kopieren

Hier sind alle 3 SMS-Schnittstellen von Alibaba. Das entsprechende SDK muss im offiziellen Alibaba Cloud-Download gefunden werden.

d. Verwenden Sie die Yunzhixun-SMS-Schnittstelle, um auf Folgendes zuzugreifen:

Ebenso müssen Sie den Yunzhixun-SMS-Schnittstellencode an der entsprechenden Position von member/index_do.php einfügen.

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();
Nach dem Login kopieren

Hängen Sie auch die SMS-Vorlage an: Bestätigungscode: {1}. Sie befinden sich bei {2}. Wenn Sie nicht dafür verantwortlich sind, ignorieren Sie diese Nachricht bitte. Bei Fragen kontaktieren Sie uns bitte unter Tel.: {3}

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die SMS-Bestätigungscode-Funktion von DreamWeaver. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!