We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 32535
    • 58 Posts
    phpMyAdminでmodx_web_usersを見てみたのですが、エラーが出てしまうアカウントにだけ、cachepwdのところに、文字列が表示されてありました。何かエラーとの関係があるのでしょうか?

    あと、パスワードを確認したいのですが、phpMyAdmin上で表示されている形式ですと、b14728ad9902aecba32e2xxxxxのようにエンコード(?)されているのですが、
    登録時の文字列そのままを表示させたいのですが、どのような操作を行えばよいのでしょうか?

    初歩的な質問ですいません。
      • 28073
      • 164 Posts
      こんんばんわー。

      まず自己フォローです。
      さっきの書き込みで「別のユーザで同じメールアドレスを入力しても問題なかった」と書きましたが、一部で問題がありました。
      WebLoginのパスワード再作成(Forget Your Password?)機能はメールアドレスを入力してパスワードを飛ばすので、別ユーザに同じメールアドレスを入れていたら動かないです。
      「We are sorry! We cannot locate an account using that email.」というエラーになります。

      Quote from: wisp at Jan 13, 2009, 08:11 AM

      phpMyAdminでmodx_web_usersを見てみたのですが、エラーが出てしまうアカウントにだけ、cachepwdのところに、文字列が表示されてありました。何かエラーとの関係があるのでしょうか?

      cachepwdはパスワード再作成(Forget Your Password?)を利用したときに一時パスワードが蓄えられる場所です。
      パスワード再作成を行うとメールで新しいパスワードと確認用URLが送られると思うのですが、この確認用URLにアクセスした瞬間になくなります。

      Quote from: wisp at Jan 13, 2009, 08:11 AM

      あと、パスワードを確認したいのですが、phpMyAdmin上で表示されている形式ですと、b14728ad9902aecba32e2xxxxxのようにエンコード(?)されているのですが、
      登録時の文字列そのままを表示させたいのですが、どのような操作を行えばよいのでしょうか?

      パスワードはそのままの形でDBに保存せずにmd5で暗号化して保存しています。
      (セキュリティ的な観点で素のパスワードのままでDBに保存される事はあまりありません)
      しかも不可逆変換なので元のパスワードに戻す事はできないのです。

      Quote from: wisp at Jan 12, 2009, 05:38 AM

      (1)「Please check your email account (「登録済みのメールアドレス」) for login instructions」という
      ダイアログがすべてのアカウントで必ず表示されます。ですが新しいパスワードが記述されたメールはしっかり送られてきます。

      こちらは「ログインに関してメール送ったから見て欲しいくらい」の意味でとればいいと思います。
      エラーではないですね smiley

      Quote from: wisp at Jan 12, 2009, 05:38 AM

      (2)送信されて来たメールのリンクから、ログインページにアクセスすると、「Error while loading user account. Please contact the Site Administrato」というダイアログが表示されます。

      (3)そしてメールに記述されていた新しいパスワードをログインフォームに入力して、ログインボタンを押すと、「Incorrect username or password entered!」というダイアログが出てログインできません。
      パスワードが新しいものに変わっていないようです。

      ソースで「Error while loading~」のエラーを追ってみました。
      みるとパスワード再作成連絡のメールに書かれたURLにアクセスした際、ユーザの存在確認をしているのですがここで問題があった時にでるエラーみたいですね。

      メールに書かれたエラーになるというURLの中に「id=~」と数字が書かれていると思うのですが、この数字と同じ数字が「modx_web_users」のid列ににあるか確認してもらえますか?
      もしくは複数あるとか。。。

      Quote from: sama55 at Jan 12, 2009, 07:55 PM

      深いイですね~。こういう実体験に裏打ちされた情報は実際にシステムを使う者にとって本当に為になります。
      当たり前のこととして気にも留めなかったのですが、トランザクションなし?ロールバックなし? ・・・ shocked
      これ、システム全体の話・・・ですよね(ですか)?

      Quote from: soushi at Jan 12, 2009, 06:59 PM

      ちなみに僕も昔一括登録の必要があったのですが、そのときはデータベースエンジンをInnoDBに変更してトランザクション付きのWebusersImportを自前で用意して登録しました。これだとインポート中にエラーが起きても途中まで入れたデータを全部無効にすることができます。
      今のままだと適当すぎて使い物になってないのですが(笑)必要でしたら整理してリリースします。
      聞くところによると、今後MODxは商用にも力を入れていくとのこと。需要はあるのではないでしょうか。

      駆け出しですので、今後とも色々お世話になると思いますが、どうぞよろしくお願いします。

      sama55さん始めまして~。
      そうですね、MODxは基本MyISAMで作成するのでトランザクションは利用できないです。
      多分、処理スピードを重要視したのではないでしょうか。。。
      (一般的にInnoDBよりMySAMの方が早いらしいです…最近はどうかわかりませんが)
      なのでトランザクション使いたい場合は手動でInnoDBに変えてあげる必要があります :’(
      MySQL Administratorを利用されているならテーブルの編集からテーブルエンジンをInnoDBに変えるだけですぐに変更できます。
      (PHPMyAdminでももできると思います)

      一括インポートの件はちょっと用意してみます。
      久しぶりにソースの中身見たらmb系関数使ってるや。。。ちょっと時間掛かりそうです embarrassed
        • 33014 ☆ A M B ☆
        • 1,231 Posts
        返事を書いてるうちにそうしさんのコメントが。そうしさんが書かれているとおり、非可逆変換な方式で暗号化されてるので、これを目視で
        確認できるプレーンテキストとして扱えるデータとしたい場合は、MODxのコアファイル側とDB側の両方をチューニングする必要があります。
        ちょっと大変ですし、セキュリティ的な意味でこのようになっているので、この種のチューニングはあまりおすすめはできません。

        でもおそらく質問の意図としては、設定ひとつで簡単に目視確認できる状態にできるならということですよね。
          • 26012
          • 324 Posts
          soushiさん、yamaさんフォローありがとうございます。

          会話の流れで複数の項目が入り乱れてしまったので一旦整理しませんか。
          間違いや抜けがあったら遠慮なく突っ込んでください。

          --------------------------------------------
          質問1) 1300個のIDとパスワードを、効率的に登録する方法を教えてください。(質問者:wispさん)

           答え    : webusersImport(以下"wui"と略)モジュールを使うと効率的に処理できます。
           関連リンク : wuiの配布元 : http://www.modxcms.com/WebusersImport-948.html
                    wuiの使い方 : http://modxcms.com/forums/index.php/topic,32003.msg194517.html#msg194517
                    wuiの注意点 : http://modxcms.com/forums/index.php/topic,32003.msg194657.html#msg194657

           CSVファイルの準備について :

            ユーザID(2列目)とメールアドレス(4列目)はファイル内および既存のユーザも含め一意でなければならない(同じものがあってはならない)。

            - 対応例 -
             (1)ファイルが機械的に生成され、重複がないことが予め保証されていれば(2)は不要。(3)は必要!
             (2)ファイルを手で作る場合は、EXCELLの特定列の重複チェックマクロや各種ユーティリティを使って重複がないことを保証する
               (EXCELLマクロやユーティリティはネットに情報が沢山あるのでそちらを参照してください)
             (3)既存のウェブユーザがある場合は、既存ユーザのIDとメールアドレスがファイルに存在しないことを確認する

           インポート中のエラーについて : 

            wuiが処理中エラーになった場合、処理途中のデータがDBに残ったままになることがある

            - 対応例 -
            wuiを実行する前にDBをバックアップしておき、エラー時はDBを復元。エラー原因は別途解析し別対処。
            (処理対象のテーブルが分かっている場合はそのテーブルだけでもよい)
          --------------------------------------------
          質問2) webloginのForget Passwordの挙動について教えてください。(質問者:wispさん)

           現象1 : 「Please check your email account (「登録済みのメールアドレス」) for login instructions」が表示される
           回答1 : エラーではありません。「ログインに関するメール送ったから見てください」というメッセージです。

           現象2 : パスワードリカバリメールのURLクリックで「Error while loading user account. Please ・・・」と表示され、
                 パスワードがリセットされない。
           分析結果: リセット対象のウェブユーザーのレコードがない、または、重複したIDを持つレコードが複数ある可能性が高い
           アドバイス:phpmyadminなどのDBユーティリティで*****_web_usersテーブルを覗き、パスワードリカバリメールのURLの"&wli="
                 の番号を確認し、*****_web_usersテーブルに同IDと同じレコードの数を確認する(ゼロまたは2以上ないか)。
          --------------------------------------------
          質問3) MODxはDBの整合性を確保するトランザクション処理はしてないのですか?(質問者:sama55)

           回答 : 折を見て別スレッドで話しましょう(このスレが混乱するので一旦忘れてください)。
          --------------------------------------------

            • 32535
            • 58 Posts
            WebusersImportを使ってウェブユーザー情報を読みことができました、ありがとうございます。
            excelでのメールアドレスの重複のチェック等もできそうです。
            みなさんに教えていただいた注意点等を踏まえて対処して行こうと思います。


            Error while loading~と表示されてしまう件に関して。

            パスワードリカバリメールのURLの"&wli=" の番号を確認して見てみたところ同一のIDはweb_usersテーブルの中にありました。重複はしていませんでした。ただ、そのエラーになってしまうメールアドレスは
            MODxをインストール時に入力したアドレスなのですが何か因果関係あるのでしょうか?
            (この現象はWebusersImportを試す以前から起こっていました。)


            MD5に暗号化されていない、パスワードの一覧を取得したい件に関して。
            yamaさんのおっしゃったとおり、設定ひとつで簡単に暗号化されていない状態のパスワードを目視確認したいのです。やはり私のような初心者には難易度が高い作業なのでしょうか。できることなら一覧表として暗号化されていないパスワードとユーザーIDのリストを書き出したいのですが。。



              • 26012
              • 324 Posts
              wispさん

              Quote from: wisp at Jan 14, 2009, 07:29 AM

              WebusersImportを使ってウェブユーザー情報を読みことができました、ありがとうございます。
              excelでのメールアドレスの重複のチェック等もできそうです。
              みなさんに教えていただいた注意点等を踏まえて対処して行こうと思います。
              では質問1)はFIXということで(頑張ってください)。 wink

              Quote from: wisp at Jan 14, 2009, 07:29 AM

              Error while loading~と表示されてしまう件に関して。
              パスワードリカバリメールのURLの"&wli=" の番号を確認して見てみたところ同一のIDはweb_usersテーブルの中にありました。重複はしていませんでした。ただ、そのエラーになってしまうメールアドレスは
              MODxをインストール時に入力したアドレスなのですが何か因果関係あるのでしょうか?
              (この現象はWebusersImportを試す以前から起こっていました。)
              web_usersテーブルにIDがない、または、重複したIDがある という予想は外れてしまったようですね。
              (現象から察するにsoushiさん同様私もこれしかありえないと思ってたのですが・・・)

              「そのエラーになってしまうメールアドレスはMODxをインストール時に入力したアドレスなのですが」 の部分がしっかり理解できないので、
              セキュリティ上問題がない範囲でもう少し具体的に説明できますか?

              Quote from: wisp at Jan 14, 2009, 07:29 AM

              MD5に暗号化されていない、パスワードの一覧を取得したい件に関して。
              yamaさんのおっしゃったとおり、設定ひとつで簡単に暗号化されていない状態のパスワードを目視確認したいのです。やはり私のような初心者には難易度が高い作業なのでしょうか。できることなら一覧表として暗号化されていないパスワードとユーザーIDのリストを書き出したいのですが。。
              上記は、初心者とかベテランとか、そういったこととは無関係な話ですから、気にする必要は全くありません。
              「リストを書き出したい」という要望は、WebusersImportを使って流し込むのであれば、CSVファイル自体がそのリストに相当しますよね?
                • 33014 ☆ A M B ☆
                • 1,231 Posts
                任意の文字列をmd5ハッシュに変換するのは簡単ですが(web上でもそういうサービスがあります)、
                その逆は難しいです。つまり、いったんmd5形式でDBに格納されたパスワードは、md5形式のままです。
                なので、sama55さんがおっしゃってる内容でもありますが、いわゆる「運用で工夫」ってことになりますね。
                インポート元のCSVファイルをしっかり管理する、ということで。

                なんとかする方法はなくもなく、md5形式に変換せずDBに格納するようにコアを少し改造すればいいということになります。
                改造対象箇所を特定すること自体は難しくないと思います。
                ただしこのへん僕も不勉強なもので、具体的にそれがどういうリスクを生むのかが不安なところです。
                あまりスキルがないからこそ、このへんはコア任せにしておくのが無難な気がします。
                  • 32535
                  • 58 Posts
                  そうなのですかぁ、wuiを使用してインポートする際に、CSVファイルのパスワードの欄を空欄のままにしておくと、modx側でパスワードを自動生成してくれるようなので、1300件のアカウントを作成してから、そのあとで、パスワードのリストを書き出せればと思ったのですが。。ユーザーには郵送などの手段でIDとパスワードを送付しようと考えていたので、どのような
                  形で各ユーザーにIDとパスワードを通知すればよいか少し悩んでおります。


                  パスワードリカバリメールでエラーになってしまうメールアドレスはMODxのインストール時に「デフォルトの管理アカウントの作成」の項目で「email」の欄に入力したメールアドレスです。言葉足らずですいませんでした。


                    • 28073
                    • 164 Posts
                    sama55さん、まとめありがとうございます laugh

                    Quote from: wisp at Jan 14, 2009, 07:29 AM

                    Error while loading~と表示されてしまう件に関して。

                    パスワードリカバリメールのURLの"&wli=" の番号を確認して見てみたところ同一のIDはweb_usersテーブルの中にありました。重複はしていませんでした。ただ、そのエラーになってしまうメールアドレスは
                    MODxをインストール時に入力したアドレスなのですが何か因果関係あるのでしょうか?
                    (この現象はWebusersImportを試す以前から起こっていました。)

                    データは入ってたのですかぁ。
                    「Error while loading user account.~」というエラーが発生する部分は、「wli=xx」に書かれたIDを元にユーザを検索し、ユーザが重複した場合もしくは対象ユーザが見つからなかったときに発生するっぽいんですよね。。。
                    ちなみにMODxをインストールした時に設定したメールアドレスはMODxの管理ユーザに設定するメールアドレスですね。
                    こちらのほうはweb_userなので特に因果関係はないと思います。
                    (ユーザのタイプが二つあってちょっとわかりにくいんですよね。。。)
                    web_userのデフォルトは確かsiteadminというユーザなのですが、このユーザで問題が起こっているのでしょうか?

                    あとパスワードの件です。
                    ネットで検索するとパスワード自動生成のツールが結構転がっています。
                    フリーのものもあるので、一度使われてみてはいかがでしょうか。
                    このソフトで一括生成し、ユーザリストcsvに貼り付ければそのまま登録できると思います。
                      • 33014 ☆ A M B ☆
                      • 1,231 Posts
                      Quote from: wisp at Jan 15, 2009, 09:41 AM

                      そうなのですかぁ、wuiを使用してインポートする際に、CSVファイルのパスワードの欄を空欄のままにしておくと、modx側でパスワードを自動生成してくれるようなので、1300件のアカウントを作成してから、そのあとで、パスワードのリストを書き出せればと思ったのですが。。ユーザーには郵送などの手段でIDとパスワードを送付しようと考えていたので、どのような
                      形で各ユーザーにIDとパスワードを通知すればよいか少し悩んでおります。
                      http://www.graviness.com/temp/pw_creator/
                      「パスワード, 生成」で検索エンジンを開いてみたら、上記のようなサービスが見つかりました。
                      上記サイトで「1300×1列」のパターンでパスワードを一挙に作って(多過ぎるかと思ったけどそうでもなかった)、
                      いったんテキストエディタに貼り付けてから、さらにそれを全選択し直してエクセルに貼り付けると簡単でした。
                      あとはWordの差し込み印刷などでこのエクセル文書をもとに1300人ぶんの文書を作る感じかな?