[Tep-j-general] Re: ログインを最初にする方法

Back to archive index

Seiji Sogabe sogab****@alles*****
2005年 5月 24日 (火) 00:56:09 JST


こんばんわ、曽我部です。

すみません、だいぶ経緯を省いて書いたので、混乱させてしまったかもしれません。

>>http://lists.sourceforge.jp/mailman/archives/tep-j-general/2005-April/015565.html
>>のように、認証が必要な画面に追加すればできるのではないでしょうか。
> 
> 
> この方法でも検討してみたのですが、catalog/default.phpなどに上記ページの
> 処理を追加してみたところ、エラーになってしまいました。認証が必要な画面と
> いうのはどういう画面の事なのでしょうか?私はトップページなのかと思って
> いましたが・・・。

どのようなエラーになるのでしょうか。エラーメッセージがあれば教えてください。
認証が必要な画面というのは、Takaganeさんのおっしゃるとおり、トップページも
含みますし、その他のcatalog/product_info.phpとかのページも含みます。

今回の「ログインを最初にする方法」において、ユーザがcatalog/product_info.phpとか
を直接指定した場合を想定しないのであれば、トップページであるdefault.phpだけでいい
です。(方法1)

その場合、トップページにログイン画面がでてきても、左右のカラムで商品を選択したら、
ログインをパスできてしまうので、ユーザが参照できる可能性のあるページすべて
(=認証が必要な画面)に上記のようなコードの追加が必要かと思ったのです。
(方法2)
(login.phpからcolumn_left.phpやcolumn_right.phpを削除する?)

で、上記のようにすべてのページに処理を追加するのも面倒なので、
全ての画面がincludeするapplication_top.phpに、

    if (!tep_session_is_registered('customer_id')) {
      $navigation->set_snapshot();
      tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
    }

を追加し、上記とは逆に認証を必要としないページを除外しようと、

if (basename($PHP_SELF) != FILENAME_LOGIN) {

という条件を追加しました。実際は、

  if (basename($PHP_SELF) != FILENAME_LOGIN &&
      basename($PHP_SELF) != FILENAME_CREATE_ACCOUNT &&
      basename($PHP_SELF) != FILENAME_CREATE_ACCOUNT_PROCESS &&
      basename($PHP_SELF) != FILENAME_CREATE_ACCOUNT_SUCCESS) {

    if (!tep_session_is_registered('customer_id')) {
      $navigation->set_snapshot();
      tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
    }
  }

な感じになると思います。確認はしていませんが。(方法3)

方法3は、方法2が面倒なので手抜きをしようとした結果、ひねくれた方法になっています。
また、方法2は除外するページを間違えると無限ループになるのであまりよくないかもしれません。

とりあえず、今安直に思いつく方法は上記の通りですが、もっといい方法があるかもしれませんし、
contributionにいいモジュールがあるかもしれません。

それでは。
-- 
sogab****@alles*****




Tep-j-general メーリングリストの案内
Back to archive index