掲示板目次 > サポート > 個々の機能(Any) 新規投稿 返信投稿
 ユーザー一括登録時にパスワードも一括登録したい
 
suzukichi
 2010年7月28日 18:58 JST (参照数 1008回)  
掲示板 Newbie
Newbie
confused

状態: オフライン


登録日: 2010年1月 7日
投稿数: 10
こんばんは。

ユーザーのみ閲覧できるページをGeeklogに移行しようとしています。

ユーザーのID/パスワードは全てこちらで管理していて
ユーザーは変更できないようにしています。
Geeklogでユーザーの一括登録をするときに
パスワードも一括登録したいと思っています。

検索したところ下記の話題を見つけました。


▼ユーザー一括登録におけるウェルカムメッセージの停止について
http://www.geeklog.jp/forum/viewtopic.php?showtopic=7319


Quote by: ひろろん少しハックが足りなかったようですね。

前のハックではメールは送られませんがパスワードが空白になってしまいますので、さらにパスワードをテキストファイルから取り込むようにしたハックです。

なお、前回同様、ソースコードでのハックで自分ではテストをしておりませんので、参考までに。

public_html/admin/user.php
899行目から927行目まで
PHP Formatted Code

        list ($full_name, $u_name, $email) = explode ("t", $line);

        $full_name = strip_tags ($full_name);
        $u_name = COM_applyFilter ($u_name);
        $email = COM_applyFilter ($email);

        if ($verbose_import) {
            $retval .="<br><b>Working on username=$u_name, fullname=$full_name, and email=$email</b><br />";
            COM_errorLog ("Working on username=$u_name, fullname=$full_name, and email=$email",1);
        }

        // prepare for database
        $userName  = trim ($u_name);
        $fullName  = trim ($full_name);
        $emailAddr = trim ($email);

        if (COM_isEmail ($email)) {
            // email is valid form
            $ucount = DB_count ($_TABLES['users'], 'username',
                                addslashes ($userName));
            $ecount = DB_count ($_TABLES['users'], 'email',
                                addslashes ($emailAddr));

            if ($ucount == 0 && ecount == 0) {
                // user doesn't already exist
                $uid = USER_createAccount ($userName, $emailAddr, '',
                                           $fullName);

                USER_createAndSendPassword ($userName, $emailAddr, $uid);
 


これを以下のようにします。

PHP Formatted Code

        list ($full_name, $u_name, $email, $pass_word) = explode ("t", $line);

        $full_name = strip_tags ($full_name);
        $u_name = COM_applyFilter ($u_name);
        $email = COM_applyFilter ($email);
        $pass_word = COM_applyFilter ($pass_word);

        if ($verbose_import) {
            $retval .="<br><b>Working on username=$u_name, fullname=$full_name, and email=$email</b><br />";
            COM_errorLog ("Working on username=$u_name, fullname=$full_name, and email=$email",1);
        }

        // prepare for database
        $userName  = trim ($u_name);
        $fullName  = trim ($full_name);
        $emailAddr = trim ($email);
        $passWord = trim ($pass_word);

        if (COM_isEmail ($email)) {
            // email is valid form
            $ucount = DB_count ($_TABLES['users'], 'username',
                                addslashes ($userName));
            $ecount = DB_count ($_TABLES['users'], 'email',
                                addslashes ($emailAddr));

            if ($ucount == 0 && ecount == 0) {
                // user doesn't already exist
                $uid = USER_createAccount ($userName, $emailAddr, $passWord,
                                           $fullName);
                //パスワードを自動生成しメールを送るのをやめる
                //USER_createAndSendPassword ($userName, $emailAddr, $uid);
 


これでハックは完了です。

用意するテキストの項目と順番は、

氏名、ユーザ名、メールアドレス、パスワード

です。これらをタブ区切りで用意すればOKです。

※注意※
サイトの文字コードと同一の文字コードでファイルを保存すること!
(サイトをUTF-8で作成した場合は、テキストファイルの保存形式もUTF-8)


この箇所を試してみたのですが
パスワードがインポートできていないようです。

やりたいことは

○一括登録時に確認メールを送らないようにする ←これはできました。
○ステータスを有効にしておく ←これはできました。
●ユーザ一括登録の際にパスワードも一括で登録する ←これができません。

です。
テスト使用中のGeeklogバージョンは1.6.1sr1です。

実現の方法がありましたらご教授いただければ幸いです。


よろしくお願い致します。

 
プロフィール メール
引用して書き込む
Ivy
 2010年7月29日 01:47 JST  
掲示板 管理者
管理者

状態: オフライン


登録日: 2004年1月 1日
投稿数: 4470
ひろろんさんのコードは、テストされたものではありませんから、これを開発者にデバッグしてもらうのが良いと思いますが。

パスワードは、生データですよね?
それともすでに暗号化されたものですか?

PHP-Nuke系列のCMSなら暗号化されたものであればデータベースにそのまま流しこむだけで利用できますが、暗号化の手法がわからない他のCMSの場合はかなりやっかいだとおもいます。

 
プロフィール メール
引用して書き込む
suzukichi
 2010年7月29日 16:58 JST  
掲示板 Newbie
Newbie
okay

状態: オフライン


登録日: 2010年1月 7日
投稿数: 10
Ivyさん

ご返信ありがとうございます。
インポートするパスワードは生データです。

こちらでもテストしてみますが、
もし何かわかりましたら引き続きご教授いただければ幸いです。


よろしくお願い致します。

 
プロフィール メール
引用して書き込む
suzukichi
 2010年7月30日 22:43 JST  
掲示板 Newbie
Newbie
confused

状態: オフライン


登録日: 2010年1月 7日
投稿数: 10
開発者にデバッグとありますが、
自社の開発者、ということでしょうか?

自社に開発者はいなくて、PHP初心者の私がやっています。

いろいろ書き換えて試しているのですが
氏名、ユーザ名、メールアドレスはインポートできるのですが
パスワードがデータベースに格納されないみたいです。


system/lib-user.php
public_html/admin/user.php


このファイル以外に見直した方がいいファイルなどありますでしょうか?
ご教授いただければ幸いです。



よろしくお願い致します。

 
プロフィール メール
引用して書き込む
Ivy
 2010年7月30日 22:51 JST  
掲示板 管理者
管理者

状態: オフライン


登録日: 2004年1月 1日
投稿数: 4470
こういったハックまではこちらのサポート掲示板では対応しきれませんので、
もし必要なら有料で開発を受託する会社にご相談されてはいかがでしょうか。

このコードを提供されたひろろんさんはじめ、数社登録していますので。
開発企業 リスト

 
プロフィール メール
引用して書き込む
内容生成: 0.39 秒
新規投稿 返信投稿


通常 通常
注目トピック 注目トピック
ロック済 ロック済
新着 新着
注目トピック 新着 注目トピック 新着
ロック済トピック 新着 ロック済トピック 新着
ゲストユーザの投稿を見る 
ゲストユーザ投稿可能 
すべてのHTMLを許可 
バッドワードをチェック