2011-12-21 2 views
0

Yii 프레임 워크를 사용하여 웹 응용 프로그램을 개발 중입니다. 현재 응용 프로그램의 로그인 시스템을 구현하는 중입니다. 이 링크를 사용하여 등록을 확인하는 링크가 포함 된 사용자 전자 메일 주소로 전자 메일을 보내려고합니다. Yii 프레임 워크를 사용하기 전에 이러한 구현을 수행 한 모든 사람이 확장 성을 가짐으로써 나에게 아이디어를 공유 할 수있었습니다. 어떤 도움을 미리 주셔서 감사합니다YII 프레임 워크를 사용하여 사용자의 전자 메일받은 편지함으로 사용자 등록 전자 메일 보내기

답변

2

매우 간단합니다. 직접 작성하는 것이 좋습니다. 새 확장을 구현하고 사용하는 방법을 연구하는 것보다 많은 시간을 절약 할 수 있다고 생각합니다.

사용자 테이블에 CHECK_SUM, STATUS 열을 추가하십시오. CHECK_SUM은 암호화 된 값 또는 임의의 임의 값이 사용자를 확인하는 데 사용할 수 있으며 STATUS 열의 기본값은 0입니다. 전자 메일 주소를 선택하면이 계정을 로그인 할 수 있도록 1로 설정됩니다. 사용자가 자신의 등록 양식을 제출하면

: 당신의 등록 번호 컨트롤러에서

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을위한 확장이 있습니다, 그것은 등록을 포함하여 많은 기능을 가진 모듈입니다. 소스 코드를 참조하여 언제든지 자신의 등록 시스템을 개발할 수 있습니다.

관련 문제