[PHP-users 6060] Re: PHP3 でPHP4風にコーディングしたい

Naofumi Kondoh php-users@php.gr.jp
Sun, 10 Mar 2002 22:23:12 +0900


ソフト工房の近藤です。

# 亀レス/亀フォローですいません。

Mickey Okoshi wrote:
> 
>  今後のPHP4ではregister_blobals=offが標準推奨とされ、かわりに
> $_POSTやimport_request_variables()などが導入されたわけですが、
> 「まだPHP3だが、PHP4への移行に備えてPHP4推奨の安全なコーディング
> に今から直しておきたい」という場合、どうするのが良いでしょうか?
> 
> PHP3でregister_blobals=offの場合、$HTTP_POST_VARS,$HTTP_GET_VARS
> などを使うのだと思いますが、$_REQUESTにあたるものが無いので、
> 「POSTでもGETでもデータを渡せる」ページなど改造が面倒そうです。
.... 略 ....

単純に現有プログラムが PHP4 で動けばいいだけという話と、
security に配慮した安全なコーディングをする場合を切分け
る必要があると思います。

GET/POST/COOKIE をごちゃまぜにしてグローバル変数にして
しまう昔のやり方があぶないのであって、そういう意味では、
$_REQUEST は、安全を考慮すると、昔よりずっとましだけど、
私は、使うつもりはありません。

いろんなやり方があると思いますが、私は、逆のやりかたで、
必要な名前を指定して HTTP_POST/GET_VARS からとってくる
というやり方をしています。

$nam = array('hoge', 'foo', 'bar');
foreach($nam as $v){
    if (isset($HTTP_POST_VARS[$v])){
        $obj->$v = $HTTP_POST_VARS[$v];
    }
}
というような感じ。(実際はもっと複雑)。
一旦1つのクラスの property にしてしまえば、後は、
global $obj ;  を各関数に入れるだけだから、手間は
かからないです。
global 入れ忘れても、PHP がちゃんと警告してくれるし。

_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
 (株)ソフト工房   近藤直文        Email:  nkon@shonan.ne.jp 
  《 PostgreSQL+PHPソースコードジェネレーターデモGPL版 》
           http://www.SOFTKOUBOU.co.jp/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/