バージョン選択

フォーラム

メニュー

オンライン状況

16 人のユーザが現在オンラインです。 (7 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 16
もっと...

サイト内検索

質問 > フロント機能 > ログインをメールアドレスから変更したい

フロント機能

新規スレッドを追加する

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kaworu
投稿日時: 2008/10/11 10:12
対応状況: −−−
半人前
登録日: 2008/8/29
居住地:
投稿: 23
Re: ログインをメールアドレスから変更したい
ログインに成功しました。

はじめに
姓+名は別のデータで使う必要が出来たため、カナの名=kana02を使用することにしました。

そのため、kana02ではカナ入力必須になっているところを、半角英数入力を可能にしました。

ログイン関係での変更は
SC_Customer.php中の
$emailを$kana02に変更、

LC_Page_FrontParts_LoginCheck.php中の
$where = "(email = ? OR email_mobile = ?) AND status = 1 AND del_flg = 0";

のところを
$where = "(kana02 = ?) AND status = 1 AND del_flg = 0";

に変更、
一番したの
$this->objFormParam->addParam("メールアドレス", "login_email", MTEXT_LEN, "a", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK"));


"EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK"を削除

で成功しました。
なにぶんPHPがよく判っていないので、「それは駄目だろう!」的なこともあるかもしれません、ここはこうしたほうが、等ございましたら、ご指摘くださいますよう、よろしくお願いいたします。

kaworu
投稿日時: 2008/10/7 20:31
対応状況: −−−
半人前
登録日: 2008/8/29
居住地:
投稿: 23
Re: ログインをメールアドレスから変更したい
有り難うございます。

各ファイルをもう一度精査して、確認してみます。
kigi
投稿日時: 2008/10/7 19:37
対応状況: −−−
半人前
登録日: 2008/9/19
居住地:
投稿: 18
Re: ログインをメールアドレスから変更したい
必要だと思います。

思いのほか影響か所が多いみたいです。
SC_Customer関連と各ファイルのemail部分すべてを修正する必要があるのでしょう。

基本的にemail部分を名前に変更すれば動くと思います。
kaworu
投稿日時: 2008/10/7 19:08
対応状況: −−−
半人前
登録日: 2008/8/29
居住地:
投稿: 23
Re: ログインをメールアドレスから変更したい
ご返信有り難うございます。
上記のコードを追加しましたが、やはりログインは出来ませんでした。

SC_Customer.phpの27行目から66行目までの部分


class SC_Customer {

    var $conn;
    var $email;
    var $customer_data;		// 会員情報

    function SC_Customer( $conn = '', $email = '', $pass = '' ) {
        // セッション開始
        /* startSessionから移動 2005/11/04 中川 */
        SC_Utils_Ex::sfDomainSessionStart();

        // DB接続オブジェクト生成
        $DB_class_name = "SC_DbConn";
        if ( is_object($conn)){
            if ( is_a($conn, $DB_class_name)){
                // $connが$DB_class_nameのインスタンスである
                $this->conn = $conn;
            }
        } else {
            if (class_exists($DB_class_name)){
                //$DB_class_nameのインスタンスを作成する
                $this->conn = new SC_DbConn();
            }
        }

        if ( is_object($this->conn) ) {
            // 正常にDBに接続できる
            if ( $email ){
                // emailから顧客情報を取得する
                // $this->setCustomerDataFromEmail( $email );
            }
        } else {
            echo "DB接続オブジェクトの生成に失敗しています";
            exit;
        }

        if ( strlen($email) > 0 && strlen($pass) > 0 ){
            $this->getCustomerDataFromEmailPass( $email, $pass );
        }
    }


ここは変更しなくても良かったのでしょうか?
kigi
投稿日時: 2008/10/7 11:43
対応状況: −−−
半人前
登録日: 2008/9/19
居住地:
投稿: 18
Re: ログインをメールアドレスから変更したい
確認なのですが

getCustomerDataFromEmailPass

関数内で
SQL文を
$sql = "SELECT * FROM dtb_customer WHERE (kana01 = ?) AND del_flg = 0 AND status = 2";

$result = $this->conn->getAll($sql, $arrValues);

以下に

SC_Utils::sfprintR($result);
SC_Utils::sfprintR($pass);
SC_Utils::sfprintR($kana01);
exit;

を書き込み入力された項目が正しいかを見えてはどうでしょうか?


kaworu
投稿日時: 2008/10/6 22:31
対応状況: −−−
半人前
登録日: 2008/8/29
居住地:
投稿: 23
Re: ログインをメールアドレスから変更したい
お返事遅れましてすみません、
教えていただいた方法を試してみました。

$where = "(name01 = ? OR name02 = ?) AND status = 1 AND del_flg = 0";

の部分はいったんデフォルトに戻して、kigi様の書いて頂いたコードを書き直してみましたが、やはりログイン出来ませんでした。

ちなみに
$sql = "SELECT * FROM dtb_customer WHERE (kana01 = ? AND del_flg = 0 AND status = 2)";

の部分は、
$sql = "SELECT * FROM dtb_customer WHERE (kana01 = ?) AND del_flg = 0 AND status = 2";
でしょうか?

両方試してみましたがこれでもログイン出来ませんでした。

やはり、
$where = "(email = ? OR email_mobile = ?) AND status = 1 AND del_flg = 0";
の部分も変更して
getCustomerDataFromEmailPassの引数の部分も変更しなければなりませんでしょうか?

その場合はどのように変更すればよいかを教えて頂けると助かります、本当にお願いばかりで申し訳ありませんが、よろしくお願いいたします。
kigi
投稿日時: 2008/10/6 7:57
対応状況: −−−
半人前
登録日: 2008/9/19
居住地:
投稿: 18
Re: ログインをメールアドレスから変更したい
お返事が遅れました。


lfInitParamの部分は、私のミスです。formタグ内のinputタグnameの名前となります。name01ではなくkana01

また、getCustomerDataFromEmailPassの部分のSQLが不完全でした。
$sql = "SELECT * FROM dtb_customer WHERE (kana01 = ? AND del_flg = 0 AND status = 2)";

申し訳ありませんでした。


$where = "(name01 = ? OR name02 = ?) AND status = 1 AND del_flg = 0";

に変更しますと、getCustomerDataFromEmailPassの引数の部分も変更しなければなりませんが引数を変更することで対応が可能となるはずです。
kaworu
投稿日時: 2008/10/4 23:07
対応状況: −−−
半人前
登録日: 2008/8/29
居住地:
投稿: 23
Re: ログインをメールアドレスから変更したい
教えていただいた方法を試してみました。

が、残念ながらログイン出来ませんでした。


引用:


$this->objFormParam->addParam("名前", "name01", MTEXT_LEN, "a", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,""));

を追加し、
$this->objFormParam->addParam("メールアドレス", "login_email", MTEXT_LEN, "a", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK"));

を削除する。
$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'], true)
を
$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['kana01'], true)
へ変更

SC_Customer.phpをこのように変更してはどうでしょうか
テストを行っていないので何とも言えませんが

function getCustomerDataFromEmailPass( $pass, $kana01, $mobile = false ) {
        $arrValues = array($kana01);
        
		// 本登録された会員のみ
        $sql = "SELECT * FROM dtb_customer WHERE (kana01 = ? AND del_flg = 0 AND status = 2";
        $result = $this->conn->getAll($sql, $arrValues);
        if (empty($result)) {
            return false;
        } else {
            $data = $result[0];
        }

        // パスワードが合っていれば顧客情報をcustomer_dataにセットしてtrueを返す
        if ( sha1($pass . ":" . AUTH_MAGIC) == $data['password'] ){
            $this->customer_data = $data;
            $this->startSession();
            return true;
        }
        return false;
    }


ところで、lfInitParamへの追加のところでは”name01”になっていますが、
以下のところでは”kana01”になっていますが、これはこの方がいいのでしょうか?

また前にmihoさんが書き込みされた方法の
LC_Page_FrontParts_LoginCheck.phpの、

$where = "(email = ? OR email_mobile = ?) AND status = 1 AND del_flg = 0";

のところを

$where = "(name01 = ? OR name02 = ?) AND status = 1 AND del_flg = 0";
に変更したままですが、これはそのままで良かったでしょうか?
kaworu
投稿日時: 2008/10/2 21:17
対応状況: −−−
半人前
登録日: 2008/8/29
居住地:
投稿: 23
Re: ログインをメールアドレスから変更したい
kigi様

詳しい説明有り難うございます。
早速試してみます、またご報告させていただきます
kigi
投稿日時: 2008/10/2 10:18
対応状況: −−−
半人前
登録日: 2008/9/19
居住地:
投稿: 18
Re: ログインをメールアドレスから変更したい
lfInitParamへの追加は
$this->objFormParam->addParam("名前", "name01", MTEXT_LEN, "a", array("EXIST_CHECK", "MAX_LENGTH_CHECK" ,""));

を追加し、
$this->objFormParam->addParam("メールアドレス", "login_email", MTEXT_LEN, "a", array("EXIST_CHECK", "MAX_LENGTH_CHECK", "EMAIL_CHECK", "NO_SPTAB" ,"EMAIL_CHAR_CHECK"));

を削除する。
$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'], true)
を
$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['kana01'], true)
へ変更

SC_Customer.phpをこのように変更してはどうでしょうか
テストを行っていないので何とも言えませんが

function getCustomerDataFromEmailPass( $pass, $kana01, $mobile = false ) {
        $arrValues = array($kana01);
        
		// 本登録された会員のみ
        $sql = "SELECT * FROM dtb_customer WHERE (kana01 = ? AND del_flg = 0 AND status = 2";
        $result = $this->conn->getAll($sql, $arrValues);
        if (empty($result)) {
            return false;
        } else {
            $data = $result[0];
        }

        // パスワードが合っていれば顧客情報をcustomer_dataにセットしてtrueを返す
        if ( sha1($pass . ":" . AUTH_MAGIC) == $data['password'] ){
            $this->customer_data = $data;
            $this->startSession();
            return true;
        }
        return false;
    }
(1) 2 »
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は89,486名です
総投稿数は110,100件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1655
8
red
1570
9
mcontact
1306
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.