CakePHPで携帯サイトを作る

| コメント(168) | トラックバック(3)
2009/11/09追記
この記事のやり方だとCakePHPのバージョンが上がったら動かなくなったので新しく記事を書きました。 CakePHPで携帯サイトを作成する

今回、携帯サイトをCakePHPで作ったので、そのまとめを覚書でブログに載せておこうと思います。

CakePHPのバージョンは1.2.0.7296を使用しました。

まず.htaccessで
php_flag session.use_trans_sid On
php_flag session.use_cookies Off
これら二つの記述をして実際に動くindex.phpと同じフォルダに配置します。
session.use_trans_sidをオンにするとリンクで移動するところ全てにGETでセッションIDを引き継いでくれるようになり、session.use_cookiesでオフにすることでクッキーの使用をしないようにするというものです。

次にapp/config/core.phpの設定を変更します。
122行目付近の
Configure::write('Session.cookie', 'CAKEPHP');
の記述の部分でGETでセッションIDを持たす時の名前を指定できるので任意の違う名前に変えておきます。
149行目付近の
Configure::write('Security.level', 'medium');
でセキュリティーのレベルが設定できるのでhighからmediumに落としました。highのままだとsession.use_trans_sidが上手く動かなかったので。
127行目付近の
Configure::write('Session.timeout', '120');
でセッションのタイムアウト時間を設定します。
セキュリティーレベルをmediumに落としたのでhighの時よりセッション時間が10倍(3時間半ぐらい)になってしまったので
ここのセッションタイムアウト時間を小さくしておきます。

それからフォームでサブミットされてジャンプする時にもセッションIDを引き継がないといけないのでapp/app_controller.phpに以下の記述を加えます。
     //redirect メソッド書き換え
     function redirect($url,$status = null){
        //携帯用にリダイレクトのURLの後ろにセッションIDを付けておく
        if (strpos($url, "?") === false) {
            $url = $url."?".session_name()."=".session_id();
        }else{
            $url = $url."&".session_name()."=".session_id();
        }
        parent::redirect($url,$status);
    }
と記述してサブミット先のページにGETでセッションIDを渡すようにします。

最後にページャーなどのURLを生成する際にGET条件が「:」「/」で作成される部分をセッションIDをGETで渡す関係で「&」「=」の形で作り変えます。(CakePHP1.2のバージョンからGETの渡し方が「:」「/」となっているので)
修正ファイル:cake/libs/router.phpのfunction url()
851行目付近の
   if (!empty($named)) {
        foreach ($named as $name => $value) {
            $output .= '/' . $name . $_this->named['separator'] . $value;
        }
    }
の記述を
    if (!empty($named)) {
        $i = 0;
        foreach ($named as $name => $value) {
            //$output .= '/' . $name . $_this->named['separator'] . $value;
            if ($i == 0) {
                $output .= '?' . $name . "=" . $value;
            }else{
                $output .= '&' . $name . "=" . $value;
            }
        $i++;
        }
    }
という風に修正します。これで携帯のセッションがゲットで渡せるようになります。

以上の設定をするとCakePHPを使って携帯サイトの構築が出来ました。
次回はCakePHPで携帯サイトを作成する時に、はまった箇所を書きたいと思います。

トラックバック(3)

このブログ記事を参照しているブログ一覧: CakePHPで携帯サイトを作る

このブログ記事に対するトラックバックURL: http://www.okushin.co.jp/mt_co_jp/mt-tb.cgi/22

» (CakePHP)携帯電話でもセッションを使えるようにする(3流プログラマのメモ書き)~のトラックバック

最近のauやソフトバンクならクッキーを使える(ゲートウェイでクッキーつけてるっぽい?)ので問題ないのですが、厄介なのはドコモです。 ドコモはクッキーも使... 続きを読む

» Buy vicodin without a prescription.(Forum vicodin buy vicodin online.)~のトラックバック

Buy vicodin without script. 続きを読む

» Vicodin es.(Vicodin es.)~のトラックバック

