起動時にセットされてその後決して変化しないデータ
はグローバル変数に確保してもいいですけれど、誰かの操作に紐づくような情報はグローバル変数に入れてはだめですよ
ローカルだとうまく動いていると思ってるみたいですがタブを2つ開いて
タブ1 でAの予約確認
タブ2 でBの予約確認
タブ1 で予約を確定
とすると実際に予約されるのはBになってしまいませんか?
CGIハンドラから使っているときは、毎回スクリプトとして起動されるのでグローバル変数がセットされるタイミングがないですよ
Xserver上(cgiで動作しているもの)では、global関数をきちんと使用しないといけない