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*****