Mengenal Register Global dan Register Long Array

Mengenal Register Global dan Register Long Array

Mengenal Register Global dan Register Long Array

Mengenal Register Global dan Register Long Array

Selain menggunakan variabel SuperGlobals $_GET, $_POST dan $_REQUEST, PHP masih menyediakan cara lain untuk mengakses nilai dari form. Dalam tutorial kali ini, kami akan membahas mengenai register global dan register long array.

Pengertian Register Global dan Register Long Array

Register global dan register long array adalah metode lain dalam PHP yang digunakan untuk menampilkan hasil form, namun kedua metode ini sekarang sudah berstatus deprecated yang berarti tidak disarakan untuk digunakan (kemungkinan tidak akan didukung oleh PHP di masa mendatang). Kedua metode ini adalah metode legacy atau warisan yang digunakan pada versi PHP terdahulu.

Cara Mengakses Nilai Form dengan Register Global

Register global adalah sebuah metode PHP yang memudahkan pengambilan nilai form dengan cara menjadikan atribut nama dari objek form secara otomatis menjadi variabel di dalam PHP. Misalnya, kita memiliki objek form sebuah inputan dengan kode HTML sebagai berikut:

<input type="text" name="user_name" />

Maka di dalam halaman PHP, akan langsung tersedia sebuah variabel $user_name yang berisi nilai dari objek form tersebut dan siap untuk diakses, terlepas dengan cara apa form tersebut dikirim (apakah get atau post). Dalam versi PHP 5.5 bawaan XAMPP, register global sudah tidak didukung lagi. Namun jika Anda menggunakan PHP versi lama dan ingin mencobanya, maka Anda harus mengubah sebuah settingan PHP dalam file php.ini.

Bukalah file php.ini, lalu cari temukan baris setingan berikut:

register_globals=off

Kemudian aktifkan fasilitas ini menjadi:

register_globals=on

Setelah diubah, save file php.ini, dan matikan web server apache (dari XAMPP Cpanel), lalu aktifkan lagi (restart). Hal ini diperlukan agar web server apache dapat membaca perubahan setingan PHP yang baru saja kita lakukan. Selanjutnya, mari kita gunakan kembali halaman form.html sebagai contoh form. Jika Anda belum membuat file tersebut, berikut adalah kode HTML yang dibutuhkan:

<!DOCTYPE html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
   <title>Belajar Form PHP</title>
</head>
<body>
   <h2>Tutorial Belajar Form HTML - PHP </h2>
     <form action="proses.php" method="get">
     Nama: <input type="text" name="nama" />
     <br />
     E-Mail: <input type="text" name="email" />
      <br />
   <input type="submit" value="Proses Data" >
   </form>
</body>
</html>

Dalam percobaan register global ini, kita tidak akan melakukan perubahan apa-apa pada halaman form.html, namun pada file proses.php, ubahlah menjadi:

<?php
   echo $nama;
   echo "<br />";
   echo $email;
?>

Silakan mencoba form tersebut, dan jika setingan register_globals telah aktif, maka hasil form akan tampil sebagaimana contoh sebelumnya. Anda juga bisa mengubah metode pengiriman form dari method=get menjadi method=post dan halaman proses.php akan menampilkan hasilnya dengan sukses.

Meski cara pengaksesan nilai form seperti ini sangat memudahkan untuk menuliskan program, namun register global memiliki celah keamanan yang bisa berdampak fatal. Hal ini terjadi karena pengunjung website bisa memasukkan variabel PHP ke dalam halaman kita.

Misalkan kita memiliki sebuah halaman login.php yang berfungsi untuk memproses hak akses untuk bisa masuk ke situs, dan kode PHPnya adalah sebagai berikut:

Sekarang, jika register_global = on, seseorang bisa melompati bagian validasi tersebut dengan menuliskan alamat URL berikut:

login.php?hak_akses=true

Dengan mengetikkan alamat tersebut, variabel $hak_akses akan langsung bernilai true di dalam halaman login.php, sehingga seseorang bisa mengakses sistem kita tanpa melalui proses validasi user. Karena hal inilah, mengaktifkan register global dianggap berbahaya dan tidak dianjurkan.

Cara Mengakses Nilai Form dengan Register Long Array

Cara lain untuk mengambil nilai dari form adalah menggunakan register long array. Sesuai dengan namanya, register long array memiliki nama variabel yang lebih panjang jika dibandingkan variabel biasa (variabel $_GET dan $_POST).

Untuk mengambil nilai form yang dikirim dengan method=get, kita menggunakan $HTTP_GET_VARS, dan untuk method=post menggunakan $HTTP_POST_VARS.

Sama seperti register global, register long array tidak didukung lagi untuk PHP versi terbaru. Jika Anda memiliki PHP versi lama dan ingin mencobanya, lakukan perubahan settingan php.ini untuk pilihan register_long_arrays=on.

Sebagai contoh, masih menggunakan halaman form.html, kami akan mengubah halaman proses.php menjadi:

<?php
   echo $HTTP_GET_VARS['nama'];
   echo "<br />";
   echo $HTTP_GET_VARS['email'];
?>

Dan jika tidak ada masalah, kode program tersebut akan menampilkan hasil inputan form dari halaman form.html. Demikianlah pembahasan singkat mengenai register global dan register long array. Semoga bermanfaat.

You may also like...