CakePHP で携帯用のページを作成する際に CakePHP 携帯用ビューを表示する | Shin x blog のページが大変参考になります。 しかし、/m/ のような URL ではなく携帯専用サイトにしたかったので下記のような方法で実装しました。なお、PC でアクセスしたときには /pc.html という静的なページを表示するようにしてあります。 また、PC、携帯の振り分けはユーザエージェントで行っています。 携帯用コンポーネント app/controller/component/mobile.php を作成し、PEAR の Net_UserAgent_Mobile を使用しています。このコンポーネントでユーザエージェントを判定して PC だったら pc.html へリダイレクトします。 PEAR の Net_UserAgent_Mobile はサーバにインストールしてもいいのですが
CakePHPガイドブックを参考により実践的な携帯版の構築方法を検証 携帯版システムの前提条件 PC版システムをベースにビュー・レイアウトを切り替えることで対応する 携帯版独自の遷移はコントローラーに通常と同様に記述する 携帯版はSJIS、PC版はEUC(UTF8)での出力とする 携帯版の判定は各キャリアのIPアドレスのリストを元に判定し、携帯以外からのアクセスを防止する機能を実装 PC版に携帯からアクセスを行った場合に自動的に携帯用URLにリダイレクトさせる 携帯版ではセッションIDを常にパラメータ内に保持させる /m/でアクセスされた場合は携帯版システムとして認識させ、Webサービス'Mobile'を有効にする 手順1.設定ファイル・ルーティング設定を追加する /app/config にモバイル用の設定ファイル mobile.ini.php を配置し bootstrap.php か
CakePHP1.2ではCakePHP 携帯用ビューを表示するで利用していたwebservicesの機能が無くなります。 1.2-betaでRouting.webservicesをonにすると以下のようなメッセージが表示されます。 Deprecated: webservices routes are deprecated and will not be supported in future versions. Use Router::parseExtensions() instead. The prefix automagic in CakePHP routingで紹介されているように、1.2からはwebservicesに替わりprefixをURLルーティングで使用するようです。 そこで実際にどのように使用するかを試してみました。 1. URLルーティングでprefixを設定する Rou
サイトにPC用と携帯用がある場合、PC用とは別に携帯用の表示を行う方法です。この方法なら同じコントローラ・アクションで、レイアウトとビューファイルを変更することができます。なお携帯版のURLは[/m/]で始まるようにします。 1.URLルーティングを設定する。 [app/config/routes.php]で[/m/]からURLが始まる場合にwebservicesとして扱うように設定します。 [app/config/routes.php] <?php (snip) $Route->connect('/m/:controller/:action/*', array('webservices' => 'Mobile')); ?> 2.WEBSERVICESを有効にする。 webservicesがフレームワーク内でサポートされるように設定を変更します。 [app/config/core.php:
空メール送信での会員登録や、メールに添付されたファイルをサーバに自動でアップロードなど、メール受信からのスクリプト実行というのは様々なシーンで用途があると思います。 今回はそれをCakePHP 1.2系のシェル機能を使って実現してみました。(1.2.0.6311-betaで確認) 使用するもの メールサーバはqmail、メールの解析処理はPEARのMail_mimeDecodeを使用します。 PEARを使用できるようにセットアップ まずapp/vendorsの下にPEARフォルダを作り、PEARのコアクラス(PEAR.php)とMail_Mimeパッケージのクラスを置く。 次に、以下のソースをapp/vendors/pear_ini.phpとして保存。 <?php define('PEAR_PATH', dirname(__FILE__) . DS . 'PEAR'); set_inclu
以前requireAuthの拘束が強すぎるというのを書いたんですが、実際にrequireAuth指定していないアクションではトークンの再生成などを行わないよう、Securityコンポーネントをいじってみました。具体的には次のような拡張コンポーネントを作成します。 PLAIN TEXT PHP: require_once(COMPONENTS.'security.php'); class MySecurityComponent extends SecurityComponent { function startup(&$controller) { if (!in_array($controller->action, $this->requireAuth)) { $controller->params['requested'] = 1; } parent::
CSRF attacks take advantage of the fact that if an authenticated client opens a page with a link , the browser will treat it as a regular link (normal!) and send over the credentials to the website, thus allowing the action to be performed. This component's goal is to suppress that risk by protecting your links with a secret. Everytime an action is authenticated and performed, the component will
ちょっとページング処理を入れる必要が出てきて、PEAR::PagerでもいいんだけどCakeのinclude_pathってPEARと相性悪いのでさてさてどうしようと思ってぐぐったらtoyosystem | CakePHP::Pagenation(ページャ、ページング処理)という記事が出てきて、paginationコンポーネント、ヘルパー、エレメントを指定の場所に置いてテケテケっとするとページングが出来るという内容で、「私が探し求めていたのはまさにこれだ!」というわけで速攻で使ったのですが、すべて実装が終わったあとにPaginatorの使い方。CakePHP1.2 – CPA-LABテクニカルなどというエントリを発見。1.2からはpager内蔵らしいです。 使い方は内蔵されてる分paginationよりさらに簡単。 controllerはこんな感じ。5件ずつ表示したい。 function i
大量のデータを扱うサイトの場合、ページャーの実装は必要であり、それは実に面倒なことだ。 普通のPHPサイトではPEAR::Pagerが有名でよく使われるところだろう。 PEAR::Pager マニュアル Pager - PEAR 使い方・サンプル ページング(PEAR::Pager) - PHPBook PEAR::Pager で Digg っぽいページャを作る - cl.pocari.org PEAR::Pager ページ番号を PATH_INFO で渡す - Sun Limited Mt. CakePHPでの扱いは以下。 ページネーション - CakePHP Users in Japan Pagerの実装 - Wheel Of Fortune -コンポーネント。ファイル一覧をデータとして扱う PEARが使えない環境の場合、CakePHPのPaginationコンポーネント
CakePHP の Pagination に関してまとめてみました。 コントローラでコンポーネント、ヘルパーに Pagination を指定 // 使用コンポーネント名 var $components = array('Pagination'); // 使用ヘルパー名 var $helpers = array('Pagination'); コントローラの一覧表示するアクションでの一覧表示取得方法 $this->Pagination->modelClass = 'Model'; // 使用するモデル $this->Pagination->sortBy = 'created'; // デフォルトのソートするフィールド名 $this->Pagination->direction = 'DESC'; // デフォルトの昇順、降順を指定 $this->Pagination->show = 10; /
ブラウザを閉じた後でも自動的にログインできるようにログイン・フォームに「次回から自動的にログイン」「次回からログインを省略」「Remember me」などのチェックボックスが備わっているケースを良く見かけます。AuthComponentとCookieComponentを使って実装してみます。AuthComponentのページで説明した例の続きとして説明いたします。 その1では、Authenticationにある方法を紹介します。 自動ログイン機能とは 自動ログイン機能とは、ログインが必要なページにもユーザー名やパスワードの入力なしでアクセスできる便利な機能です。ログイン時に「次回から自動的にログイン」にチェックしてログインすると自動ログインが有効になります。クッキーが使えるブラウザのみ対応。 自動ログインの仕組み 「次回から自動的にログイン」にチェックしてログインしたユーザーのブラウ
Warning: Cannot modify header information - headers already sent by (output started at /home/blog1602/blogs/inc/_blog_main.inc.php:481) in /home/blog1602/public_html/hanaya/skins_custom/_main.php on line 65 CakePHP1.2「SNS作成日記」 画像のアップロード機能を作りたいと思います。 いろいろ方法はあるみたいなのですが、今回はデータベースに「画像保存名+拡張子」を保存し、画像は「pics」フォルダを作成し、そこに保存します。 なので、「users」テーブルに「pic」項目を追加します。 仕様は以下のようにします。 画像はJPEG/GIF/PNGなどがアップ可能 1ユーザーにつき1
CakePHPでCSRF対策を行う方法です。 フレームワークに含まれているSecurityコンポーネントを使います。 Security#requestAuth()にアクションを記述しておくと、アクション実行前に正規リクエストかどうかをチェックします。チェックの方法はCSRF対策で一般的なワンタイムトークン方式です。 まずController#beforeFilter()にてチェックを行うアクションを指定します。 [app/controller/test_controller.php] < ?php class TestController extends AppController { var $name = 'Test'; var $components = array('Security'); function beforeFilter() { $this->Security->req
CakePHP 1.2 を使用してフォームを作成してバリデーションを使用したメモです。 下記サイトを参考にさせていただきました。 cakePHP 1.2のバリデーションを理解する – cakephp – クロアチアで働くプログラマー日記 例としてメールアドレスを2回入力させるフォームを考えて見ます。 バリデーションルールとして 必須項目 メールアドレスとして正しい メールアドレスがユニーク 2回入力したメールアドレスが一致する モデルにバリデーションを定義する var $validate = array( 'email' => array( 'unique' => array( 'rule' => array('checkUnique', 'email'), 'message' => 'メールアドレスは既に登録されています' ), 'rule1' => array( 'rule' => a
CakePHP 1.2.6 をさくらのレンタルサーバに設置したところ、Internal Server Error になってしまった。トップページは表示されるが、コントローラを指定すると Internal Server Error になってしまう。エラーログを見ると、 mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary. と出ている。ちなみにドキュメントルートは app/webroot にしていました。 (続きを読む…)
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く