ไม่ต้องแก้ register_globals = On ก็เรียกใช้ตัวแปรแบบเดิมๆได้

ปกติแล้วเวลาทำการติดตั้ง php ค่า default ของ register_globals จะเป็น Off แต่บางครั้งเราก็มีความจำเป็นที่เราจะต้องการใช้งาน ในแบบที่ register_globals=On เช่น ไม่อยากไปแก้ code โปรแกรมเดิมที่เขียนไว้ตั้งนานแล้วบ้างล่ะ แต่จะทำยังไง ถ้าหากว่า server ที่เราจำเป็นต้องใช้งานเค้ากำหนด register_globals มาให้เป็น Off ล่ะจะทำยังไง

เคยประสบปัญหาเวลาจะทำการย้าย server หรือมีการ upgrade version ของ php เป็น version ใหม่ แล้วทาง admin เค้าไม่ได้กำหนดให้ register_globals = On กันบ้างไหม เราจะแก้ปัญหากันยังไง แก้ code ในโปรแกรมของเรา หรือว่าจะแจ้ง admin ให้เค้าแก้ php.ini ให้ ????

โดยปกติแล้วเวลาทำการติดตั้ง php ค่า default ของ register_globals จะเป็น Off แต่บางครั้งเราก็มีความจำเป็นที่เราจะต้องการใช้งาน ในแบบที่ register_globals=On เช่น ไม่อยากไปแก้ code โปรแกรมเดิมที่เขียนไว้ตั้งนานแล้วบ้างล่ะ แต่จะทำยังไง ถ้าหากว่า server ที่เราจำเป็นต้องใช้งานเค้ากำหนด register_globals มาให้เป็น Off

วันนี้ผมมี script ที่จะช่วย convert ค่าตัวแปรที่อยู่ใน $_GET, $_POST, $_FILES ให้เป็นชื่อ ตัวแปร แบบที่ถูกกำหนดใน php.ini ให้ register_globals=On จะง่ายดายเพียงใด เชิญชม..

 

 

// Convert Variable Array To Variable
 
while(list($xVarName, $xVarvalue) = each($_GET)) {
     ${$xVarName} = $xVarvalue;
}
 
 
while(list($xVarName, $xVarvalue) = each($_POST)) {
     ${$xVarName} = $xVarvalue;
}
 
while(list($xVarName, $xVarvalue) = each($_FILES)) {
     ${$xVarName."_name"} = $xVarvalue['name'];
     ${$xVarName."_type"} = $xVarvalue['type'];
     ${$xVarName."_size"} = $xVarvalue['size'];
     ${$xVarName."_error"} = $xVarvalue['error'];
     ${$xVarName} = $xVarvalue['tmp_name'];
}

จากนั้นก็เพียงแค่นำ code นี้ไปใส่ไว้ที่บรรทัดแรกสุดของโปรแกรมที่เราเขียน หรือว่าจะเอาไปใส่ไว้ใน file include ก็ได้นะครับ ตัวอย่างจาก Source Code เราจะได้ชื่อตัวแปรใหม่ดังนี้ ซึ่งจะตรงกับชื่อตัวแปรที่ถูกกำหนดจาก register_globals=On

 

$_GET["get_var1"] //ไปเป็น $get_var1
 
$_POST["post_var1"] //ไปเป็น $post_var1
 
$_FILES["file1"] //ไปเป็น $file1, $file1_name, $file1_type, $file1_size

 

ข้อแนะนำ : ถ้าเป็นไปได้ควรเขียนโปรแกรมรับค่าจาก form ต่างๆ โดยใช้ตัวแปร $_GET, $_POST,$_FILES นะครับ

ขอบคุณที่มา: unzeen.com

Was this answer helpful?

 Print this Article

Also Read

การกำหนดค่า SpamAssassin Setup

เมื่อเข้าสู่ระบบจัดการโฮสติ้ง (http://yourdomain.com:2222) หากต้องการกำหนดค่า SpamAssassin Setup...

แบนวิทเกิน/พื้นที่เกิน ควรทำอย่างไร

แบนวิทคืออะไรคือ ปริมาณการเข้าถึงข้อมูล โดยรับ-ส่งข้อมูล ระหว่างเซิร์ฟเวอร์ และผู้ใช้งานเกินได้ 4...

Mod_Rewrite; how to enable?

make a .htaccess file in the directory you want to use modrewrite and put the following into it:...

ลืมรหัสผ่านเข้า ControlPanal (Forgot Password)

วิธี flush DNS

วิธีการอับเดต DNS Reset Rounter แล้ว ทำการ flus DNS เพื่อ update DNS 1. เข้าไปที่ Start >...