สำหรับค่า Register_Global นั้น เพื่อความปลอดภัยของระบบโดยรวม
ทางโฮสได้ตั้งค่า default ไว้ที่ off สำหรับทุกๆ user
ซึ่งโดยทั่วไปแล้วจะสามารถใช้งาน script สำเร็จรูปทั่วๆไปได้อย่างไม่มีปัญหาใดๆ
อย่างไรก็ดีมี script บางตัวที่ยังจำเป็นต้องใช้ register_globals on จึงจะสามารถทำงานได้
ดังนั้น หากสมาชิกท่านใดมีความจำเป็นต้องใช้ script ที่ต้องการ register_globals on
สามารถติดต่อฝ่าย support เพื่ิอให้แก้ไขค่าจาก off เป็น on ให้กับท่านได้
ซึ่งการตั้งค่า on นี้จะมีผลกับทุกๆ domain ทั้งหมดภายใต้ user account ของท่าน
แต่จะไม่มีผลกับ user อื่นๆ ซึ่งยังคงใช้ค่าเป็น off ตาม default ของทางโฮส
อย่างไรก็ดีสำหรับผู้ที่พัฒนาระบบขึ้นเองควรที่จะรองรับ register_globals=off ได้อยู่แล้ว
ซึ่งสามารถแก้ไขระบบให้รองรับได้ง่ายๆตามนี้
หลักการคือ
1. ตรวจสอบค่า register_globals ก่อนหากเป็น on ก็ไม่ต้องทำอะไร
2. extract ตัวแปล GET POST COOKIE SESSION SERVER โดยตรวจสอบก่อนว่ามีค่าส่งเข้ามา
โดยการแก้ไข script โดยเพิ่ม code ต่อไปนี้ที่ต้นไฟล์ .php ทุกไฟล์
$globals_test = @ini_get('register_globals');
if ( isset($globals_test) && empty($globals_test) ) {
$types_to_register = array('GET', 'POST', 'COOKIE', 'SESSION', 'SERVER');
foreach ($types_to_register as $type) {
$arr = @${'_' . $type};
if (@count($arr) > 0)
extract($arr, EXTR_SKIP);
}
}
หรือเขียนแีกแบบหนึ่งก็ได้เช่นกัน
$globals_test = @ini_get('register_globals');
if ( isset($globals_test) && empty($globals_test) ) {
if ( !empty($_GET) ) { extract($_GET, EXTR_SKIP); }
if ( !empty($_POST) ) { extract($_POST, EXTR_SKIP); }
if ( !empty($_COOKIE) ) { extract($_COOKIE, EXTR_SKIP); }
if ( !empty($_SESSION) ) { extract($_SESSION, EXTR_SKIP); }
if ( !empty($_SERVER) ) { extract($_SERVER, EXTR_SKIP); }
}
ซึ่งสำหรับการปรับแก้ไม่จำเป็นต้องเพิ่ม code ในต้นไฟล์ทุกไฟล์ครับ
เพียงแค่ไล่ดูว่าระบบ include ไฟล์ใหนทุกครั้ง แล้วไปเพิ่มแค่ในไฟล์ที่ถูก include เท่านั้นก็ได้แล้ว
ส่วนมากจะเป็นไฟล์ config.php หรือไม่ก็ function.php
เช่นระบบ smeweb สามารถแก้ไขได้โดยการเพิ่ม code ใน config.php เพียงไำฟล์เดียวระบบก็สามารถทำงานได้ทันที เนื่องจากทุกไฟล์ต้อง include ไฟล์ config.php เสมอ
อย่างไรก็ดีการแก้ไขดังกล่าวยังไม่ครอบคลุมถึงการ upload ไฟล์ผ่านตัวแปล $_FILES ซึ่งต้องแก้ไขในส่วนของการ upload ไฟล์ใน code ด้วย
สำหรับระบบ smeWeb ทางเวบได้ทำการแก้ไขและเปิดให้ download แล้ว
และได้ส่งให้กับผู้พัฒนาแล้ว คาดว่าเวอร์ชั่นถัดไปจะรองรับ register_global=off โดยไม่ต้องแก้ไขเพิ่มเติม