読者です 読者をやめる 読者になる 読者になる

CodeIgniterを教える時のメモ

☆ちょっと自信が無いので、まだ参考程度に。このままやって上手くいく確証なし。

最初

# application とか system が入ってるディレクトリ = /path/to/your_application_dir
mkdir /path/to/your_application_dir/application/temp
chown -R ftsh.apache /path/to/your_application_dir
chmod g+w /path/to/your_application_dir/application/temp

ドキュメントルートの.htaccess

#.htaccess
## common/ と test.php を良く使うので。
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond $1 !^(index\.php|images|robots\.txt|common|test.php)
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

application/config/config.php とか autoload.php とか

<?php

// 空白にしたままだと formのURLがIPアドレスになる
$config['base_url'] = 'https://example.com/path/to/ci';

/***
 * application/config/config.php
 */
//   空白にしておかないとURLが微妙
$config['index_page'] = ''; 

//   言語
$config['language']	= 'japanese';

//   securityライブラリを使うための設定
$config['encryption_key'] = '(キー文字列:32文字)';

// sessionライブラリを使うための設定
$config['sess_driver'] = 'files';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = APPPATH.'temp/'; // filesの場合必須。好みの場所に。webサーバが書き込みできるようにpermission設定する
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 300;
$config['sess_regenerate_destroy'] = FALSE;

// cookieの設定
$config['cookie_prefix']	= '';
$config['cookie_domain']	= '(適宜あわせる)'; 
$config['cookie_path']		= '/(httpd.confで設定したアプリケーションのAlias部に合うように)'; 
$config['cookie_secure']	= FALSE; // httpsプロトコル下で使用するアプリの場合はTRUE必須。
$config['cookie_httponly'] 	= FALSE; // ciのcookieをクライアントのJavascriptで使えないようにしたい場合はTRUE

// XSS対策 : 常に自動で POST および COOKIE データをフィルタしたい場合
$config['global_xss_filtering'] = FALSE; // 常時有効にしたければTRUE,ガイドには"相当量のリソースを使うからね?"という感じで留意するように書かれている。

// CSRF対策
$config['csrf_protection'] = TRUE;           // CSRF対策は原則有効に
$config['csrf_token_name'] = 'csrf_token';   // 好みで
$config['csrf_cookie_name'] = 'csrf_cookie'; // 好みで
$config['csrf_expire'] = 7200;
$config['csrf_regenerate'] = TRUE;
$config['csrf_exclude_uris'] = array();      // 指定の URI を CSRF 保護からホワイトリストに登録することができます (例えば外部からコンテンツを POST されることを期待する API エンドポイント) 。 「 csrf_exclude_uris 」configパラメータを編集することで、これらの URI を追加することができます:


// -------------------------------------------------------------
?>




<?php
// 暗黙的な導入 - ライブラリとかモデルとか
// application/config/autoload.php

$autoload['libraries'] = array('session','database','email','form_validation');
//  *** emailライブラリは日本語使用のための修正必須と留意する。
//  ***  "qdmail"を別途取り込んで使う場合が多いので、詳しくは事例を参照。


// ほぼ確実に使うヘルパーを指定しておく
$autoload['helper'] = array('ORIGINAL','security','url','form');
?>



<?php
// データベース接続設定
// application/config/database.php

$active_group = 'default';
$query_builder = TRUE;

$db['default'] = array(
	'dsn'	=> '',
	'hostname' => 'localhost',
	'username' => '',
	'password' => '',
	'database' => '',
	'dbdriver' => 'mysqli',
	'dbprefix' => '',
	'pconnect' => FALSE,
	'db_debug' => (ENVIRONMENT !== 'production'),
	'cache_on' => FALSE,
	'cachedir' => '',
	'char_set' => 'utf8',
	'dbcollat' => 'utf8_general_ci',
	'swap_pre' => '',
	'encrypt' => FALSE,
	'compress' => FALSE,
	'stricton' => FALSE,
	'failover' => array(),
	'save_queries' => TRUE
);

?>




<?php
// ルート - デフォルトコントローラの指定
// application/config/routes.php

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
?>






<?php
// エントリポイント
// html/index.php

/*
 *---------------------------------------------------------------
 * SYSTEM DIRECTORY NAME
 *---------------------------------------------------------------
 *
 * This variable must contain the name of your "system" directory.
 * Set the path if it is not in the same directory as this file.
 */
	$system_path = '../system';

/*
 *---------------------------------------------------------------
 * APPLICATION DIRECTORY NAME
 *---------------------------------------------------------------
 *
 * If you want this front controller to use a different "application"
 * directory than the default one you can set its name here. The directory
 * can also be renamed or relocated anywhere on your server. If you do,
 * use an absolute (full) server path.
 * For more info please see the user guide:
 *
 * https://codeigniter.com/user_guide/general/managing_apps.html
 *
 * NO TRAILING SLASH!
 */
	$application_folder = '../application';
?>

バリデーション

form_validation ライブラリで、xss_clean を使いたい時は、application/config/autoload.phpなんかでヘルパに securityを読み込ませておく

セッション使いたいときは、application/config/autoload.phpなんかでsessionライブラリをロードして、
application/config/config.phpのencryption_keyを設定したうえ同じファイル中の$config['sess_save_path'] = APPPATH . 'temp/';などと書き込める場所を適切に設定してやる。



エラー画面

application/views/errors/html/error_general.php

というのがあるので、適宜修正するとよい。
Error Handling — CodeIgniter 3.1.3 documentation