Archive for 9月, 2011
CodeIgniter2 #6 認証
さて、認証システムだがこちらも標準ではない。で、いろいろ参考にして今回はこちらのページのを使用することにしました。
- データベースにテーブルを作成
- application/libraries/authex.php を作成
- login コントローラ/Viewを作成
ふむふむ。
parent::Controller(); のところを parent::__construct(); に変更しないと動かないぞと。
CodeIgniter2 #5 画面のいろいろ

まあ、WEB制作には画面の設計がつきもので、デザインに凝り、ボタンに凝り、位置に凝り、精一杯の努力をするわけだがなんとしても絵心がないので、今回はそこらあたりをまとめて何とかしてくれそうな jQuery Mobile にした。
それだけ。
まあ、その他を検討していないわけではないが、betaって言う問題もあるけどそのうちbetaも取れるだろうし。その他のいろいろに比べれば利点がいっぱいと言うことで決定。
CodeIgniter2 #04 Layout レイアウトライブラリ
標準では Layout 機能がないのでここからもらってくる。
// file /application/libraries/Layout.php
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
class Layout
{
var $obj;
var $layout;
function Layout($layout = "layout_main")
{
$this->obj =& get_instance();
$this->layout = $layout;
}
function setLayout($layout)
{
$this->layout = $layout;
}
function view($view, $data=null, $return=false)
{
$loadedData = array();
$loadedData['content_for_layout'] = $this->obj->load->view($view,$data,true);
if($return)
{
$output = $this->obj->load->view($this->layout, $loadedData, true);
return $output;
}
else
{
$this->obj->load->view($this->layout, $loadedData, false);
}
}
}
?>
使い方はこんな感じ。
// 最初にライブラリの読み込み
$this->load->library('layout', 'layout_main');
// もしいつも使うのであれば、application/config.php にて以下の設定を行う
$autoload['libraries'] = array('layout');
// ビューの出力
$data->title_for_layout='ページタイトル';
$this->layout->view('/shop/view_cart', $data);
// layout ファイル /application/views/layout_main.php
<html>
<head>
<title><?=$title_for_layout?></title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<link rel="stylesheet" href="/css/main.css" type="text/css" />
</head>
<body>
<div id="pagewidth" >
<div id="header" ><img src="/images/header.jpg" width="700" height="200"></div>
<div id="wrapper" class="clearfix" >
<div id="twocols" class="clearfix">
<?php echo $content_for_layout?>
</div>
</div>
<div id="footer" > Footer >/div>
</div>
</body>
</html>
CodeIgniter2 #03 $_GETを使えるように

いくら何でも、$_GET とれないと困るだろうということで、ここと、ここを参考にさせてもらって修正する。
- application/config/config.php の 修正
$config['allow_get_array'] = TRUE; $config['enable_query_strings'] = TRUE; $config['controller_trigger'] = 'c'; $config['function_trigger'] = 'm'; $config['directory_trigger'] = 'd'; $config['permitted_uri_chars'] = ''; $config['uri_protocol'] = "AUTO";
- application/config/hooks.php の修正
$config['enable_hooks'] = TRUE;
$hook['pre_system'][] = array(
'class' => 'ConvertQueryString',
'function' => 'execute',
'filename' => 'ConvertQueryString.php',
'filepath' => 'hooks',
'params' => array()
);
これで、$_GET のパラメータはすべて $_PUT にぶち込まれるので、バリデーションも行える様になる。ただ、getで呼び出すときには &c=controller&m=function を付加する必要がある。
※サーバによっては?以降がうまくとれないことがあるらしい。
※form_open (‘c=controller&m=func”) って書く必要がある
CodeIgniter2 #02 ありがちな初期設定
- こちらのページを参考にしました。
- application/config/config.php にベースURLを記述
- application/config/database.php にデータベース接続情報を記述
- index.php の実行モードを development から testing へ変更。エラーを画面表示するようにする。
- application/config/config.php の $config['log_threshold'] = 4; へ変更。すべてのログを出力する。
- application/logs/ フォルダーのパーミッションを書き込み可能に変更。
- application/config/config.php の $config['encryption_key'] = ”; に適当な文字列を設定。
- application/config/config.php の $config['sess_cookie_name'] = ‘ci_session’; に適当な文字列を設定。
- $config['sess_use_database'] = FALSE; を TRUE に変更。データベースにセッションテーブルを作成する。
- application/config/config.php の $config['global_xss_filtering'] = FALSE; を TRUE に変更。
- application/config/config.php の $config['csrf_protection'] = FALSE; を TRUE に変更。(全てのformタグをformヘルパーの form_open() で開くこと)
とりあえず、これくらい設定する。
で、URLにアクセスしてみる。エラーが出なければOK。エラーが出た場合にはログが application/logs/ に出力されるので確認する。下の出ればOK。
CodeIgniter2 #01 ありがちにインストール
CodeIgniter2.0.3を使ってみようと思ったときのメモ
ちなみにCodeIgniterにした理由以下の通り。
- 軽量である&学習時間が少なくてすむ
- フレームワークの縛りが緩い
- 日本語ドキュメントが充実
- php 5.1.6 に対応している
特に最後の php5.1.6に正式に対応しているのが決め手。Cake/Symfony等の最新バージョンでは 5.3 以上でないといけないとなっており、利用できないサーバが発生する可能性が高いためです。自社で専用サーバにて稼働させる場合には特に問題ないけど、ありがちな話でお客様は安い共有サーバを使っていたりする可能性が高いので。
- 日本CodeIgniterユーザ会のページより日本語化済みのファイルをダウンロード。
- ファイルを展開(展開後のファイルサイズは6.5M程度、ユーザーガイドを除けば1.3M)
とりあえず、これで用意はできた。もちろん別途に以下の用意もしました。
- サーバ(今回は自社のPleskサーバに領域を設定)
- ドメイン
- データベース(MySQL)
