コードがレジスタグローバルを使用していて、それを使用しないように更新されていない場合は、おそらく非常に昔に作成されたものです。この意味は:
- 大規模なセキュリティホールがあることはほぼ確実です。
- 非推奨または削除された他のPHP機能を使用している可能性があります。
- それはおそらく非常に厄介なスパゲッティコードであり、
- すべての問題を修正するために書き直すのは雌犬になるでしょう。
私のアドバイスは、最新のショッピングカートソフトウェアパッケージを見つけて、既存の古いソフトウェアを実行し続けるのではなく、それを使用してショップをセットアップするのを手伝うことです。より多くの作業のように思えるかもしれませんが、関係するすべての人にとって、長期的にはそれほど面倒ではありません。
彼の既存のコードを修正する必要がある場合(つまり、彼があなたに頼み、仕事に多額の支払いを申し出た場合)、レジスターグローバルに対処する方法は次のとおりです。
Register globalsは、POSTまたはGET引数に入力されたすべての変数を受け取り、それらをグローバル名前空間に単純な変数として作成します。したがって、の代わりに$_GET['id']
、を取得し$id
ます。
プログラムが適度によく書かれ、文書化されていれば、どの変数が期待されているかを確認するのはそれほど難しくないかもしれません。$_REQUEST
その場合、関連する変数を代用するのは難しくありません。仕事は終わりました。
しかし、多くの(ええと、ほとんどの)古いPHPコードは、グローバル変数にあまり注意を払わずに、グローバル変数をスローします。たくさんのインクルード、function()
サイトでの宣言のない数百行のコード、PHPとHTMLコードの織り交ぜ、おそらくいくつかの生成されたJavascriptがスローされ、元の作成者以外の誰にも完全に侵入できない混乱が生じることがよくあります(そして時にはそれらさえも)。
コードがこのようになっている場合、あなたはそれを修復しようとする非常に勇敢な人になります。あなたはそれが救い出せないことをただ受け入れて、立ち去るべきです。私は過去にこのような古いコードを修正する必要があった仕事をしてきましたが、私を信じてください。どこかに行き始める前に、数か月(または数年)の時間を費やすことができます。そのような時間スケールでは、まったく新しいシステムを最初から作成した方がよいでしょう。