ยินดีต้อนรับคุณ, บุคคลทั่วไป กรุณา เข้าสู่ระบบ หรือ ลงทะเบียน
ส่งอีเมล์ยืนยันการใช้งาน?

» Enter Pinkkeyhost Website «

เว็บโฮสติ้ง Pinkkeyhost :: Support Center
Pinkkeyhost
หน้า: 1
  พิมพ์  
ผู้เขียน หัวข้อ: การแก้ปัญหา script ไม่รองรับ register_globals=off  (อ่าน 20650 ครั้ง)
0 สมาชิก และ 1 บุคคลทั่วไป กำลังดูหัวข้อนี้
PinkkeyHost
Online Supported
Administrator
Sr. Member
*****
ออฟไลน์ ออฟไลน์

กระทู้: 358


« เมื่อ: 07 ก.ค. 2006 19:56 »

สำหรับค่า 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 โดยไม่ต้องแก้ไขเพิ่มเติม
บันทึกการเข้า

bunpot
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 23



« ตอบ #1 เมื่อ: 05 พ.ย. 2006 18:59 »

ขอนำข้อมูลนี้ไปใช้ได้มั้ยครับ (แบบทุกตัวอักษรเลยน่ะครับ ขี้เกียจพิมพ์เอง)
พอดีกำลังจัดทำคู่มือการใ้ช้งานโฮสติ้งอยู่น่ะครับ ทำเสร็จแล้วเดี๋ยวจัดส่งให้คุณแมนเล่มนึง (พร้อมต้นฉบับเผื่อนำไปดัดแปลงแก้ไข)

 Grin

ขอบคุณครับ
บรรพต
บันทึกการเข้า

PinkkeyHost
Online Supported
Administrator
Sr. Member
*****
ออฟไลน์ ออฟไลน์

กระทู้: 358


« ตอบ #2 เมื่อ: 05 พ.ย. 2006 20:50 »

ขอนำข้อมูลนี้ไปใช้ได้มั้ยครับ (แบบทุกตัวอักษรเลยน่ะครับ ขี้เกียจพิมพ์เอง)
พอดีกำลังจัดทำคู่มือการใ้ช้งานโฮสติ้งอยู่น่ะครับ ทำเสร็จแล้วเดี๋ยวจัดส่งให้คุณแมนเล่มนึง (พร้อมต้นฉบับเผื่อนำไปดัดแปลงแก้ไข)

 Grin

ขอบคุณครับ
บรรพต

ได้เลยครับ  Smiley
บันทึกการเข้า

panatdapo
Newbie
*
ออฟไลน์ ออฟไลน์

กระทู้: 1


« ตอบ #3 เมื่อ: 03 ก.ย. 2008 11:08 »

สำหรับค่า 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 โดยไม่ต้องแก้ไขเพิ่มเติม


อย่างไรก็ดีการแก้ไขดังกล่าวยังไม่ครอบคลุมถึงการ upload ไฟล์ผ่านตัวแปล $_FILES ซึ่งต้องแก้ไขในส่วนของการ upload ไฟล์ใน code ด้วย

คือพอดีต้องการ upload ไฟล์ผ่านตัวแปล $_FILES ต้องแก้ไข Code ยังงัยบ้างเหรอค่ะ 
บันทึกการเข้า
หน้า: 1
  พิมพ์  
 
กระโดดไป:  

PinkkeyHost.com - บริการ เว็บโฮสติ้ง จดโดเมน Co-Location & Dedicated Server

reduce website downtime
Powered by SMF 1.1.16 | SMF © 2006-2007, Simple Machines | Thai language by ThaiSMF
XHTML | CSS | Aero79 design by Bloc
หน้านี้ถูกสร้างขึ้นภายในเวลา 0.06 วินาที กับ 20 คำสั่ง