11月 13 2011

CodeIgniter URL コントローラー

sixcore でCodeIgniterを使おうとしたら上手くURLを捌いてくれない。。。。。

どんなURLでのTOPページへ行ってしまう!!

phpのバージョンかと思い5.33にあげても駄目。。。

原因は$_SERVERの値だった!!

CodeIgniterは$_SERVER[PATH_INFO]の値を元に読み込むContollorを決めるようだ。

この値がないが原因!!

$_SERVER['ORIG_PATH_INFO']があるのでそれを代入してやることで対応

if ( !isset($_SERVER['PATH_INFO']) && isset($_SERVER['ORIG_PATH_INFO']) )
{
    $_SERVER['PATH_INFO'] = $_SERVER['ORIG_PATH_INFO'];
}

これを

system/core/Router.php の120行目あたり

$path = (isset($_SERVER[$uri])) ? $_SERVER[$uri] : @getenv($uri);

の上に記入

11月 01 2011

CodeIgniter third_party

CodeIgniterでthird_partyディレクトリを使ってみる。

third_partyとは「アプリケーションパッケージ=配布を容易にするために それ自身の単一ディレクトリ内にライブラリ、モデル、ヘルパー、コンフィグ、そして言語ファイルをすべて備えたリソースの集合の配置を推奨」

仕組みがわかれば意外と簡単で便利かも
ユーザーガイドの構成通りthird_partyにfoo_barディレクトリを配置する
サブディレクトリは使うものだけで良いようだ。

/application/third_party/foo_bar
└config/
└helpers/
└language/
└libraries/
└models/
└views/
このthird_partyを使うには

//まずadd_package_pathでthird_party/foo_bar/へパスを通す
$this->load->add_package_path(APPPATH.'third_party/foo_bar/');
//次にライブリのロード
//このfoo_barは”third_party/foo_bar/libraries/foo_bar.php”
$this->load->library('foo_bar');

続いてthird_party/foo_bar/libraries/foo_bar.php側
このfoo_bar.phpがコントローラーってイメージですね。

class Foo_bar{
    function __construct
    {
        // インスタンスを生成
        $CI =& get_instance();
        // 以降class Foo_barでの$CI->loadは
        // third_party/foo_bar/libraries/foo_bar以下の
        // model・ libraryなどを読み込む
    }
}

//終わったらremoveでパスを解除
$this->load->remove_package_path(APPPATH.’third_party/foo_bar/’);

model・ library以外help viewも同じ用に使えるのようなので便利だと思う。

11月 01 2011

CodeIgniter xajax

CodeIgniter 2.0.3へXajax 0.6 beta1を導入する
まずダウンロードhttp://www.xajax-project.org/en/download/

解凍すると [test] [xajax_core] [xjax_js] [xajax_plugins] copyright.inc.phpがあるので
[xajax_core]を[xajax]に変更してapplication/libraries/へ配置
[xajax_js]を配置index.phpと同じ場所でOK
xajax/xajax.inc.phpをxajax/xajax.phpへ変更
xajax_jsを他へ配置した場合は735行目あたりの
$sJsFile = ‘xajax_js/xajax_core.js’;を環境に合わせて変更
その時はxajax/plugin_layer/xajaxDefaultIncludePlugin.inc.phpの280行目あたりに
array($this->_getScriptFilename(‘xajax_js/xajax_core.js’), ‘xajax’);
という部分が4つほどあるのでこのパスも変更

class Test extends My_Controller {
  function __construct() {
    //ライブラリを読み込む
    $this->load->library('xajax');
    //ここにxajaxで実行したいfunctionを登録('test_function')
    $this->xajax->register(XAJAX_FUNCTION, array(&$this, 'test_function'));
    $this->xajax->processRequest();
  }

   function index(){
    //登録functionの呼び出しはxajax_をつける
    echo '$this->xajax->getJavascript(base_url().'assets/');
    echo '
';
  }

  // xajaxで呼び出されて
  //id="test_area"へ'xajaxで表示'を表示
  function test_function(){
    $res = new xajaxResponse();
     $res->assign('test_area', 'innerHTML', 'xajaxで表示');
  }

≪参考サイト≫
CodeIgniterでxajaxを利用する方法
CodeIgniter 1.6.3 と xajax 0.5 rc2 を組み合わせてみた

10月 24 2011

altsys

altsysをイントール
ダウンロード
詳しい解説

まずはファイルをダウンロードして解凍。
htmlとxoops_trust_pathの2フォルダがあるのでそれぞれをコピー。

次にmainfile.phpを編集。
include XOOPS_ROOT_PATH.’/include/common.php’;に追記。

