2006年07月05日

Ruby on Rails の手法を、その辺のどのレンタルサーバでも利用する方法

IT Pro の記事:"「ブレイク直前のLinux」を思い起こさせるRubyのマグマ"などを見ると、Ruby on Rails が日本でも使う人が増えていることが分かります。また、「生産性が高い」、「作業する人がうれしい」などの利点も大きく取りあげられています。

実際には既にこの概念はいろいろな言語にポートされていますし、PHPにも色々あります。PHP on Trax などは、Ruby on Rails をそのまま移植することを目指しているみたいです。

しかし、やはりPHPにはPHPなりのやり方があるのだろう、と。それを最小限のセットで実現しているのがCake PHPです。(Symfony や PRADO が PHP5 しかサポートしていないのに対して、PHP4とPHP5の両方で使えるようにトリックを使っているのがCakePHPです。現状、レンタル共有サーバではPHP4がけっこうあるので、この間口を広げる努力は大切だと思います。)

また、たいていのレンタルサーバでPHPが使えるようになっていますので、CakePHP に習熟すると、Ruby on Rails と同じ“手法”を使った開発が、どこでもできるようになると思います。

ただ、CakePHP の初期デザインがいまいち?なのと、ブログのチュートリが不親切なせいで、ユーザが増えていないように思うんですよね。このあたりをひとつ何とか分かりやすく解説できればと思います。
posted by SDozono at 17:04| ロサンゼルス ☀| Comment(0) | TrackBack(0) | PHP Framework | このブログの読者になる | 更新情報をチェックする

いちばん簡単な認証システム

CakePHP が標準で使える認証システムとしては、ACLがあります。INIベースとデータベースを切り替えることができたり、ユーザのアクセス許可コントロールなどかなり複雑なことができますが、それゆえに設定が面倒だったりします。

こちらで作成しているものは、「少人数で使用するWEBアプリ」なので、一つのユーザ名とパスワードを入れれば入れる、という仕組みのものを試しに作成してみました。

SdAuth.zip
sd_auth.zip

使い方は、

1) sd_auth.php(このファイル)を app/controllers/components に置く。
login.thtml を app/views/layouts に置く。

2) app_controller.php を、cake/appcontroller.php から app/ にコピーして、自分用に書き込めるようにする。

3) そこに以下を追加する。これで、プロジェクト全体が必ずここを通過するようになる。

class AppController extends Controller {

   var $components = array('SdAuth');

   function beforeFilter()
   {
    // Auth Check.
    if($this->SdAuth->isloggedin() == FALSE){
//$this->layout = “login”;
*$this->layout = '';*
*$this->render('../layouts/login');*
*exit();*
*など。pm11opさん、ありがとうございます。*
http://pm.11op.net/2007/12/post-28.php
    } else {
      $this->layout = "default";
    };
   }
}

4) ログアウトのリンクをどこかに作成する。どこかの ****s_controller.php に、次のコードを追加。

    function logout(){
     $this->SdAuth->logout();
     $this->redirect("/index.php");
    }

これで、ログインしないと使えないWEBシステムを簡単に作成できます。

これはモジュールとして作成したので、どんなプロジェクトにも使いまわすことができます。

こういういろいろな人の書いた Tips 集のようなものが、cakephp.org にある「スニペット」です。

http://cakeforge.org/snippet/

上記のURLに、いろいろ便利 Tips があります。
posted by SDozono at 16:53| ロサンゼルス ☀| Comment(3) | TrackBack(3) | CakePHP Tips | このブログの読者になる | 更新情報をチェックする