สำหรับการกำหนดเป็น Off ในการพัฒนาโปรแกรมจะมีความปลอดภัยมากกว่าในกรณีที่เป็น On ครับ และมีลดความสับสน และตัวแปรซ้ำซ้อนได้ครับ แต่ Server ส่วนมากจะกำหนดค่าในส่วนนี้เป็น On เพราะโปรแกรมส่วนมากในการพัฒนาโปรแกรมเมอร์จะไม่ค่อยใส่ใจในส่วนนี้ซะเท่าไหร่ แต่ถึงอย่างไร ผมเองก็ยังแนะนำให้ใช้ Off ดีที่สุดครับ และระบุชนิดตัวแปรทุกครั้งที่เรียกใช้งาน ถึงแม้จะกำหนดเป็น On หรือ Off ก็ตาม
หรือในกรณีที่ Server มีการกำหนดเป็น Off ผมมี Code ที่สามารถอ่านตัวแปรที่ไม่ต้องระบุชนิดได้ครับ
<?php
//*** Register Global =On/Off Function ***//
$phpVersion = phpversion();
list($v_Upper,$v_Major,$v_Minor) = explode(".",$phpVersion);
if (($v_Upper == 4 && $v_Major < 1) || $v_Upper < 4) {
$_FILES = $HTTP_POST_FILES;
$_ENV = $HTTP_ENV_VARS;
$_GET = $HTTP_GET_VARS;
$_POST = $HTTP_POST_VARS;
$_COOKIE = $HTTP_COOKIE_VARS;
$_SERVER = $HTTP_SERVER_VARS;
$_SESSION = $HTTP_SESSION_VARS;
$_FILES = $HTTP_POST_FILES;
}
if (!ini_get('register_globals')) {
while(list($key,$value)=each($_FILES)) $GLOBALS[$key]=$value;
while(list($key,$value)=each($_ENV)) $GLOBALS[$key]=$value;
while(list($key,$value)=each($_GET)) $GLOBALS[$key]=$value;
while(list($key,$value)=each($_POST)) $GLOBALS[$key]=$value;
while(list($key,$value)=each($_COOKIE)) $GLOBALS[$key]=$value;
while(list($key,$value)=each($_SERVER)) $GLOBALS[$key]=$value;
while(list($key,$value)=@each($_SESSION)) $GLOBALS[$key]=$value;
foreach($_FILES as $key => $value){
$GLOBALS[$key]=$_FILES[$key]['tmp_name'];
foreach($value as $ext => $value2){
$key2 = $key."_".$ext;
$GLOBALS[$key2]=$value2;
}
}
}
?>
เพียงนำ Code นี้ไปวางไว้บนสุดของ Code ก็จะสามารถอ่านแบบไม่ต้องระบุชนิดของตัวแปรได้ครับ หรือจะสร้างเป็นไฟล์ include เพื่อเรียกใช้งานในหลาย ๆ หน้าที่ต้องการใช้งาน
ที่มา :
http://www.thaicreate.com/php/php-register_global-on-off.html