近頃よくあるメールアドレスの確認機能を付けてみた。
function register()
{
$this->pageTitle = 'MOSHIMORE ユーザー登録';
if(!empty($this->data))
{
$this->User->set($this->data['User']);
$errormsgs = $this->validateErrors($this->User);
$errorcount = $this->validate($this->User);
if(
empty($this->data['User']['password2']) ||
$this->data['User']['password1'] != $this->data['User']['password2']
)
{
$errormsgs['password2'] = '確認用パスワードにパスワードと同じ値を入力してください。';
$errorcount++;
}
$userData = $this->User->find('first', array('conditions' => array(
'mailaddress' => $this->data['User']['mailaddress'],
'status' => 0,
'valid' => 0
)));
if(!empty($userData))
{
$errormsgs['registedmailaddress'] = '入力いただいたメールアドレスは、既に登録済みです。別のメールアドレスを入力してください。';
$errorcount++;
}
else
{
$userregisterData = $this->Userregister->find('first', array('conditions' => array(
'mailaddress' => $this->data['User']['mailaddress'],
'created > DATE_ADD(NOW(), INTERVAL ? DAY)' => -3,
'status' => 0,
'valid' => 0
)));
if(!empty($userregisterData))
{
$errormsgs['registingmailaddress'] = '入力いただいたメールアドレスは、仮ユーザー登録中です。別のメールアドレスを入力してください。';
$errorcount++;
}
}
if($errorcount == 0)
{
if(!empty($this->data['input']['step']) && $this->data['input']['step'] == 'confirm')
{
$this->data['User']['password'] = $this->Auth->password($this->data['User']['password1']);
$this->data['User']['status'] = 1;
$this->User->create();
$this->User->save($this->data['User']);
$userregister['Userregister']['userid'] = $this->User->getInsertID();
$userregister['Userregister']['username'] = $this->data['User']['username'];
$userregister['Userregister']['mailaddress'] = $this->data['User']['mailaddress'];
$userregister['Userregister']['registerkey'] = sha1($this->User->getInsertID().time());
$this->Userregister->create();
$this->Userregister->save($userregister);
include('qd_simple_mail.php');
$to = $this->data['User']['mailaddress'];
$to_name = null;
$subject = '[MOSHIMORE]仮ユーザー登録のお知らせ';
$from = MEMBER_MAIL;
$from_name = 'MOSHIMORE';
$additional = array('Bcc' => MEMBER_MAIL, 'Reply-to' => MEMBER_MAIL);
$content = $this->data['User']['username'].'('.$this->data['User']['mailaddress'].')様
以下のURLから本登録を行ってください。
http://www.moshimore.jp/member/finish/'.$this->data['User']['username'].'/'.$userregister['Userregister']['registerkey'].'
MOSHIMORE';
qd_simple_mail($to, $to_name, $subject, $content, $from, $from_name, $additional);
$this->render('confirmmail');
}
else
{
$this->render('confirm');
}
}
else
{
$this->set('errormsgs', $errormsgs);
$this->set('errorcount', $errorcount);
}
}
}
