PHP實現使用者註冊郵件啟用賬戶的方法

來源:互聯網
上載者:User
我們在註冊一個網站的賬戶時,通常都會收到一封含點選連結啟用的郵件,本篇文章主要介紹了PHP郵件啟用賬戶的實現代碼,有興趣的可以瞭解一下

我們在註冊一個網站的賬戶時,通常都會收到一封含點選連結啟用的郵件,而它是怎麼啟用我們的賬戶的呢,今天向大家介紹一種方法。

預備條件

我們在註冊賬戶時,一般在使用者表中會記錄下我們的id、使用者名稱、密碼、郵箱或手機號,還會有一個賬戶啟用與否的欄位。我們假設它為 activation varchar(50) 註冊時一般都會產生一個啟用碼,並且把啟用碼插入activation欄位,我們可以使用$activation_key=bin2hex(openssl_random_pseudo_bytes(16)); 來產生,並且把它插入欄位。

在連結中儲存啟用資訊

既然我們點擊了郵件裡的連結後,就啟用了賬戶,那麼說明這個連結裡,必然儲存了啟用資訊。而它應該儲存哪些資訊呢,首先,必須有啟用碼,還有使用者註冊時的郵箱或者id,我們這裡用郵箱。例如下面這個連結。


複製代碼 代碼如下:


$message.="<a href="." rel="external nofollow" http://www.XXXXX.com/activate.php?email=".urlencode($email)."&key=$activation_key".">Activate</a>";

$email使我們註冊時的郵箱,我們用urlencode()來編碼一下,將字串用於 URL 的請求部分,$activation_key就是我們產生的啟用碼了,我們用伺服器向這個email發送啟用郵件,而這個在郵箱用戶端裡,會顯示成一個超連結,提示你點擊,點擊後,我們就把email和key傳送到了activate.php檔案,也就是開始執行驗證並啟用賬戶了。

在activate.php中驗證資訊

我們使用URL請求向activate.php傳入使用者郵箱和啟用碼,現在只需要調取資料庫中原有的資訊進行對比,就可以驗證使用者了,所以我們第一步才將啟用碼插入使用者表中,我寫了一個activate.php的例子:

<?php$link=mysqli_connect("localhost", "root", "root", "project") or die("Database Access Denied");//串連資料庫if (!isset($_GET['email'])||!isset($_GET["key"])){  echo "<p class='alert alert-danger'>Account Activation Failed</p>";  exit;//如果郵件連結損壞,沒有傳入使用者啟用資訊,則不執行後續步驟}$email=$_GET['email'];$key=$_GET['key'];$email=mysqli_real_escape_string($link, $email);$key=mysqli_real_escape_string($link, $key);//轉義特殊字元$sql="UPDATE users SET activation='activated' WHERE (user_email='$email' AND activation='$key') LIMIT 1";$result=mysqli_query($link, $sql);//查詢email與key匹配的資料項目,並且更新activation欄位到activatedif (mysqli_affected_rows($link)==1){  echo "<p>Account Activated</p>";  echo '<a href="index.php" rel="external nofollow" type="button">Login</a>';  echo "<br/>";}else{  echo "<p>Account Activation Failed Or Already Activated</p>";}?>

現在賬戶就啟用了,使用者在登入時,先匹配一下activation是否為activated,接著再進行後續步驟

此文僅僅只涉及這個問題的解決方案,一個完整的使用者註冊、啟用、登入,還應該配置發送郵件的伺服器

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.