Emulasi Register Global di Hosting
Jika kamu menyewa shared hosting dengan register_global kondisi off dan butuh untuk menjalankan aplikasi yang membutuhkan opsi ini dalam kondisi On, atau kamu ada didalam server hosting, dimana fitur register_global dalam kondisi On, tapi kamu ingin mematikannya demi mengurangi resiko keamanan, kamu mungkin harus mengemulasikan setting tersebut dengan PHP.
Tapi merupakan ide bagus kalo kamu bertanya dulu kepada admin hostingnya, apakah memungkinkan untuk merubah setting konfigurasi PHP di server. Tapi bila tidak mungkin, maka kamu bisa mencoba kode ini.
Mengemulasikan Register Global
Fungsi dibawah ini akan mengemulasikan register_globals menjadi On. Jika kamu mengubah directive variable_order nya pertimbangkan untuk mengubah $superglobals sesuai yang dibutuhkan.
< ?php
// Emulate register_globals on
if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
?>
Fungsi dibawah ini akan mengemulasikan register_globals menjadi Off. Perlu diingat bahwa kode ini seharusnya di panggil di awal script kamu atau setelah pemanggilan session_start() jika kamu menggunakannya untuk memulai session
< ?php
// Emulate register_globals off
function unregister_GLOBALS()
{
if (!ini_get('register_globals')) {
return;
}
// Might want to change this perhaps to a nicer error
if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) {
die('GLOBALS overwrite attempt detected');
}
// Variables that shouldn't be unset
$noUnset = array('GLOBALS', '_GET',
'_POST', '_COOKIE',
'_REQUEST', '_SERVER',
'_ENV', '_FILES');
$input = array_merge($_GET, $_POST,
$_COOKIE, $_SERVER,
$_ENV, $_FILES,
isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
foreach ($input as $k => $v) {
if (!in_array($k, $noUnset) && isset($GLOBALS[$k])) {
unset($GLOBALS[$k]);
}
}
}
unregister_GLOBALS();
?>
catatan : hasil bervariasi pada setiap hosting.





