------------------------------------------------------------------------------------------
[EC-CUBE] 2.11.2
[レンタルサーバ] CPI
[OS] windows XP
[PHP] 5.2.8
[データベース] MySQL 5.0.45
[WEBサーバ] Apache
[ブラウザ] FireFox11.0 / Chrome18.0.1025.152 m
------------------------------------------------------------------------------------------
※ 2009-7-10 22:03に投稿された「ログイン後、元いたページに戻る」を参考にしました。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=4292&forum=10商品の詳細ページなどでログインボタンをクリックしたら、ログインページが表示され、
そこでIDとパスを入力してログインボタンを押したり、新規会員登録をおこなってログインしたあと、
元いた商品の詳細ページに戻るような処理を実現したいと考えています。
その中で、2つの問題に行き当たりました。
?新規登録完了後の自動ログインが動作しない
商品の詳細ページにログインできるページにリンクするボタンを作成しました。
しかし、この手順で新規会員登録を行うと、登録完了後の自動ログインが動作しないという問題が発生しました。
この問題の原因がわかりません。
デザイン管理>PC>ページ詳細設定の商品詳細ページに追加したコード
<!--{if $tpl_login}-->
<!--{else}-->
<a href="<!--{$smarty.const.ROOT_URLPATH}-->mypage/login.php" style="border:solid 1px #cfcfcf!important; padding:6px 10px; 4px 10px">ログイン</a>
<!--{/if}-->
?元のページに戻す処理の構築がわからない
前回の投稿を参照して、コードを追加してみたのですが、とくになにもおこらず、
このファイルを編集すべきなのかが、わからなくなっています。
data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.phpのaction()部分に追加したコード
/**
* Page のアクション.
*
* @return void
*/
function action() {
// 会員管理クラス
$objCustomer = new SC_Customer_Ex();
// クッキー管理クラス
$objCookie = new SC_Cookie_Ex(COOKIE_EXPIRE);
// パラメーター管理クラス
$objFormParam = new SC_FormParam_Ex();
// パラメーター情報の初期化
$this->lfInitParam($objFormParam);
// リクエスト値をフォームにセット
$objFormParam->setParam($_POST);
// モードによって分岐
switch ($this->getMode()) {
case 'login':
// --- ログイン
// 入力値のエラーチェック
$objFormParam->trimParam();
$objFormParam->toLower('login_email');
$arrErr = $objFormParam->checkError();
// エラーの場合はエラー画面に遷移
if (count($arrErr) > 0) {
if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_SMARTPHONE) {
echo $this->lfGetErrorMessage(TEMP_LOGIN_ERROR);
exit;
} else {
SC_Utils_Ex::sfDispSiteError(TEMP_LOGIN_ERROR);
exit;
}
}
// 入力チェック後の値を取得
$arrForm = $objFormParam->getHashArray();
// クッキー保存判定
if ($arrForm['login_memory'] == '1' && $arrForm['login_email'] != '') {
$objCookie->setCookie('login_email', $arrForm['login_email']);
} else {
$objCookie->setCookie('login_email', '');
}
// 遷移先の制御
if (count($arrErr) == 0) {
// ログイン判定
$loginFailFlag = false;
if(SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
// モバイルサイト
if(!$objCustomer->getCustomerDataFromMobilePhoneIdPass($arrForm['login_pass']) &&
!$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'], true)) {
$loginFailFlag = true;
}
} else {
// モバイルサイト以外
if(!$objCustomer->getCustomerDataFromEmailPass($arrForm['login_pass'], $arrForm['login_email'])) {
$loginFailFlag = true;
}
}
// ログイン処理
if ($loginFailFlag == false) {
if(SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
// ログインが成功した場合は携帯端末IDを保存する。
$objCustomer->updateMobilePhoneId();
/*
* email がモバイルドメインでは無く,
* 携帯メールアドレスが登録されていない場合
*/
$objMobile = new SC_Helper_Mobile_Ex();
if (!$objMobile->gfIsMobileMailAddress($objCustomer->getValue('email'))) {
if (!$objCustomer->hasValue('email_mobile')) {
SC_Response_Ex::sendRedirectFromUrlPath('entry/email_mobile.php');
exit;
}
}
}
// --- ログインに成功した場合
if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_SMARTPHONE) {
//=====加えた部分Start===========
var_dump($_POST['login_page']);
if($_POST['login_page'] != "bpage"){
echo SC_Utils_Ex::jsonEncode(array('success' => $_POST['url']));
}else{
$this->sendRedirect($this->getLocation($_POST['url'], array(), false));
}
//=====加えた部分End===========
} else {
SC_Response_Ex::sendRedirect($_POST['url']);
}
exit;
} else
以下略
長文ですみません。
ご教授のほど、よろしくお願いいたします。
----------------
回答できる部分はできるだけ答えていきたいです。いまは、解らないことが多いですが、よろしくおねがいします。。
【開発環境 2012.08.06】 EC-CUBE:2.12.4 / OS:windows7 / DB:MySQL 5.5.14