私は自分で PHP を学んでおり、デフォルトで register_globals がオンになっている Web ホスト アカウントを使用してスクリプトをテストしました。これが安全ではないことはわかっていますが、サンプル コードをテストするときは気にしませんでした。
現在、私がメンバーである非営利団体の小さなライブサイトに取り組んでおり、彼らが使用しているホストでは、デフォルトで register_globals がオフになっています。
それで、今私の質問です。私はこの作業に慣れています(register_globalsをオンにして):
index.php?pID=1 をロードしているとします。index.php のコードには、次の行が含まれます。
if($pID==1) include('content1.php');
$_GET['pID'] ではなく $pID を使用しており、コードのどこにも $_GET['pID'] を $pID に割り当てていないことに注意してください。これはとにかくうまくいきました。だから (もちろん) 組織ホストで同じコードを使用しているときに、これが突然機能しなくなったのは、register_globals がオフになっているためなのだろうか?
もしそうなら、スーパーグローバルを再び魔法にするための回避策はありますか、それともすべての $_GET 変数を自分のグローバルに手動で割り当てる必要がありますか?