2011-12-21 23 views
0

Yiiフレームワークを使用してWebアプリケーションを開発しています。現在、私はアプリケーションのログインシステムを実装しています。このリンクを使用して登録を確認するためのリンクを含むユーザーの電子メールアドレスに電子メールを送信します。そのような実装をYiiのフレームワークを使用する前に行ったことがあるか、その拡張機能が私とアイデアを共有することができます。事前にお手伝いをしていただきありがとうございますYIIフレームワークを使用してユーザーの電子メール受信ボックスにユーザー登録メールを送信

答えて

2

非常にシンプルですが、自分で作ってみることをお勧めします。新しいエクステンションを実装して使用する方法を研究するよりも、時間が大幅に節約できます。

ユーザーテーブルにCHECK_SUM、STATUS列を追加します。 CHECK_SUMは、暗号化された値または任意のランダムな値をユーザーの確認に使用することができ、STATUS列のデフォルトは0です。電子メールアドレスがチェックされると、このアカウントをログインできるように1に設定します。

、ユーザーが登録フォーム提出:あなたのREGコントローラで

function encrypt($pswd) 
{ 
    ....//make your own encrypt method to store uses' password 
} 
//suppose your user model is Users 
$users->email=$_POST['email']; 
$users->pswd=encrypt($_POST['pswd']); 
... 
//here comes the customized part 
$users->check_sum=sha1($_POST['email'].time());//or other method to make a safe random string 
if($users->save()) 
{ 
    $to=...; 
    $subject=...; 
    //suppose your reg page is in reg controller. 
    $msg='please visit <a href="domain.com/reg/check?sum='.$users->check_sum.'">this url</a> to finish registration'; 
    mail($to,$subject,$msg,$header); 
} 

、追加を:

public function actionCheck() 
    { 
    if(isset($_GET['sum'])) 
    { 
     $c=new CDbCriteria; 
     $c->condition="check_sum=:i"; 
     $c->params=array($i=>$_GET['sum']); 
     $user=Users::model()->find($c); 
     if($user) 
     { 
     $user->status=1; 
     $user->save(); 
     $this->redirect('http://...'); 
     } 
    } 
    } 

これは私のソリューションです。

+0

regコントローラとして参照されているものを私に説明することができます – KItis

+0

regコントローラはdomain.com/reg/xxxのようなURLを作成するために使用されます(domain.com/reg/checkが必要です)。 url形式が重要でない場合は、任意のコントローラー(たとえば、ユーザーコントローラー(URLはx.com/user/checkになります)または登録ページが属するコントローラー)でactionCheck()関数を追加できます。 – LotusH

0

実際には、ユーザー管理yii-userの拡張機能があります。登録を含む多くの機能を備えたモジュールです。ソースコードを参照して、独自の登録システムを開発することができます。