ここの情報は古いです。ご理解頂いた上でお取り扱いください。

source: OpenPNE/branches/stable-2.14.x/webapp/modules/pc/do/o_update_password.php @ 12079

Last change on this file since 12079 was 12079, checked in by nagasawa, 11 years ago

#4033:r12049,r12073,r12074,r12075,r12076の変更をマージ(2.14.x)

File size: 2.7 KB
Line 
1<?php
2/**
3 * @copyright 2005-2008 OpenPNE Project
4 * @license   http://www.php.net/license/3_01.txt PHP License 3.01
5 */
6
7/**
8 * パスワード再設定
9 */
10class pc_do_o_update_password extends OpenPNE_Action
11{
12    function isSecure()
13    {
14        return false;
15    }
16
17    function execute($requests)
18    {
19        //外部認証の場合はリダイレクト
20        check_action4pne_slave(false);
21
22        // --- リクエスト変数
23        $session = $requests['session'];
24        $id = $requests['id'];
25        $new_password = $requests['new_password'];
26        $new_password2 = $requests['new_password2'];
27        // ----------
28
29        // ハッシュ化されたIDを戻す
30        $c_member_id = t_decrypt($id);
31
32        // 権限チェック
33        if (!db_member_c_member_config4name($c_member_id, 'update_password_sid')) {
34            handle_kengen_error();
35        }
36        if (!db_member_c_member_config4name($c_member_id, 'password_sid_query_time')) {
37            handle_kengen_error();
38        }
39
40        $c_member_config = db_member_c_member_config4c_member_id($c_member_id);
41
42        // 権限チェック
43        if ($c_member_config['update_password_sid'] != $session) {
44            handle_kengen_error();
45        }
46
47        // 有効期限は24時間
48        $one_day_time = 86400;
49        $limit_password_sid_query_time
50            = $c_member_config['password_sid_query_time'] + $one_day_time;
51
52        // 権限チェック
53        if (time() > $limit_password_sid_query_time) {
54            $p = array('msg_code' => 'update_password_timeout');
55            openpne_redirect('pc', 'page_o_tologin', $p);
56        }
57
58        $msg_list = array();
59        if (!$new_password) $msg_list[] = "パスワードを入力してください";
60        if (!$new_password2) $msg_list[] = "パスワード(確認)を入力してください";
61
62        if ($new_password !== $new_password2) $msg_list[] = "パスワードが一致しません";
63        if (!ctype_alnum($new_password) ||
64            strlen($new_password) < 6 ||
65            strlen($new_password) > 12) {
66            $msg_list[] = "パスワードは6~12文字の半角英数で入力してください";
67        }
68
69        // error
70        if ($msg_list) {
71            $p = array('msg' => array_shift($msg_list), 'session' => $session, 'id' => $id);
72            openpne_redirect('pc', 'page_o_update_password', $p);
73            exit;
74        }
75
76        db_member_update_password($c_member_id, $new_password);
77        db_member_delete_c_member_config($c_member_id, 'password_sid_query_time');
78        db_member_delete_c_member_config($c_member_id, 'update_password_sid');
79
80        $p = array('msg_code' => 'change_password');
81        openpne_redirect('pc', 'page_o_tologin', $p);
82    }
83}
84
85?>
Note: See TracBrowser for help on using the repository browser.