Opened 14 years ago
Closed 14 years ago
#2517 closed defect (duplicate)
ログイン時にuidを設定できていない
Reported by: | imamura623 | Owned by: | nobody |
---|---|---|---|
Priority: | minor | Milestone: | |
Component: | その他 | Version: | 2.10.x & 2.12.x & 2.14.x |
Keywords: | Cc: |
Description
http://sns.openpne.jp/?m=pc&a=page_fh_diary&target_c_diary_id=16985 より転記
バージョン 2.10.6 の場合でレポートします。 webapp\modules\pc\do\o_login.php の48行目から引用します。 48: if (IS_SLAVEPNE && !($c_member_id = db_member_c_member_id4username_encrypted($auth->getUsername(), false))) { 49: db_member_create_member($_POST['username']); 50: } 51: 52: db_api_update_token($auth->uid()); ここで問題なのは $auth->uid() が必ず 0 だということです。 もう一つ、webapp\modules\ktai\do\o_login.php の 56 行目から引用します。 56: if (IS_SLAVEPNE && !($c_member_id = db_member_c_member_id4username_encrypted($auth->getUsername(), true))) { 57: db_member_create_member($_POST['username']); 58: } 59-80: リダイレクト先の判定など 81: $_SESSION['c_member_id'] = $c_member_id; こちらはpcよりもわかりやすいバグですね。IS_SLAVEPNE が true でなければ $c_member_id に値が設定されることはありません。 pcの場合もktaiの場合も、以下のような処理の流れが正解です。 1. $c_member_id = db_member_c_member_id4username_encrypted($auth->getUsername(), true)) でメンバーIDを取得 2. uidの設定や参照には $c_member_id を利用する そもそも if 文の条件判断中に代入しようというのは間違いです。現状のOpenPNE開発チームはわざわざバグを作りやすいコードを書いている状態だということを認識して、開発に対する基本的な考え方をあらためて欲しいと思います。 なお、構造上の問題(私の感覚ではバグのようなもの)は他にも沢山ありそうです。全面的なリファクタリングをおすすめします。
Note: See
TracTickets for help on using
tickets.
たとえば
は #1883 とは重複しているように見えます。
また、
これは誤りで、$c_member_idは当該ファイルの19行目にて値が設定されています。
duplicated としてクローズします。