PCの仕様にしています。(スマホの仕様にはなっていません。)
チケット
http://svn.ec-cube.net/open_trac/ticket/2204 にある携帯でのログアウトをやってみました。
「別になくてもいいかな」と思いましたが、PC、スマホで動作している機能なので、ロジック部分はすでに存在している訳で。
ただし、ソースコードの他に、 dtb_blocテーブル にブロックを追加し、レイアウト設定をする必要があります。
INSERT INTO dtb_bloc (device_type_id, bloc_id, bloc_name, tpl_path, filename, create_date, update_date, php_path, deletable_flg) VALUES (1, ?, 'ログイン', 'login.tpl', 'login', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'frontparts/bloc/login.php', 0);
INSERT INTO dtb_bloc (device_type_id, bloc_id, bloc_name, tpl_path, filename, create_date, update_date, php_path, deletable_flg) VALUES (1, ?, '【ヘッダー】ログイン', 'login_header.tpl', 'login_header', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'frontparts/bloc/login_header.php', 0);
なお、insert文内の「?」部分は、各自のデータベースに合わせ端末ID(device_type_id)内で重複しない番号を設定します。
data/class/pages/frontparts/LC_Page_FrontParts_LoginCheck.php
// 入力値のエラーチェック
$objFormParam->trimParam();
$objFormParam->toLower('login_email');
$arrErr = $objFormParam->checkError();
// added
if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
// 携帯
$arrErr2 = $this->lfCheckError($objFormParam,$objFormParam->getValue('login_phone_id'));
$arrErr = array_merge($arrErr, $arrErr2);
}
// added
// エラーの場合はエラー画面に遷移
function lfInitParam(&$objFormParam) {
$objFormParam->addParam('記憶する', 'login_memory', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
// added
if (SC_Display_Ex::detectDevice() === DEVICE_TYPE_MOBILE) {
// 携帯
$objFormParam->addParam('端末製造番号', 'login_phone_id', INT_LEN, 'n', array('MAX_LENGTH_CHECK', 'NUM_CHECK'));
$objFormParam->addParam('メールアドレス', 'login_email', MTEXT_LEN, 'a', array('MAX_LENGTH_CHECK'));
$objFormParam->addParam('パスワード', 'login_pass', PASSWORD_MAX_LEN, '', array('MAX_LENGTH_CHECK'));
} else {
// added
$objFormParam->addParam('メールアドレス', 'login_email', MTEXT_LEN, 'a', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
$objFormParam->addParam('パスワード', 'login_pass', PASSWORD_MAX_LEN, '', array('EXIST_CHECK', 'MAX_LENGTH_CHECK'));
// added
}
// added
}
// added
/**
* 入力エラーのチェック.
*
* @param SC_FormParam $objFormParam パラメーター管理クラス
* @param $login_phone_id 端末製造番号使用の有無
* @return array $arrErr エラーメッセージ配列
*/
function lfCheckError(&$objFormParam, $login_phone_id) {
$arrParams = $objFormParam->getHashArray();
$objError = new SC_CheckError_Ex($arrParams);
// パラメーター情報の初期化
if ($login_phone_id == '1') {
$objError->doFunc(array('パスワード', 'login_pass'), array('EXIST_CHECK'));
} else {
$objError->doFunc(array('メールアドレス', 'login_email'), array('EXIST_CHECK'));
$objError->doFunc(array('パスワード', 'login_pass'), array('EXIST_CHECK'));
}
return $objError->arrErr;
}
// added
新規:data/Smarty/templates/mobile/frontparts/bloc/login_header.tpl
<!--{strip}-->
<form name="header_login_form" id="header_login_form" method="post" action="<!--{$smarty.const.HTTPS_URL}-->frontparts/login_check.php" utn>
<!--{if $tpl_login}-->
<input type="hidden" name="mode" value="logout" />
<!--{else}-->
<input type="hidden" name="mode" value="login" />
<!--{/if}-->
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<input type="hidden" name="url" value="<!--{$smarty.server.REQUEST_URI|h}-->" />
[emoji:116]
<!--{if $tpl_login}-->
ようこそ <!--{$tpl_name1|h}--> <!--{$tpl_name2|h}--> 様
<!--{if $smarty.const.USE_POINT !== false}-->
/ 所持ポイント:<!--{$tpl_user_point|number_format|default:0}--> pt <br>
<!--{/if}-->
<!--{if !$tpl_disable_logout}-->
<input type="submit" name="logout" value="ログアウト">
<!--{/if}-->
<!--{else}-->
<!--{assign var=key value="login_email"}-->
<font color="#FF0000"><!--{$arrErr[$key]}--></font>
メールアドレス
<input type="text" name="<!--{$key}-->" value="<!--{$tpl_login_email|h}-->" maxlength="<!--{$arrForm[$key].length}-->" istyle="3" /><br>
<!--{*
<input type="checkbox" name="login_memory" id="header_login_memory" value="1" <!--{$tpl_login_memory|sfGetChecked:1}--> />記憶<br>
*}-->
<input type="checkbox" name="login_phone_id" id="login_phone_id" value="1" <!--{$tpl_login_phone_id|sfGetChecked:1}--> />
簡単ログインを使用<br>
<!--{assign var=key value="login_pass"}-->
<font color="#FF0000"><!--{$arrErr[$key]}--></font>
パスワード
<input type="password" name="<!--{$key}-->" maxlength="<!--{$arrForm[$key].length}-->" istyle="3" /><br>
<input type="submit" name="login" value="ログイン" />
<a href="<!--{$smarty.const.HTTPS_URL}-->forgot/<!--{$smarty.const.DIR_INDEX_PATH}-->">パスワードを忘れた方</a>
<!--{/if}-->
</form>
<hr>
<!--{/strip}-->
新規:data/Smarty/templates/mobile/frontparts/bloc/login.tpl
<!--{strip}-->
[emoji:116]ログイン<br>
<form name="login_form" id="login_form" method="post" action="<!--{$smarty.const.HTTPS_URL}-->frontparts/login_check.php" utn>
<input type="hidden" name="<!--{$smarty.const.TRANSACTION_ID_NAME}-->" value="<!--{$transactionid}-->" />
<!--{if $tpl_login}-->
<input type="hidden" name="mode" value="logout" />
<!--{else}-->
<input type="hidden" name="mode" value="login" />
<!--{/if}-->
<input type="hidden" name="url" value="<!--{$smarty.server.REQUEST_URI|h}-->" />
<!--{if $tpl_login}-->
ようこそ <!--{$tpl_name1|h}--> <!--{$tpl_name2|h}--> 様<br>
<!--{if $smarty.const.USE_POINT !== false}-->
所持ポイント:<!--{$tpl_user_point|number_format|default:0}--> pt<br>
<!--{/if}-->
<!--{if !$tpl_disable_logout}-->
<center><input type="submit" name="logout" value="ログアウト"></center>
<!--{/if}-->
<!--{else}-->
メールアドレス<br>
<!--{assign var=key value="login_email"}-->
<font color="#FF0000"><!--{$arrErr[$key]}--></font>
<input type="text" name="<!--{$key}-->" value="<!--{$tpl_login_email|h}-->" maxlength="<!--{$arrForm[$key].length}-->" istyle="3" /><br>
<!--{*
<input type="checkbox" name="login_memory" id="login_memory" value="1" <!--{$tpl_login_memory|sfGetChecked:1}--> />
コンピューターに記憶する<br>
*}-->
<input type="checkbox" name="login_phone_id" id="login_phone_id" value="1" <!--{$tpl_login_phone_id|sfGetChecked:1}--> />
簡単ログインを使用する<br>
パスワード<br>
<!--{assign var=key value="login_pass"}-->
<font color="#FF0000"><!--{$arrErr[$key]}--></font>
<input type="password" name="<!--{$key}-->" maxlength="<!--{$arrForm[$key].length}-->" istyle="3" /><br>
<a href="<!--{$smarty.const.HTTPS_URL}-->forgot/<!--{$smarty.const.DIR_INDEX_PATH}-->">パスワードをお忘れの方はこちら</a><br>
<center><input type="submit" name="login" value="ログイン" /></center>
<!--{/if}-->
</form>
<hr>
<!--{/strip}-->