バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

 > フロント機能 > 【フロント機能(モバイル)】2.0系での空メール処理

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
ゲスト
投稿日時: 2008/5/27 16:04
対応状況: −−−
【フロント機能(モバイル)】2.0系での空メール処理
掲題の通り、2.0系へのバージョンアップでモバイルの空メールが機能しなくなっていた問題があったため、とりあえず次の3点について修正して対応しました。



【/data/script/recieve_kara_mail.php】を以下のように変更。
#!/usr/bin/env php
<?php
/**
 * モバイルサイト/空メール受け付けスクリプト
 */
$base_dir = dirname(dirname(dirname(__FILE__))) . '/';
require_once($base_dir . 'html/define.php');
if (!defined("CLASS_PATH"))     define("CLASS_PATH",    $base_dir . "data/class/");
if (!defined("CLASS_EX_PATH"))  define("CLASS_EX_PATH", $base_dir . "data/class_extends/");
if (!defined("CACHE_PATH"))     define("CACHE_PATH",    $base_dir . "data/cache/");

require_once(CLASS_EX_PATH . "SC_Initial_Mobile_Ex.php");
// アプリケーション初期化処理
$objInit = new SC_Initial_Mobile_Ex();
$objInit->init();

require_once(CLASS_EX_PATH . "db_extends/SC_DB_DBFactory_Ex.php");
require_once(CLASS_EX_PATH . "helper_extends/SC_Helper_DB_Ex.php");
require_once(CLASS_EX_PATH . "helper_extends/SC_Helper_Mobile_Ex.php");
require_once CLASS_PATH . '/SC_MobileKaraMail.php';
require_once CLASS_PATH . '/SC_SendMail.php';

$CONF = SC_Helper_DB_EX::sf_getBasisData();

$objMail =& SC_MobileKaraMail::factory();
$objMail->parse();
$token = $objMail->getToken();
$sender = $objMail->getSender();

if (SC_Helper_Mobile_Ex::gfRegisterKaraMail($token, $sender)) {
    $subject = '空メールを受け付けました';
    $reply_body = "下記のリンクをクリックして、次の手続きに進んでください。\n" .
//                SITE_URL . "redirect.php?token=$token";
                  MOBILE_SITE_URL . "redirect.php?token=$token";
} else {
    $subject = '空メール手続きが失敗しました';
    $reply_body = "時間切れなどにより、空メール手続きを行うことができませんでした。\n" .
                  "サイトのトップへ戻ってやり直してください。\n" .
                  SITE_URL . "\n";
}

$objReply = new SC_SendMail;
$objReply->setItem($sender, "【{$CONF["shop_name"]}】$subject", $reply_body,
                   $CONF['email03'], $CONF['shop_name'], $CONF['email03'], $CONF['email04']);
$objReply->sendMail();

$objMail->success();
?>


【/data/class/session/sessionfactory/SC_SessionFactory_UseCookie.php】内のSC_SessionFactory_UseCookieクラスで、initSessionメソッドを以下のように変更。
    function initSession() {
        ///////////////////////////////////////////////////////////////////////////////////////////
        // 空メール処理用のトークンが設定されている場合はトークンを元にセッションIDの取得を試行する。
        if (isset($_GET['token'])) {
            $token = $_GET['token'];
            $objQuery = new SC_Query;
            $arrRow = $objQuery->getrow('dtb_mobile_kara_mail', 'session_id, next_url, email',
                                        'token = ? AND email IS NOT NULL AND receive_date >= ?',
                                        array($token, date('Y-m-d H:i:s', time() - MOBILE_SESSION_LIFETIME)));
            if (isset($arrRow)) {
                $objQuery->delete('dtb_mobile_kara_mail', 'token = ?', array($token));
                list($sessionId, $next_url, $email) = $arrRow;
                if ($sessionId){
                    session_set_cookie_params(0, "/", DOMAIN_NAME);
                    session_id($sessionId);
                    session_start();
                    
                    if ($email){
                        $_SESSION['mobile']['kara_mail_from'] = $email;
                    }
                    if ($next_url){
                        $objURL = new Net_URL(MOBILE_SITE_URL . $next_url);
#                       $objURL->addQueryString(session_name(), $sessionId);
                        $url = $objURL->getURL();
                        $_SESSION['next_url'] = $url;
                    }
                }
            }
        }
        ///////////////////////////////////////////////////////////////////////////////////////////
        if (session_id() === "") {

            session_set_cookie_params(0, "/", DOMAIN_NAME);

            if (!ini_get("session.auto_start")) {
                // セッション開始
                session_start();
            }
        }
    }


【/data/class_ectends/page_extends/LC_Page_Redirect_Ex.php】のLC_Page_Redirect_Exクラスでモバイル用メソッドをオーバーライド。
    function mobileProcess() {
        define('SKIP_MOBILE_INIT', true);

        if (isset($_GET['token'])) {
            if (isset($_SESSION['next_url'])){
                $next_url = $_SESSION['next_url'];
            }else{
                $next_url = SC_Helper_Mobile_EX::gfFinishKaraMail($_GET['token']);
            }
        }
        // $next_url には, セッションID付与済み
        if (isset($next_url) && $next_url !== false) {
            $this->sendRedirect($next_url, true);
        } else {
            $this->sendRedirect(MOBILE_SITE_URL, true);
        }
    }

フラット表示 前のトピック | 次のトピック


題名 投稿者 日時
 » 【フロント機能(モバイル)】2.0系での空メール処理 ゲスト 2008/5/27 16:04
     Re: 【フロント機能(モバイル)】2.0系での空メール処理 ゲスト 2008/5/27 16:13
       Re: 【フロント機能(モバイル)】2.0系での空メール処理 ゲスト 2008/5/27 16:16
         【フロント機能(モバイル)】2.4系での空メール処理 tao_s 2011/5/16 20:48

 



ログイン


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

統計情報

総メンバー数は145,027名です
総投稿数は113,505件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2340
5
h_tanaka
2139
6
umebius
2085
7
yuh
1905
8
mcontact
1820
9
red
1585
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
805
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18
balisys
603
19 DELIGHT 572
20
patapata
502


ネットショップの壺

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

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