トップ  > メモ一覧  > カテゴリ「機能拡張」の絞り込み結果 : 8件

8件中 1 〜 8 表示  1 

No.3750【引用】CodeIgniter 2.xで、iPhone/Androidなどスマートフォンを無理矢理判別する方法

CodeIgniter 2.xで、iPhone/Androidなどスマートフォンを無理矢理判別する方法

投稿日: 2011/06/06 作成者: Makoto
この記事を読むのに必要な時間: 約 2 分 18 秒
 

CodeIgniter徹底入門 河合 勝彦 鈴木 憲治 安藤 建一
CodeIgniter でプログラムを作るなら、”ほぼ”必須の本。残念ながら1.7ベースだけど、考え方は変わっていないので、結構使えます。この本と、 CodeIgniterへようこそ : CodeIgniter ユーザガイド 日本語版 があれば、なんとかCodeIgniter 2.xのプログラム...

引用元

更新:2011/06/06 17:21 カテゴリ: CodeIgniter  > 機能拡張 ▲トップ

No.3702【引用】CodeIgniterで簡単メンテナンスモード

CodeIgniterで簡単メンテナンスモード
PHP , Codeigniter
なにかしら Webサービス を作成して継続していくなら メンテナンス モードの作成は必須になると思います。とはいえこういった機能にあまり時間をかけたくないですよね。 CodeIgniter なら簡単に メンテナンス モードを作成できます。
フック
CodeIgniter にはフック機能というのがありまして、 フレームワーク の要所々々でコアをハックすることなく フレームワーク の動作を変更できます。今回はこの機能を利用して メンテナンス モードを作成します。...

引用元

更新:2011/05/26 09:07 カテゴリ: CodeIgniter  > 機能拡張 ▲トップ

No.3466 PHPSession

PHPSession

Category:Libraries -> Session

