« お久しぶりです! | メイン | めちゃめちゃいいかも »

October 28, 2005

あらら・・・(PHP4.2+にアップグレードされる方必見かも)

むかーし、むかし
年号を2桁で管理しているコンピュータが

西暦2000年を1900年と誤認してしまい、

処理を続行できなくなる問題

2000年問題(Y2K問題)とかあったけど・・・・


私は、今、なんと・・・

register_globals問題 

(register_globalsはPHPの動作設定項目の一つね)

とかいう問題に突き当たってしまった・・・

ってか、これやっぱり名前がつくような問題だったんだ ・・・

---

先日の私の不安材料

専用サーバーがやっと契約プロセスが終わり、

今朝、サーバーが準備ができた

という連絡がはいり、ルンルン♪

データベースを移行し、

ファイルを移行し、

さーて、テスト・・・・

あ、あれ??おかしい・・・何かがおかしい・・・(汗)

シンプルなPHPベースのシステムなんですが・・・ね。

なんで??

原因追求すること2時間

どうやら、URL変数の取得が上手くいってない模様

ええええ、でもなぜだ??

なぜーーーーーーー????

phpinfoを見比べてみる・・・が、多すぎて違いがわからない 爆

仕方ないので、PHPマニュアル見てみた

でも、あんま助けになんなかった。


んで、ぐぐりまくってたら、

あ、あった

register_globals問題


PHPバージョン4.1.xまでと4.2以降では

このregister_globals設定の既定値が異なってるらしいいいいい


4.1.xまではデフォルトで register_globals=on

4.2以降ではoff

えええええ、勝手 変えんなよーーーー 

(でもセキュリティー問題上、変えるべきですが)

『この変更の影響で、PHPバージョン4.1.xまでを対象に作られたプログラムが、かなり簡単なサンプルでさえもPHPバージョン4.2以降で動かないということが多発しており、いわゆる「register_globals問題」として知られている。』

やっぱし、、、


くやしいけど、コード書き直しかぁ・・・・

全ファイル見直し・・・・ぐすっ

週末中に移行完了するはずが・・・・


終わらないかもーーーーーーーー涙

前任者よ・・・

なんで、こんなコード書くのだよ・・・

register_globals=on の設定では、
クライアントから送信されたデータが

$A=*** $B=***

ってな感じに初期化された状態になっているんですねぇ。

(↑これは、PHPの目玉だったらしいですが・・・)

ですので、$_GET['a'] とかを使ってない場合

version変更でハマります。。。


というか、万が一
使ってる人がいたら、

さっさと書き直したほうがいいかも。

だって、URL変数で
予期せぬ変数書き換えされちゃいますから・・・ねぇ。

↑それはお前だろ・・・ってつっこまれそうですが笑
でも、このコード書いたの、私じゃないですからね。。。


投稿者 erika : October 28, 2005 11:32 PM

コメント