    if (!defined('_LEGACY_PREVENT_LOAD_CORE_') && XOOPS_ROOT_PATH != '') {
        include_once XOOPS_ROOT_PATH.'/include/cubecore_init.php';
         if (!isset($xoopsOption['nocommon']) && !defined('_LEGACY_PREVENT_EXEC_COMMON_')) {
            include XOOPS_ROOT_PATH.'/include/common.php';
            // ここからテーマ内テンプレート自動更新機能
            include XOOPS_TRUST_PATH."/libs/altsys/include/autoupdate_from_theme.inc.php" ;
            //	ここから モジュール内テンプレート自動更新機能
           $tplsadmin_autoupdate_mydirnames = array( 'pico' , 'd3forum' ) ;
           include XOOPS_TRUST_PATH."/libs/altsys/include/autoupdate_from_d3module.inc.php" ;
           //	ここまで
       }
     }

互換モジュールのモジュールインストールからインストール。

これはMySQLのバージョンによってはインストールでエラーがでるその場合は
/xoops_trust_path/libs/altsys/sql/mysql.sql
にあるsql のTYPE=MyISAMを「ENGINE=MyISAM」へ変更する。

インストールが終わったらhtml/preload/SetupAltsysLangMgr.class.phpを削除する

10月 24 2011

Xoops Protector

Protectorをインストール
ダウンロード
詳しい解説
これを書いた時点でのバージョンは3.41。

まずはファイルをダウンロードして解凍。
htmlとxoops_trust_pathの2フォルダがあるのでそれぞれをコピー。
互換モジュールのモジュールインストールからインストール。

    コンフィグ global_disabled を追加しました
    コンフィグ default_lang を追加しました
    コンフィグ log_level を追加しました
    コンフィグ banip_time0 を追加しました
    コンフィグ reliable_ips を追加しました
    コンフィグ session_fixed_topbit を追加しました
    コンフィグ groups_denyipmove を追加しました
    コンフィグ san_nullbyte を追加しました
    コンフィグ die_badext を追加しました
    コンフィグ contami_action を追加しました
    コンフィグ isocom_action を追加しました
    コンフィグ union_action を追加しました
    コンフィグ id_forceintval を追加しました
    コンフィグ file_dotdot を追加しました
    コンフィグ bf_count を追加しました
    コンフィグ bwlimit_count を追加しました
    コンフィグ dos_skipmodules を追加しました
    コンフィグ dos_expire を追加しました
    コンフィグ dos_f5count を追加しました
    コンフィグ dos_f5action を追加しました
    コンフィグ dos_crcount を追加しました
    コンフィグ dos_craction を追加しました
    コンフィグ dos_crsafe を追加しました
    コンフィグ bip_except を追加しました
    コンフィグ disable_features を追加しました
    コンフィグ enable_dblayertrap を追加しました
    コンフィグ dblayertrap_wo_server を追加しました
    コンフィグ enable_bigumbrella を追加しました
    コンフィグ spamcount_uri4user を追加しました
    コンフィグ spamcount_uri4guest を追加しました
    コールバック 'xoops_module_install_protector' を実行することができませんでした
    Protector モジュールのインストールに失敗しました
    Force Uninstallation is started.

‘xops_module_install_protector’ を実行することができませんでした。。。
エラーが出た。

これはMySQLのCREATE で TYPE=MyISAMとなってるから!
/xoops_trust_path/modules/protector/sql/mysql.sql
にあるsql 「CREATE TABLE log」 「CREATE TABLE access」のTYPE=MyISAMを「ENGINE=MyISAM」へ変更する。
これでインストールできました。

次にmainfile.phpを編集。下の方に2箇所追記します。

    if (!defined('_LEGACY_PREVENT_LOAD_CORE_') && XOOPS_ROOT_PATH != '') {
        include_once XOOPS_ROOT_PATH.'/include/cubecore_init.php';
        // protector ここから追記
        include XOOPS_TRUST_PATH.'/modules/protector/include/precheck.inc.php';
        // ここまで
        if (!isset($xoopsOption['nocommon']) && !defined('_LEGACY_PREVENT_EXEC_COMMON_')) {
            include XOOPS_ROOT_PATH.'/include/common.php';
        }
        // protector ここから追記
        include XOOPS_TRUST_PATH.'/modules/protector/include/postcheck.inc.php';
        //ここまで
    }