久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

thinkphp實現(xiàn)用戶注冊時郵箱激活

 Coder編程 2020-05-21

有些網(wǎng)站在注冊的時候,,會向用戶的郵箱發(fā)送郵件,,點擊郵件中的鏈接激活賬戶,,基本原理就是在注冊的時候(即點擊發(fā)送郵件的時候),先把用戶的信息存進數(shù)據(jù)庫,,另外還有一個激活狀態(tài)的字段(默認是未激活)點擊郵件中的鏈接,,驗證通過之后,該字段狀態(tài)會改為已激活,,郵件中的鏈接信息包括:用戶id(只要是在數(shù)據(jù)庫中能找到對應的數(shù)據(jù)就行,,不一定是id),激活碼,,點擊這個鏈接之后,,會把這些數(shù)據(jù)傳到我們寫好的一個方法里面,只要在這個方法里面驗證即可,。

業(yè)務流程

1,、用戶提交注冊信息

2、寫入數(shù)據(jù)庫,,此時賬號未激活

3,、將用戶名密碼或其他標識字符進行加密構成激活碼

4、將激活碼和用戶的id組成URL發(fā)送到郵箱

5,、用戶登陸郵箱,。點擊URL激活

6、驗證激活碼,,正確就激活賬號,,更改激活狀態(tài)

數(shù)據(jù)庫設計 

 

發(fā)送郵件

發(fā)送郵件之前需要加載phpemailer類,,可以看我上一篇文章Thinkphp5+PHPMailer實現(xiàn)發(fā)送郵件

public function index()
    {
        $toemail = '[email protected]';    //這里寫的是收件人的郵箱
        $active_url = "http://test.zxf/index/sendmail/active.html?id=1&active_key=123";
        $body =  "親愛的".$toemail.":<br/>感謝您在我站注冊了新賬號。<br/>請點擊鏈接激活您的賬號,。<br/> 
                    <a href='".$active_url."' target= '_blank'>點擊激活</a><br/> 
                    如果以上鏈接無法點擊,請將它復制到你的瀏覽器地址欄中進入訪問,,該鏈接24小時內(nèi)有效,。"; 

        $mail=new Phpmailer();
        $mail->isSMTP();    // 使用SMTP服務(發(fā)送郵件的服務)
        $mail->CharSet = "utf8";    // 編碼格式為utf8,不設置編碼的話,,中文會出現(xiàn)亂碼
        $mail->Host = "smtp.qq.com";    // 發(fā)送方的SMTP服務器地址
        $mail->SMTPAuth = true;    // 是否使用身份驗證
        $mail->Username = "[email protected]";    // 申請了smtp服務的郵箱名(自己的郵箱名)
        $mail->Password = "xxxx";    // 發(fā)送方的郵箱密碼,,不是登錄密碼,是qq的第三方授權登錄碼,要自己去開啟(之前叫你保存的那個密碼)
        $mail->SMTPSecure = "ssl";    // 使用ssl協(xié)議方式,
        $mail->Port = 465;    // QQ郵箱的ssl協(xié)議方式端口號是465/587
        $mail->setFrom("[email protected]","測試發(fā)件人");    // 設置發(fā)件人信息,如郵件格式說明中的發(fā)件人,
        $mail->addAddress($toemail,'測試收件人');    // 設置收件人信息,,如郵件格式說明中的收件人
        $mail->addReplyTo("[email protected]","Reply");    // 設置回復人信息,,指的是收件人收到郵件后,如果要回復,,回復郵件將發(fā)送到的郵箱地址
        $mail->Subject = "這是一個測試郵件";    // 郵件標題
        $mail->Body = $body;// 郵件正文
        
        $mail->CharSet = "UTF-8";   //字符集
        $mail->Encoding = "base64"; //編碼方式
        $mail->IsHTML(true);    //支持html格式內(nèi)容

       if(!$mail->send()){    // 發(fā)送郵件
           echo "Message could not be sent.";
           echo "Mailer Error: ".$mail->ErrorInfo;    // 輸出錯誤信息
        }else{
            echo '';
            return '發(fā)送成功';
        }
    }

發(fā)送成功之后,,郵件內(nèi)容,注意,,如果發(fā)送之后,,郵件內(nèi)容不能解析html代碼,需要添加支持html格式內(nèi)容 $mail->IsHTML(true);

 

驗證注冊激活賬戶 

public function active()
    {
        $data = request()->param();
        // 通過id找對應的激活碼
        $active_key = Db::table('active')->where(['id'=>$data['id']])->value('active_key');
        if ($active_key) {

            // 驗證激活碼是否正確
            if ($active_key == $data['active_key']) {
                // 更改激活狀態(tài)
                $res = Db::table('active')->where(['id'=>$data['id']])->update(['status'=>1]);
                if ($res) {
                    echo "激活成功";
                }else{

                    echo "激活失敗";
                }
            }else{
                echo "激活碼不正確";
            }
        }else{
            echo "用戶不存在";
        }
    }

這里只是簡單舉例,,安全性還不高,,可以對激活碼加密,添加激活碼的過期時間等提高安全性

    本站是提供個人知識管理的網(wǎng)絡存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導購買等信息,,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多