パスワードリセットページを作成しています。このアクションの最後のステップで、ユーザーがパスワードを入力し、パスワードをもう一度入力して確認します。2つの入力が比較され、これらの入力が等しい場合はパスワードが変更され、そうでない場合はパスワードが変更されます。ユーザーは「成功メッセージなし」のページに移動します。
これが私の論理です:
パスワードリセットページ:
echo form_open( "login / password_reseter");
私のコントローラー:
function password_reseter() {
$password1 = $this->input->post('password');
$password2 = $this->input->post('password2');
if ($password1 == $password2) {
$data["proof"]=1;
$reg_code = $this->input->post('rec_code');
$this->load->model("membership_model");
$this->membership_model->password_reseter($reg_code, $password2);
}
else{
$data["proof"]=0;
}
$data["main_content"] = "reset_password_result";
$this->load->view("includes/template", $data);
}
そしてビュー:
<?php
if ($proof == 1) {
?>
<div id="loginform">
Your password has been changed, you may now login.
</div>
<?php
} else {
?>
<div id="loginform">
Your passwords don't match! <a href="javascript:history.back()">Go back.</a>
</div>
<?php
}
?>
セキュリティ上の大きな問題がありますが、このページにURLで直接アクセスすると、データベース上のすべてのアカウントのパスワードがリセットされます。このpassword_reseterページへの直接アクセスを停止したいと思います。