Register_global คือ โหมด php.ini ที่ใช้กำหนดรูปแบบในการอ่านค่าตัวแปร โดยถ้ากำหนดเป็น On จะสามารถอ่านค่าตัวแปรโดยไม่ต้องระบุชนิดของตัวแปร และถ้ากำหนดเป็น Off ในการอ่านค่าตัวแปรทุกครั้ง จะต้องทำการระบุชนิดของตัวแปรตาม ว่าเป็นชนิด $_GET,$_POST,$_SESSION,...ตัวอย่าง
php.ini
; You should do your best to write your scripts so that they do not require
; register_globals to be on; Using form variables as globals can easily lead
; to possible security problems, if the code is not very well thought of.
register_globals = On
ตัวอย่างการอ่านตัวแปรกรณีที่มีค่าเป็น On
ส่งค่าผ่าน Form
<input type="text" name="txtName">
รูปแบบ
<?
echo $txtName;
?>
ส่งค่าผ่าน Query String (URL)
http://localhost/index.php?sitename=thaicreate.com
รูปแบบ
<?
echo $sitename;
?> [/php]
ตัวอย่างการอ่านตัวแปรกรณีที่มีค่าเป็น Off
code ส่งค่าผ่าน Form
<input type="text" name="txtName">
รูปแบบ
<?
echo $_POST["txtName"]
?>
ส่งค่าผ่าน Query String (URL)
http://localhost/index.php?sitename=thaicreate.com
รูปแบบ
<?
echo $_GET["sitename"];
?> [/php]
สำหรับการกำหนดเป็น Off ในการพัฒนาโปรแกรมจะมีความปลอดภัยมากกว่าในกรณีที่เป็น On ครับ และมีลดความสับสน และตัวแปรซ้ำซ้อนได้ครับ แต่ Server ส่วนมากจะกำหนดค่าในส่วนนี้เป็น On เพราะโปรแกรมส่วนมากในการพัฒนาโปรแกรมเมอร์จะไม่ค่อยใส่ใจในส่วนนี้ซะเท่าไหร่ แต่ถึงอย่างไร ผมเองก็ยังแนะนำให้ใช้ Off ดีที่สุดครับ และระบุชนิดตัวแปรทุกครั้งที่เรียกใช้งาน ถึงแม้จะกำหนดเป็น On หรือ Off ก็ตาม
หรือในกรณีที่ Server มีการกำหนดเป็น Off ผมมี Code ที่สามารถอ่านตัวแปรที่ไม่ต้องระบุชนิดได้ครับ
Code
**Hidden Content: To see this hidden content your post count must be 5 or greater.**
เพียงนำ Code นี้ไปวางไว้บนสุดของ Code ก็จะสามารถอ่านแบบไม่ต้องระบุชนิดของตัวแปรได้ครับ หรือจะสร้างเป็นไฟล์ include เพื่อเรียกใช้งานในหลาย ๆ หน้าที่ต้องการใช้งาน
Reference : http://www.thaicreate.com/php-manual...y.globals.html