(Originally discussed at http://codeigniter.com/forums/viewthread/44945/)

This is a session library that uses native PHP sessions. It stores data server-side, instead of client-side (like regular CI sessions).

This library also supports ‘flash’ variables, as described in this forum thread. These let you set a variable that will only exist for one page load, then be automatically destroyed (unless you specify you want to keep them for one more load). Useful for passing variables from one page to the next (ie, error messages) without having to do anything in the URL.

FILES

application/init/init_phpsession.php

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

if ( ! 
class_exists('PhpSession'))
{
     
require_once(APPPATH.'libraries/phpsession'.EXT);
}

$obj 
=& get_instance();
$obj->phpsession = new PhpSession();
$obj->ci_is_loaded[] 'phpsession';

?> 

application/libraries/phpsession.php

<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class 
Phpsession {
var $_flash = array();

    
// constructor
    
function Phpsession() {
        session_start
();
        
$this->flashinit();
    
}
    
    
/* Save a session variable.
     * @paramstringName of variable to save
     * @parammixedValue to save
     * @paramstring  (optional) Namespace to use. Defaults to 'default'. 'flash' is reserved.
    */
    
function save($var$val$namespace 'default'{
        
if ($var == null{
            $_SESSION[$namespace] 
$val;
        
else {
            $_SESSION[$namespace][$var] 
$val;
        
}
    }
    
    
/* Get the value of a session variabe
     * @paramstring  Name of variable to load. null loads all variables in namespace (associative array)
     * @paramstring(optional) Namespace to use, defaults to 'default'
    */
    
function get($var null$namespace 'default'{
        
if(isset($var))
            return isset(
$_SESSION[$namespace][$var]) ? $_SESSION[$namespace][$var] null;
        else
            return isset(
$_SESSION[$namespace]) ? $_SESSION[$namespace] null;
    
}
    
    
/* Clears all variables in a namespace
     */
    
function clear($var null$namespace 'default'{
        
if(isset($var) && ($var !== null))
            unset(
$_SESSION[$namespace][$var]);
        else
            unset(
$_SESSION[$namespace]);
    
}
    
    
/* Initializes the flash variable routines
     */
    
function flashinit() {
        $this
->_flash $this->get(null'flash');
        
$this->clear(null'flash');
    
}
    
    
/* Saves a flash variable. These are only saved for one page load
     * @paramstringVariable name to save
     * @parammixedValue to save
     */
    
function flashsave($var$val{
        $this
->save($var$val'flash');
    
}
    
    
/* Gets the value of a flash variable. These are only saved for one page load, so the variable must
     * have either been set or had flashkeep() called on the previous page load
     * @paramstringVariable name to get
     */
    
function flashget($var{
        
if (isset($this->_flash[$var])) {
            
return $this->_flash[$var];
        
else {
            
return null;
        
}
    }
    
    
/* Keeps the value of a flash variable for another page load.
     * @paramstring(optional) Variable name to keep, or null to keep all. Defaults to keep all (null)
     */
    
function flashkeep($var null{
        
if ($var != null{
            $this
->flashsave($var$this->flashget($var));
        
else {
            $this
->save(null$this->_flash'flash');
        
}
    }
}
?> 

EXAMPLES

Like any CI library, you can either autoload it:

configs/autoload.php

For CI 1.4.x

$autoload['core'= array('phpsession'); 

For CI 1.5.x because $autoload[‘core’] is deprecated in this version

$autoload['libraries'= array('phpsession'); 

Or, load it manually inside any controller method:

$this->load->library('phpsession'); 

 

Example of usage from controller method:

function mymethod() {
   $this
->load->library('phpsession');
   
// save a variable to the session
   
$this->phpsession->save('foo','bar');
   
// save a variable in a namespace (other than default)
   
$this->phpsession->save('foo','bar','mynamespace');
   
// read a var from the session
   
$foo $this->phpsession->get('foo');
   
// get var from a namespace
   
$foo $this->phpsession->get('foo','mynamespace');
   
// get all session vars (from default namespace)
   
$all $this->phpsession->get();
   
// get all session vars from given namespace
   
$all $this->phpsession->get(null,'mynamespace');
   
// clear session var
   
$this->phpsession->clear('foo');
   
// clear all vars (default namespace)
   
$this->phpsession->clear();
   
// clear all vars in given namespace
   
$this->phpsession->clear(null'mynamespace');

   
// rest of your method
   
$this->load->view('myview');

 

Example use of flash variables:

When accessing a page that requires a login, redirect to a login page, and then upon successful login, return to the original page.

At the top of any page that requires a login (or in the constructor of the controller, if the whole thing requires login), I have:

$this->phpsession->flashsave('returnurl'$this->uri->uri_string() );
redirect('user/login'); 

User::login() is my login controller, and the relevant part of the code to make use of the flash variables is:

if ($login_successful{
   
if ($url $this->phpsession->flashget('returnurl') ) {
      redirect
($url);
   
else {  
      redirect
('');
   
}
else {
   $this
->phpsession->flashkeep('returnurl');

This makes it so when they go to a password-required page, eg, “foo/bar”, they are redirected to the login page. Upon successful login, they are redirected back to “foo/bar”, which makes for a nice user experience - eg, they can bookmark that page, and even if they need to login, they don’t have to navigate there again.

Categories:

引用元

更新:2011/02/27 03:00 カテゴリ: CodeIgniter  > 機能拡張 ▲トップ

No.2682【引用】CodeIgniterとAjaxにjQueryを使用する

CodeIgniter と Ajax に jQuery を使用する
効果的で使い易い Web 2.0 インターフェースを作成する方法

Kevin Howard Goldberg , CTO, imagistic

ハ イテク産業で 20 年の経験を持つ Kevin Howard Goldberg は、カリフォルニア州ウェストレイク居住の技術責任者、著者、そしてコンサルタントです。現在は、1997年に共同で創設し、賞の栄誉に輝いたデジタル・ マーケティング・テクノロジー会社の CTO を務める傍ら、Web 開発および技術のエキスパートとして Santa Monica College Computer Science Advisory...

引用元

更新:2010/06/14 01:07 カテゴリ: CodeIgniter  > 機能拡張 ▲トップ

No.2447 Codeigniterの部分Cacheについて

Codeigniterのキャッシュ、使えねえ…とお嘆きのあなた。分かりますよ。

DBカリカリやるのを出来るだけ避けたい、5インチフロッピー世代の俺なんかは、なるべくキャッシュ使いたいんですが、Codeigniterの キャッシュ機能って使いやすいのはいいんですが(一発キャッシュしておけば、自動的に読み込まれる超便利仕様)、エスケープもねえし、hookしてもあん まり意味ねえし、で困ってしまいますよね。

そこで、任意でパスを決めたら、その返り値をそのまんまキャッシュしてしまう部分キャッシュの仕組みを作ってみました。(まだ作ったばっかでろくすっぽ運用していないので、ご利用は自己責任でお願いします。とは言え、いくつかのサイトで実稼働済みっす)

準備

1. cacheフォルダのパーミッションを777にしておいてね。
2. CI_Outputを拡張して、MY_Outputを作ります。
3. 関数は二つ。set_cache()とget_cache()です。以下のコードをMY_Outputに貼付けてみるといいんじゃないかな。

function set_cache($path, $output, $expire = 60) {//部分キャッシュ
  $CI =& get_instance();
  $cache_path = ($CI->config->item('cache_path') == '') ? BASEPATH.'cache/' : $CI->config->item('cache_path');
 
  if (!is_dir($cache_path) OR !is_really_writable($cache_path)) return FALSE;
 
  //$pathからURIを作成〜ファイル名生成
  $path = md5($path);
  $dirname = substr($path, 0, 3);
  $dirpath = $cache_path.'/'.$dirname.'/';
  $filepath = $dirpath.$path;
 
  if (!is_dir($dirpath)) mkdir($dirpath, 0777);
 
  if (!$fp = @fopen($filepath, FOPEN_WRITE_CREATE_DESTRUCTIVE)) {
  log_message('error', “Unable to write cache file: “.$filepath);
  return;
  }
 
  $expire = time() + ($expire * 60);
 
  if (flock($fp, LOCK_EX)) {
  fwrite($fp, $expire.'TS—->'.$output);
  flock($fp, LOCK_UN);
  } else {
  log_message('error', “Unable to secure a file lock for file at: “.$filepath);
  return;
  }
  fclose($fp);
  @chmod($filepath, DIR_WRITE_MODE);

  log_message('debug', “Cache file written: “.$filepath);
}
function get_cache($path) {//部分キャッシュを取得
  $CI =& get_instance();
  $cache_path = ($CI->config->item('cache_path') == '') ? BASEPATH.'cache/' : $CI->config->item('cache_path');
 
  if (!is_dir($cache_path) OR !is_really_writable($cache_path)) return FALSE;
 
  //$pathからURIを作成〜ファイル名生成
  $path = md5($path);
  $dirname = substr($path, 0, 3);
  $dirpath = $cache_path.'/'.$dirname.'/';
  $filepath = $dirpath.$path;
 
  if (!is_dir($dirpath)) mkdir($dirpath, 0777);//フォルダが無ければ…作るだけだよな!
  if (!@file_exists($filepath)) return FALSE;//ファイルが存在しない場合
  if (!$fp = @fopen($filepath, FOPEN_READ)) return FALSE;//ファイルが開けない場合
  flock($fp, LOCK_SH);
 
  $cache = '';
  if (filesize($filepath) > 0) $cache = fread($fp, filesize($filepath));//ファイル読込
  flock($fp, LOCK_UN);
  fclose($fp);
   
  if (!preg_match(”/(\d+TS—->)/”, $cache, $match)) return FALSE;//タイムスタンプを確認
 
  if (time() >= trim(str_replace('TS—->', '', $match['1']))) { 
  @unlink($filepath);
  log_message('debug', “Cache file has expired. File deleted”);
  return FALSE;
  }
 
  log_message('debug', “Cache file is current. Sending it to browser.”);
  return str_replace($match['0'], '', $cache);
}

使い方

1. $CI->output->get_cache()を実行。第一引数には任意のパスを指定(REQUEST_URIそのまんまぶっ込んでもい いと思うし、完全任意でもOK。ただしユニークなの頼むよ)。返り値は、キャッシュファイルに書き込んで文字列がそのまんま返ってきます。
2. キャッシュされていなかったらfalseが返るので、その値をトリガーにして、何らかの処理を。
3. $CI->output->set_cache()を実行。第一引数にはget_cacheで使用した任意のパス、第二引数にはキャッシュを残したいデータを、そのままぶっ込みます。第三引数は、デフォルトのキャッシュと同様、保存しておく分数です。
4. これで次に同じ処理をしたときには、キャッシュが自動的に読み込まれます。

例:$json = $CI->output->get_cache($api_url);
  if ($json === false) {
  $json = file_get_contents($api_url);
  $CI->output->set_cache($api_url, $json, 1);
  }

このように、外部APIを叩いた結果なんかを保存しておくのに最適です!

ツッコミ等、余裕で歓迎するよ!

引用元

更新:2010/05/08 02:10 カテゴリ: CodeIgniter  > 機能拡張 ▲トップ

No.1465 codeigniter 拡張

引用元

更新:2009/09/09 21:38 カテゴリ: CodeIgniter  > 機能拡張 ▲トップ

No.116 smarty導入時の警告表示

Warning: Call-time pass-by-reference has been deprecated;と警告が出て実行­できない。

解決方法は httpd.confでphp_flag allow_call_ti­me_pass_referen­ce on もしくは php.iniでallow_ca­ll_time_pass_re­ference=on を設定する。

引用元

更新:2008/08/18 16:27 カテゴリ: CodeIgniter  > 機能拡張 ▲トップ
8件中 1 〜 8 表示  1 

FuelPHP

Mac

フロントエンド開発

web開発

プロマネ

マネタイズ

プレゼン

webサービス運用

webサービス

Linux

サーバ管理

MySQL

ソース・開発

svn・git

PHP

HTML・CSS

JavaScript

ツール, ライブラリ

ビジネス

テンプレート

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

Python

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0