2012-02-15 18 views
0

私がしたいことは、新しいパスワードとそれが要求された日付(0000-00-00 00:00:00)が設定されているかどうかを確認し、それに基づいて電子メールを送信することです。しかし、私は自分のロジックを変更する必要があると思っています。すでに設定されていれば、ユーザーに大量の電子メールを送信したくないからです。私が確信していないことも、もし彼らがメールを受け取っていなければどうなるかということです。パスワードの忘れたパスワード論理

私は何をすべきかに関するアイデアはありますか?

EDIT:new_password_keyは、ユーザーがログインするためのパスワードではないことを追加したかっただけです。今の時点で、私は彼らが新しいパスワードを入力できる電子メールのリンクからページに誘導させるつもりでした。

if (!isset($user_data->new_password_key) && (!isset($user_data->new_password_requested))) 
{ 
    if ($this->kow_auth->forgot_password($this->input->post('username'))) 
    { 
     $this->kow_auth->send_email('forgot_password', 'KOW Manager Forgot Password Email', $user_data); 
     echo json_encode(array('success' => 'yes', 'message' => 'A temporary password has been emailed to you!')); 
    } 
    else 
    { 

    }  
} 
else 
{ 
    echo json_encode(array('success' => 'yes', 'message' => 'Check your email for your temporary password!')); 
} 

EDIT 2:

だけ($のalready_sent_password)あれば、彼らは「didnの何らかの理由で、それはif文に降りたらどうので、私はそれを持っているいくつかのロジックの問題があるようですそれを得る。じゃあ何?または、もしそれがif(!strtotime($ user_data-> new_password_requested)< =(time() - 172800))になったら、私は愚かに聞こえるようになっています。なぜ新しいパスワードを得るのに2日間待たなければならないのでしょうか?キー。

答えて

2

私は個人的にメールを送信することは心配しません。ユーザーがボタンを20回クリックすると、20件の電子メールを受信すると予想されます。

<?php 
// Assuming this is in UTC 
$requested = strtotime($user_data->new_password_requested); 
if (time() - $requested <= (60 * 20)) 
{ 
    // Don't send the email 
    return false; 
} 

return true; 
+1

はい、しかし、他の人がそのボタンをクリックすることができます:あなたは電子メールを再送信しないと思った場合

しかし、彼らはパスワードを要求された最後の時間は、あなたが次の操作を行うことができ、20分前に下にあった場合あまりにも。またはボット。 – bottleboot

+0

それは私が心配していることです。 –

+0

私はまた、すべての人が考えることを見るために、私のサブミット機能全体を使ってcodereviewページに投稿しました。 http://codereview.stackexchange.com/questions/9010/forgotten-password-logicまだロジックが残っているかどうかは不明です。 –