新しいブログに移動しました。
9ensanのLifeHack
こちらの記事も必要に応じて新しいブログに移動させる予定です。
今後ともよろしくお願い致します。

HOME > 

PHP

PHPでAuthorizationヘッダーを取得する方法

  • 2009.11.16 (月) 19:42
  • PHP

PHPでAuthorizationヘッダーを取得しようと思って

1
var_dump($_SERVER);

とかしてみたりしても取得できない・・・

まぁそりゃそうなんだけど、

でその場合に必要なのが、

という関数があります。

これで、Authorizationヘッダーの内容を無事取得できます。

これで、mixiモバイルアプリでの検証ができるようになります。

よかった。

 

 

CodeIgniterにmemcacheをsession使用するライブラリを作成しました

  • 2009.06.05 (金) 18:08
  • PHP
  • ,

PHPのセッション管理にmemcacheを使用しようとしていて複数台のサーバーでmemcacheを利用しようとした場合に

php.iniの設定だけではどうやってもできなかった・・・。(本当は出来るのかもしれないのだけど・・・

 

なので、ライブラリを作成しました。

今回はCodeIgniter用のライブラリです。

よかったら使ってみてください。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');
/**
 *
 * memcacheを利用したsessionライブラリ
 *
 * memcacheを利用したsession管理処理を行う
 *
 * @access public
 * @varsion 1.00
 * @sinse 2009/06/03
 */
class Memsession {
 
  /**
   * CodeIgniterインスタンス
   */
  var $CI = null;
 
  /**
   * memcacheインスタンス
   */
  var $memcache = null;
 
  /**
   * セッションキー
   */
   var $key = 'memsess_';
 
  /**
   * configファイル名
   */
   var $conf_name = 'memcache_config';
 
  /**
   *
   * コンストラクタ
   *
   * @access public
   * @return void
   */
  function __construct()
  {
    $this->CI = & get_instance();
    $this->CI->config->load($this->conf_name,true,true);
    $this->init_cache();
    session_set_save_handler(
      array(& $this, "open"),
      array(& $this, "close"),
      array(& $this, "read"),
      array(& $this, "write"),
      array(& $this, "destroy"),
      array(& $this, "gc")
    );
    session_start();
  }
 
  /**
   *
   * memcache初期化処理
   *
   */
  function init_cache()
  {
    if (!isset($this->memcache)) {
      $ret = false;
      $servers = $this->CI->config->item('servers', $this->conf_name);
      $this->memcache =& new Memcache();
      foreach ($servers as $server) {
        $parts = explode(':', $server);
        $host  = $parts[0];
        $port  = 11211;
        if (isset($parts[1])) {
          $port = $parts[1];
        }
        if ($this->memcache->addServer($host, $port)) {
          $ret = true;
        }
      }
      return $ret;
    }
    return true;
  }
 
  /**
   *
   * open 関数
   *
   * @param string 保存パス
   * @param string セッション名
   * @return bool
   */
  function open($save_path, $session_name)
  {
    $this->session_path = $save_path;
    $this->session_name = $session_name;
    return true;
  }
 
  /**
   *
   * close 関数
   *
   * @return bool
   */
  function close()
  {
    return true;
  }
 
  /**
   *
   * read 関数
   *
   * @param string セッションID
   * @return string
   */
  function read($id)
  {
    if ($sess_data = $this->memcache->get($this->key.$id)) {
      return $sess_data;
    } else {
      return '';
    }
  }
 
  /**
   *
   * write 関数
   *
   * @param string セッションID
   * @param string データ
   * @retrun bool
   */
  function write($id, $sess_data)
  {
    if (trim($id) == '') return true;
    $compress = $this->CI->config->item('compress', $this->conf_name);
    $expires  = ini_get("session.gc_maxlifetime");
    $ret = $this->memcache->set($this->key.$id, $sess_data, $compress, $expires);
    return $ret;
  }
 
  /**
   *
   * destroy 関数
   *
   * @param string セッションID
   * @return bool
   */
  function destroy($id)
  {
    $ret = $this->memcache->delete($this->key.$id);
    return $ret;
  }
 
  /**
   *
   * ガベージコレクタ
   *
   * @return bool
   */
  function gc($maxlifetime)
  {
    return true;
  }
 
  /**
   *
   * SESSIONへの値の設定
   *
   * @param string キー
   * @param string 値
   * @return void
   */
  function set($key, $value)
  {
    $_SESSION[$key] = $value;
  }
 
  /**
   *
   * SESSIONからの値の取得
   *
   * @param string キー
   * @return mixed
   */
  function get($key)
  {
    $ret = $_SESSION[$key];
    return $ret;
  }
 
}

 

 

CakePHPのfindの第1引数による戻り値の違い

  • 2009.05.13 (水) 13:58
  • PHP
  • ,

CakePHPでfindメソッドを使用した場合の戻り値についてです。

このようになテーブルを作成し、データを登録して検索します。

フィールド 種別
id int(11)
name varchar(255)
title varchar(255)
content text

 findの第1引数が「all」の場合

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
array(1) {
  [0]=>
  array(1) {
    ["Board"]=>
    array(4) {
      ["id"]=>
      string(1) "2"
      ["name"]=>
      string(18) "あんぱんまん"
      ["title"]=>
      string(21) "しょくぱんまん"
      ["content"]=>
      string(21) "かれーぱんまん"
    }
  }
}

 findの第1引数が「first」の場合

1
2
3
4
5
6
7
8
9
10
11
12
13
array(1) {
  ["Board"]=>
  array(4) {
    ["id"]=>
    string(1) "2"
    ["name"]=>
    string(18) "あんぱんまん"
    ["title"]=>
    string(21) "しょくぱんまん"
    ["content"]=>
    string(21) "かれーぱんまん"
  }
}

findの第1引数が「list」の場合

1
2
3
4
array(1) {
  [2]=>
  string(21) "しょくぱんまん"
}

findの第1引数が「count」の場合

1
int(1)

PHPを書くときに、vimでctagsを使用する方法

  • 2009.04.26 (日) 20:59
  • PHP
  • ,,

symfonyで仕事していて、オブジェクト指向プログラミングなのでたくさんのファイルに処理が移動するので

処理を追いかけるだけでたいへん

ということで、ctagsを使用することにしました。

まずは、インストール

1
sudo apt-get install exuberant-ctags

これでインストール完了します。

で、ctagsを使用する為のtagsファイルの作成

1
ctags -a -f ~/.tags -R --langmap=PHP:.php.inc --php-types=c+f+d+v+i ./
  • -a:既存のtagsファイルが存在した場合、追加登録します。
  • -f:tagsファイルの名前を指定します。
  • –langmap:対象にする拡張子を設定します。
    デフォルト値は

    1
    
    ctags --list-maps

    で調べることができます。

  • –php-types:tagsファイルを作成する時の種類を指定します。
    種類は

    1
    
    ctags --list-kinds=php

    で調べることができます。

  • -R:再帰的に処理を行います。

これで、tagsファイルを使用できます。

上記内容でtagsファイルを作成した場合、「~/.tags」に内容が書き込まれます。

ですのでvimでそのファイルを使用できるように.vimrcに以下の設定を追加します。

1
set tags+=~/.tags

 これでvimで作成したtagsファイルを読み込むことができます。

vimでの使用方法

Ctrl+]:タグを進む

Ctrl+T:タグを戻る

:pop:タグを戻る

:tags:移動経路を確認

:ts:他の候補を呼び出す

Ruby on Rails 対 symfony

  • 2009.04.03 (金) 20:57
  • Ruby
  • ,

以前、一緒に仕事をしていた人がRuby on Rails は楽しいという話を聞いた、

んで、バイトで仕事を受けたらsymfonyでシステムが作られていた

 

これは、神の啓示なのかなと思うので

この休みの間にRuby on Railsとsymfonyで簡単なシステムを作ってどっちが優れているのか自分で比較してみようと思います。

お薦めのレンタルサーバー
広告
お薦めの書籍
HOME > 

PHP