if(!(bool) ini_get('register_globals')) {
  foreach ($var_names as $key => $value ) {
   global $$value;
   if (!isset($_SESSION[$value])){
    $_SESSION[$value]= $$value;
   }
  }
 }

というコードがあるんですけど、これは
・register_globals が設定されてなければ(つまりoffであれば)、
・配列$var_namesに入っているグローバル変数名を調べて、
・その名前と値を$_SESSIONに追加する
という理解でよろしいでしょうか。
またこの理解が正しいとして、なぜこんなことをしているのか分かる方はいませんか。
register_globalsがonのときなら、このような動作もわからなくはないのですが、
offのときにあえてこんなことをする理由がわかりません。