Vicodin es. Order vicodin es generic. 続きを読む

コメント(168)

Pharmf298 :

Very nice site! cheap viagra

Pharmf95 :

Very nice site!

Pharmd146 :

Very nice site! cheap viagra

Pharmk229 :

Very nice site!

viagra :

Hello!
viagra ,

Pharmf25 :

Very nice site! cheap viagra

Pharmc105 :

Very nice site!

Pharmb421 :

Very nice site! cheap viagra

Pharmc781 :

Very nice site!

Anonymous :

Hello!
,

buy_viagra :

Hello!
buy viagra ,

buy_viagra :

Hello!
buy viagra ,

tramadol_lawsuit :

Hello!
tramadol lawsuit ,

tramadol_veterinary :
tramadol_prospect :
20tramadol :

Hello!
20tramadol ,

viagra_wirkung :

Hello!
viagra wirkung ,

achat_accutane :

Hello!
achat accutane ,

tramadol_controlled :
tramadol_ingredient :
viagraonlinei :

Hello!
viagraonlinei ,

tramadol_hclmg :

Hello!
tramadol hclmg ,

tramadol_spiriva :

Hello!
tramadol spiriva ,

tramadol_opium :

Hello!
tramadol opium ,

Anonymous :

Hello!
,

Anonymous :

Hello!
,

Anonymous :

Hello!
,

h57_hoodia :

Hello!
h57 hoodia ,

accutane_results :

Hello!
accutane results ,

buy_hoodia :

Hello!
buy hoodia ,

free_viagra :

Hello!
free viagra ,

tramadol_hydrachlor :
e_xanax :

Hello!
e xanax ,

tramadol_arrhythmia :
tramadol_c :

Hello!
tramadol c ,

tramadol_sale :

Hello!
tramadol sale ,

kava_valium :

Hello!
kava valium ,

fioricet_price :

Hello!
fioricet price ,

propecia_photos :

Hello!
propecia photos ,

generic_valium :

Hello!
generic valium ,

tramadol_information :
valium_dosage :

Hello!
valium dosage ,

Pharma592 :

Very nice site! cheap viagra

saftMifsmaf :

Great! [url=http://users5.nofeehost.com/kontakt/shpion-vkontakte.html ]website[/url]

Induncnet :

Great :) [url=http://palevo.brinkster.net/infa/programi-dlya-kontakta.html ]site[/url]

saftMifsmaf :

Hi. [url=http://vzlom.awardspace.biz/infa/smotret-vkontakte.html ]site[/url]

Induncnet :

Super. [url=http://tayna.freehostia.com/doc/kak-vzlomat-kontakt.html ]website[/url]

Vecesysleda :

Super. [url=http://vteme.awardspace.biz/skritie-stranitsi-v-kontakte.html ]site[/url]

Unpadypoory :

Great :) [url=http://intim.awardspace.biz/infa/znakomstva-v-pitere.html ]website[/url]

GomeReerabe :

Hello. [url=http://ceks.brinkster.net/znakomstva-v-orenburge.html ]website[/url]

Jainyncskyday :

Great! [url=http://vkinfo.brinkster.net/dostup-vkontakte.html ]website[/url]

Pharmd938 :

Very nice site! cheap viagra

Joydiamox :

how long can you take diamox diamox prescription diamox alternative diamox and migraine headache -
diamox no heart problems diamox patient information : [URL=http://splitdecision.biz/forums/member.php?u=26579]diamox contraindications [/URL]diamox alternative !diamox altitude sickness dosage : should i take diamox -

Hgiutiol :

For me, it's that I contributed, ... That I'm on this planet doing some good and making people happy. That's to me the most important thing, that my hour of television is positive and upbeat and an antidote for all the negative stuff going on in life. [url=http://realreggae.ning.com/profiles/blogs/buy-diamox-online][/url]
Fresh clean sheets are one of life's small joys. :/

John1702 :

Very nice site! is it yours too

John1702 :

Very nice site! [url=http://aixypeo.com/ayrava/2.html]is it yours too[/url]

コメントする