Variabel Global
Ruang lingkup (scope) adalah konteks cakupan definisi dan akses suatu variabel. Dalam PHP, scope sebuah variabel bergantung pada letak variabel dideklarasi/diinisialisasi. Hal ini berarti bahwa variabel dapat dideklarasikan secara khusus pada blok fungsi atau kelas; maupun secara umum (di luar lingkup tertentu). Variabel yang dideklarasi/diinisialisasi secara umum (di luar lingkup tertentu) disebut sebagai variabel global.
Variabel global dapat dimanipulasi di semua ruang lingkup script, baik di dalam maupun di luar fungsi atau kelas. Namun pada keadaan tertentu, manipulasi suatu variabel dapat pula dipengaruhi dari ruang lingkup prosesnya. Sebagai contoh:
<?php
// Global scope$trend = 'Corona';$year = 2020;function statement() {// Variabel $trend dan $year bereferensi pada local function scopeecho "Tren virus $trend mengindikasikan pandemi belum berakhir pada tahun $year.";}statement();?>
Notice: Undefined variable: trend
Notice: Undefined variable: year
Kita akan mendapatkan peringatan seperti contoh di atas. Hal ini dikarenakan dalam ruang lingkup fungsi tidak terdapat variabel $trend
dan $year
yang diakses secara khusus sebagai local function scope.
Oleh karena itu, kita dapat menerapkan beberapa metode sebagai berikut:
1. Menggunakan Keyword global
Ketika kita akan menggunakan variabel global dalam ruang lingkup tertentu, kita harus mendefinisikan keyword global
sebelum nama variabel global ditetapkan. Berikut contoh penerapan keyword global
.
<?php
// Global scope$trend = 'Corona';$year = 2020;function statement() {global $trend, $year;echo "Tren virus $trend mengindikasikan pandemi belum berakhir pada tahun $year.";}statement();?>
Tren virus Corona mengindikasikan pandemi belum berakhir pada tahun 2020.
2. Memanfaatkan Variabel Superglobal $GLOBALS
Di samping keyword global
, kita juga dapat memanfaatkan fitur array yang terdapat pada variabel superglobal $GLOBALS
sebagai referensi variabel global. Pemanfaatan array $GLOBALS
sama seperti array associative. Kita cukup menuliskan nama variabel global sebagai key dari array $GLOBALS
. Pembahasan lebih lanjut mengenai $GLOBALS
dapat kita lihat pada pembahasan variabel superglobal. Perhatikan penerapannya pada contoh berikut.
<?php
// Global scope$trend = 'Corona';$year = 2020;function statement() {echo "Tren virus {$GLOBALS['trend']} mengindikasikan pandemi belum berakhir pada tahun {$GLOBALS['year']}.";}statement();?>
Tren virus Corona mengindikasikan pandemi belum berakhir pada tahun 2020.
Dalam penerapan kedua cara akses variabel global di atas terdapat perbedaan yang harus diperhatikan. Dengan memanfaatkan variabel superglobal $GLOBALS
, kita masih dapat mendeklarasikan variabel dengan nama yang sama pada scope lokal. Namun, pemanfaatan keyword global
membawa variabel tersebut pada scope lokal sehingga tidak memungkinkan penggunaan variabel dengan nama yang sama pada scope lokal. Untuk lebih jelasnya, perhatikan contoh berikut:
<?php
// Global scope$trend = 'Corona';$year = 2020;function statement() {// Akses variabel globalglobal $trend, $year;// Variabel $year dibawa pada scope lokal// Inisialisasi akan mengubah nilai $year secara global// Kita tidak dapat lagi mendeklarasikan/menginisialisasi sebuah variabel local scope baru menggunakan nama yang sama ($year)$year = 2019echo "Tren virus $trend mengindikasikan pandemi belum berakhir pada tahun $year.";}statement();// Output: Tren virus Corona mengindikasikan pandemi belum berakhir pada tahun 2019.echo $year;// Output: 2019?>
<?php
// Global scope$trend = 'Corona';$year = 2020;function statement() {// Sebuah variabel local scope baru menggunakan nama yang sama ($year) diinisialisasi// Inisialisasi tidak akan mengubah nilai $year secara global$year = 2019;echo "Tren virus {$GLOBALS['trend']} mengindikasikan pandemi belum berakhir pada tahun $year.";}statement();// Output: Tren virus Corona mengindikasikan pandemi belum berakhir pada tahun 2019.echo $year;// Output: 2020?>
Variabel Superglobal
Variabel superglobal adalah variabel-variabel bawaan PHP (PHP built-in variables) yang dapat diakses dan dimanipulasi di semua ruang lingkup script PHP.
Untuk memanfaatkan variabel superglobal, kita tidak perlu mendefinisikannya terlebih dahulu, juga tidak perlu menggunakan keyword global
untuk mengakses variabel tersebut.
Terdapat 9 variabel superglobal, antara lain:
1. $GLOBALS
$GLOBALS
merupakan variabel superglobal yang digunakan untuk mengakses variabel-variabel global di semua ruang lingkup. Variabel-variabel global disimpan dalam array associative $GLOBALS
ini. Saat kita akan mengakses variabel global, kita hanya perlu menuliskan nama variabel globalnya sebagai key dari array $GLOBALS
. Mari kita perhatikan penerapan $GLOBALS
pada contoh berikut.
<?php
// Global scope// Semua variabel global scope akan secara otomatis menjadi bagian dari variabel superglobal $GLOBALS$globalVariable = "Global";function localFunction() {// Local function scope// Variabel local scope tidak akan menjadi bagian dari variabel superglobal $GLOBALS$localVariable = "Lokal";echo("Sebuah variabel local scope dengan nilai '$localVariable' dibuat.");echo("Kita juga dapat mengakses variabel global dalam sebuah function: {$GLOBALS['globalVariable']}.");}localFunction();var_dump($GLOBALS);?>
Sebuah variabel local scope dengan nilai 'Lokal' dibuat.
Kita juga dapat mengakses variabel global dalam sebuah function: Global.array(6) {["_GET"]=>array(0) {}["_POST"]=>array(0) {}["_COOKIE"]=>array(0) {}["_FILES"]=>array(0) {}["GLOBALS"]=>array(6) {["_GET"]=>array(0) {}["_POST"]=>array(0) {}["_COOKIE"]=>array(0) {}["_FILES"]=>array(0) {}["GLOBALS"]=>*RECURSION*["globalVariable"]=>string(6) "Global"}["globalVariable"]=>string(6) "Global"}
2. $_SERVER
$_SERVER
merupakan variabel superglobal berupa array associative yang berisi informasi berupa header, path, hingga lokasi-lokasi script. Nilai-nilai dari variabel superglobal yang satu ini bersumber dari web server tersendiri. Jadi, tidak ada jaminan bahwa setiap web server akan menyediakan nilai-nilai yang sama persis, bahkan bisa saja terdapat beberapa nilai yang tidak tersedia pada web server tertentu. Agar lebih jelas, mari kita perhatikan contoh berikut.
<?php
var_dump($_SERVER);?>
array(45) {
["MIBDIRS"]=>string(24) "C:/xampp/php/extras/mibs"["MYSQL_HOME"]=>string(16) "xamppmysqlbin"["OPENSSL_CONF"]=>string(31) "C:/xampp/apache/bin/openssl.cnf"["PHP_PEAR_SYSCONF_DIR"]=>string(10) "xamppphp"["PHPRC"]=>string(10) "xamppphp"["TMP"]=>string(10) "xampptmp"["HTTP_HOST"]=>string(9) "localhost"["HTTP_CONNECTION"]=>string(10) "keep-alive"["HTTP_UPGRADE_INSECURE_REQUESTS"]=>string(1) "1"["HTTP_USER_AGENT"]=>string(115) "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36"["HTTP_ACCEPT"]=>string(124) "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"["HTTP_SEC_FETCH_SITE"]=>string(4) "none"["HTTP_SEC_FETCH_MODE"]=>string(8) "navigate"["HTTP_SEC_FETCH_USER"]=>string(2) "?1"["HTTP_SEC_FETCH_DEST"]=>string(8) "document"["HTTP_ACCEPT_ENCODING"]=>string(17) "gzip, deflate, br"["HTTP_ACCEPT_LANGUAGE"]=>string(14) "en-US,en;q=0.9"["HTTP_COOKIE"]=>string(0) ""["PATH"]=>string(255) "C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:WINDOWSSystem32OpenSSH;C:Program Filesnodejs;C:Program FilesGitcmd;C:WINDOWSsystem32configsystemprofileAppDataLocalMicrosoftWindowsApps"["SystemRoot"]=>string(10) "C:WINDOWS"["COMSPEC"]=>string(27) "C:WINDOWSsystem32cmd.exe"["PATHEXT"]=>string(53) ".COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC"["WINDIR"]=>string(10) "C:WINDOWS"["SERVER_SIGNATURE"]=>string(94) "<address>Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.3 Server at localhost Port 80</address>"["SERVER_SOFTWARE"]=>string(46) "Apache/2.4.41 (Win64) OpenSSL/1.1.1c PHP/7.4.3"["SERVER_NAME"]=>string(9) "localhost"["SERVER_ADDR"]=>string(3) "::1"["SERVER_PORT"]=>string(2) "80"["REMOTE_ADDR"]=>string(3) "::1"["DOCUMENT_ROOT"]=>string(15) "C:/xampp/htdocs"["REQUEST_SCHEME"]=>string(4) "http"["CONTEXT_PREFIX"]=>string(0) ""["CONTEXT_DOCUMENT_ROOT"]=>string(15) "C:/xampp/htdocs"["SERVER_ADMIN"]=>string(20) "postmaster@localhost"["SCRIPT_FILENAME"]=>string(25) "C:/xampp/htdocs/index.php"["REMOTE_PORT"]=>string(5) "54481"["GATEWAY_INTERFACE"]=>string(7) "CGI/1.1"["SERVER_PROTOCOL"]=>string(8) "HTTP/1.1"["REQUEST_METHOD"]=>string(3) "GET"["QUERY_STRING"]=>string(0) ""["REQUEST_URI"]=>string(1) "/"["SCRIPT_NAME"]=>string(10) "/index.php"["PHP_SELF"]=>string(10) "/index.php"["REQUEST_TIME_FLOAT"]=>float(1597114403.99)["REQUEST_TIME"]=>int(1597114403)}
Meskipun atribut yang disediakan masing-masing berbeda, terdapat beberapa atribut yang penting. Mari kita perhatikan tabel berikut.
Atribut | Keterangan |
---|---|
HTTP_HOST |
Menyatakan nama host server, diperoleh dari header permintaan client. Dimanfaatkan juga sebagai target host untuk permintaan client. Karena bersumber pada header permintaan client, nilai atribut ini sewaktu-waktu dapat dimodifikasi client. |
HTTP_USER_AGENT |
Memuat User-Agent, yang merupakan sebuah teks (string) yang dikirimkan browser sendiri ke web server untuk mengidentifikasi dirinya, sehingga situs web tersebut dapat mengirim konten yang berbeda berdasarkan browser dan kompatibilitas browser. |
SERVER_NAME |
Menyatakan nama dari host server yang menjalankan script ini. Berbeda dengan HTTP_HOST , nilai atribut ini bersumber pada konfigurasi dari server, sehingga atribut ini tidak dapat kita ubah nilainya. Atribut ini juga tidak memberikan informasi apapun seputar permintaan. |
SERVER_ADDR |
Memuat nilai berupa IP (Internet Protocol) Address dari server di mana script dijalankan. |
SERVER_PORT |
Menyatakan nama dari port pada mesin server yang digunakan oleh web server untuk berkomunikasi. Secara default bernilai ‘80’ dan menggunakan SSL. Dalam penerapannya, hal ini berfungsi mengubahnya menjadi HTTP port apapun yang kita tentukan. |
DOCUMENT_ROOT |
Memuat nilai berupa direktori utama dari file script yang dijalankan. Umumnya ditentukan dalam file konfigurasi server. |
SCRIPT_FILENAME |
Memuat path direktori sesungguhnya dari file script yang dijalankan secara terperinci. |
REQUEST_METHOD |
Menyatakan metode permintaan jenis apa yang digunakan dalam mengakses halaman tersebut. Sebagai contoh metode permintaan adalah GET, POST, dsb. |
QUERY_STRING |
Memuat nilai dari query-string yang terdapat pada halaman tersebut. Query-string merupakan cara untuk menambah atau menyalurkan data melalui URL halaman dalam bentuk parameter. |
REQUEST_URI |
Menyatakan nilai dari permintaan URI halaman yang diakses. URI sendiri merupakan Uniform Resource Identifier sebagai pengenal dari tempat permintaan diterapkan. Saat ini, URI hampir selalu mengikuti aturan HTTP URL yang berdasarkan sintaks standar Web URLs. Sebagai contoh dengan URL https://informatika.web.id/variabel-global-dan-superglobal.html , maka kita mendapatkan URI berupa /variabel-global-dan-superglobal.html . |
SCRIPT_NAME |
Menyatakan path direktori dari script yang dijalankan. Atribut ini hanya merujuk pada file script ini sendiri saja, tidak menunjukkan direktori secara terperinci. |
PHP_SELF |
Menyatakan nama file script yang dijalankan, tetapi secara relatif terhadap document root (nilai dari DOCUMENT_ROOT ). Misalkan dengan URL https://informatika.web.id/PHP/variabel-global-dan-superglobal.html , /PHP/variabel-global-dan-superglobal.html yang termuat sebagai PHP_SELF . |
3. $_GET
$_GET
merupakan variabel superglobal berbentuk array associative dari variabel-variabel yang di-passing/diteruskan ke script melalui parameter URL berdasarkan permintaan GET. Variabel superglobal ini digunakan untuk memperoleh data yang di-submit dari form HTML dengan metode GET (dimuat dalam parameter URL setelah tanda ?
pada URL). Kita juga dapat mengirimkan beberapa data melalui URL dengan memisahkannya menggunakan tanda &
.
Untuk lebih memahami penggunaan variabel superglobal $_GET
, buatlah sebuah file dengan nama get.php
pada folder project Superglobal
(C:xampphtdocsSuperglobal
).
Ketik kode sebagai berikut:
<?php
var_dump($_GET);echo $_GET['stats'] ?? 'Tidak ada statistik.';?>
Pada baris pertama, isi array associative
$_GET
secara keseluruhan akan ditampilkan.Kita juga dapat mengakses data tertentu yang dikirimkan melalui metode GET dengan mengakses key dari array
$_GET
. Pada baris ketiga, kita akan memeriksa apakah terdapat datastats
yang dikirimkan. Apabila ada, kita akan menampilkan output nilaistats
yang dikirimkan. Namun, jika tidak ada, kita akan menampilkan output kalimat “Tidak ada statistik.”.
Buka browser dan ketik localhost/Superglobal/get.php?trend=Corona&year;=2020&country;=Indonesia
pada address bar. Kita akan melihat hasil output sebagai berikut:
array(3) {
["trend"]=>string(6) "Corona"["year"]=>string(4) "2020"["country"]=>string(9) "Indonesia"}Tidak ada statistik.
Adapun penjelasan parameter URL dengan pengiriman data melalui metode GET adalah sebagai berikut:
JANGAN pernah mengirimkan data yang berisi informasi sensitif (seperti password) saat menggunakan metode GET. Data yang dikirimkan dimuat pada URL yang dapat diakses pada history browser.
4. $_POST
$_POST
mirip seperti $_GET
, hanya saja nilai variabel superglobal ini bersumber dari submit form HTML yang menerapkan metode POST. Karena menggunakan metode POST, data-data yang diteruskan ke script tidak akan terpampang pada parameter URL, tetapi diolah sebagai application/x-www-form-urlencoded atau multipart/form-data pada HTTP Content-Type.
Untuk lebih memahami penggunaan variabel superglobal $_POST
, buatlah sebuah file dengan nama form_post.html
pada folder project Superglobal
(C:xampphtdocsSuperglobal
).
Ketik kode sebagai berikut:
<form method="POST" action="post.php">
<input type="text" name="username" placeholder="Username"><input type="password" name="password" placeholder="Password"><input type="submit"></form>
Kita harus memberikan nilai
POST
untuk atribut method pada tagform
. Hal ini dikarenakan secara default, HTML akan mendefinisikan form dengan metode GET (jika tidak ditentukan).Value dari atribut name pada tag
input
akan menjadi key dari array$_POST
.
Lanjutkan dengan membuat sebuah file dengan nama post.php
pada folder project yang sama. Ketik kode sebagai berikut:
<?php
var_dump($_POST);?>
Buka browser dan ketik localhost/Superglobal/form_post.html
pada address bar.
Masukkan username dan password. Pada contoh ini, kita akan memberikan input username berupa Corona dan password berupa StayAtHome. Lalu, tekan tombol Submit.
Halaman akan diarahkan ke localhost/Superglobal/post.php
dengan hasil output sebagai berikut:
array(2) {
["username"]=>string(6) "Corona"["password"]=>string(10) "StayAtHome"}
Meskipun pada URL tidak terdapat data yang dikirimkan, kita dapat mengakses data yang telah terkirim menggunakan metode POST dengan memanfaatkan variabel superglobal $_POST
.
Pengiriman data menggunakan metode POST juga tidak selalu aman. Hal ini dikarenakan bisa saja terjadi pencurian data saat terjadi komunikasi antara client dan server. Penggunaan HTTPS akan menjamin pengiriman data yang lebih aman.
5. $_COOKIE
$_COOKIE
merupakan variabel superglobal yang berisi data-data yang disimpan secara lokal pada browser. Data-data tersebut disalurkan melalui HTTP Cookies. $_COOKIE
ini juga berbentuk array associative.
Berbeda dengan variabel superglobal lainnya, inisialisasi cookie dapat dilakukan dengan menggunakan fungsi setcookie()
. Pada fungsi ini, kita dapat menentukan key, nilai, waktu expire, path, dlsb.
Untuk menghancurkan sebuah cookie juga dilakukan menggunakan fungsi setcookie()
dengan mengosongkan nilainya dan memberikan waktu expire pada masa lalu.
Untuk lebih jelas, perhatikan contoh berikut.
<?php
// Inisialisasi cookie dengan key trend, nilai "Corona"// Cookie ini akan expire dalam waktu 1 jamsetcookie("trend", "Corona", time() + 3600);// Inisialisasi cookie dengan key year, nilai 2020// Cookie ini akan expire saat sesi browsing berakhirsetcookie("year", 2020);// Menghancurkan cookie dengan key trendsetcookie("trend", "", time() - 1);if (!isset($_COOKIE['year'])) {header("Refresh: 0");} else {var_dump($_COOKIE);}?>
array(1) {
["year"]=>string(4) "2020"}
Apabila kita membuat cookie pertama kalinya, mungkin saja browser telah selesai melakukan render page sesaat sebelum cookie berhasil diinisialisasi. Untuk itu, kita dapat melakukan refresh page untuk memaksa browser melakukan render page lagi.
Pada kode di atas, kita akan melakukan refresh page apabila cookie dengan key year belum diinisialisasi. Namun, jika sudah diinisialisasi, kita akan menampilkan output
$_COOKIE
secara keseluruhan.
Untuk melihat cookie secara langsung, kita dapat membuka Developer Tools (menggunakan shortcut Ctrl + Shift + I pada PC, ⌥ + ⌘ + I pada Mac, disesuaikan dengan browser yang digunakan). Pilih tab Application. Pada bagian Storage, klik pada Cookies.
6. $_SESSION
$_SESSION
mirip seperti $_COOKIE
, hanya saja data-data dari session disimpan dalam server, berbeda dengan cookie yang menyimpan data-data pada lokal browser.
Untuk memulai session, kita perlu menyertakan fungsi session_start()
pada setiap bagian atas halaman script yang memanfaatkan session. Dengan demikian, data yang disimpan pada variabel superglobal $_SESSION
dapat di-passing antarhalaman yang bersangkutan.
Saat memulai sebuah sesi browser pada alamat website tertentu, sebuah ID acak session akan dibuat menjadi sebuah cookie dengan key PHPSESSID. Cookie ini akan berisi ID session untuk menandakan sesi aktif browser pada alamat website tersebut.
Untuk menghancurkan sebuah variabel tertentu pada session dapat menggunakan fungsi unset()
. Apabila hendak menghancurkan keseluruhan sesi aktif browser pada alamat website, kita dapat menggunakan fungsi session_destroy()
. Fungsi ini akan menghancurkan sesi secara keseluruhan, yang berarti seluruh variabel session tidak berlaku lagi.
Untuk lebih memahami penggunaan variabel superglobal $_SESSION
, buatlah sebuah file dengan nama session_1.php
pada folder project Superglobal
(C:xampphtdocsSuperglobal
).
Ketik kode sebagai berikut:
<?php
session_start();$_SESSION['trend'] = 'Corona';$_SESSION['year'] = 2020;$_SESSION['country'] = 'Indonesia';echo "<pre>";var_dump($_SESSION);echo "</pre>";header("Refresh: 5; url=session_2.php");?>
Kode di atas akan menampilkan beberapa variabel
$_SESSION
yang telah diinisialisasi selama 5 detik. Kemudian, mengarahkan halaman kesession_2.php
.
Lanjutkan dengan membuat sebuah file dengan nama session_2.php
pada folder project yang sama. Ketik kode sebagai berikut:
<?php
session_start();echo "Nilai awal variabel session.";echo "<pre>";var_dump($_SESSION);echo "</pre>";unset($_SESSION['trend']);echo "Menghancurkan variabel trend pada session.";echo "<pre>";var_dump($_SESSION);echo "</pre>";session_destroy();header("Refresh: 5; url=session_3.php");?>
Kode di atas akan menampilkan beberapa variabel
$_SESSION
yang telah diinisialisasi pada halamansession_1.php
sebelumnya. Lalu, variabel$_SESSION['trend']
dihancurkan. Proses dilanjutkan dengan menghancurkan keseluruhan sesi aktif browser pada alamat website tersebut. Setelah 5 detik, halaman diarahkan kesession_3.php
.
Untuk melihat penghancuran session, buat sebuah file dengan nama session_3.php
pada folder project yang sama. Ketik kode sebagai berikut:
<?php
session_start();echo "Menghancurkan seluruh variabel pada session.";echo "<pre>";var_dump($_SESSION);echo "</pre>";?>
Buka browser dan ketik localhost/Superglobal/session_1.php
pada address bar. Perhatikan hasil eksekusi kode di atas sebagai berikut:
Apa Perbedaan antara Cookie dan Session?
Untuk perincian perbedaan cookie dan session, mari sama-sama kita simak pada tabel berikut.
Cookie | Session |
---|---|
Tersimpan di sisi client secara lokal pada browser. | Tersimpan di sisi server. |
Tidak begitu aman, karena cookie dapat disisipi program yang tidak diketahui oleh client. Oleh karena itu, browser client dapat diatur untuk menghapus cookie, bahkan menonaktifkan fungsi cookie. Cookie juga tidak aman bagi sisi server karena dapat di-edit oleh client. | Lebih aman, karena tidak ada file yang dimasukkan ke sisi client. |
Data yang disimpan cookie dapat bertahan lebih lama dan dapat diatur waktu expired sesuai kebutuhan. | Data yang disimpan session akan hilang jika sesi browsing berakhir dan waktu expired tidak dapat diatur sesuai kebutuhan. |
Contoh penerapan:
|
Contoh penerapan:
|
7. $_REQUEST
$_REQUEST
merupakan variabel superglobal yang memuat semua nilai dari $_GET
, $_POST
, dan $_COOKIE
.
Karena $_REQUEST
menampung nilai dari ketiga variabel superglobal, sangat memungkinkan terdapat kesamaan key. Hal ini akan menyebabkan satu nilai menimpa yang lainnya. Misalnya terdapat $_GET['username']
dan $_POST['username']
. Secara default, $_REQUEST['username']
akan menerima nilai $_GET['username']
terlebih dahulu, kemudian ditimpa dengan nilai $_POST['username']
.
Dalam PHP, kita dapat menentukan presedensi ketiga variabel superglobal tersebut dengan melakukan modifikasi nilai request_order
pada php.ini
. Misalnya, kita memodifikasi nilainya menjadi "GPC"
sehingga urutannya menjadi $_GET
, $_POST
, lalu $_COOKIE
. Hal ini menyebabkan apabila terdapat kesamaan key, nilai $_COOKIE
pada key tersebut yang akan digunakan.
Untuk lebih memahami penggunaan variabel superglobal $_REQUEST
, buatlah sebuah file dengan nama form_request.html
pada folder project Superglobal
(C:xampphtdocsSuperglobal
).
Ketik kode sebagai berikut:
<form method="POST" action="request.php?username=Covid19&year=2020">
<input type="text" name="username" placeholder="Username"><input type="password" name="password" placeholder="Password"><input type="submit"></form>
Kita harus memberikan nilai
POST
untuk atribut method pada tagform
. Hal ini dikarenakan secara default, HTML akan mendefinisikan form dengan metode GET (jika tidak ditentukan).
Lanjutkan dengan membuat sebuah file dengan nama request.php
pada folder project yang sama. Ketik kode sebagai berikut:
<?php
echo "Metode GET";var_dump($_GET);echo "Metode POST";var_dump($_POST);echo "Metode REQUEST";var_dump($_REQUEST);?>
Buka browser dan ketik localhost/Superglobal/form_request.html
pada address bar.
Masukkan username dan password. Pada contoh ini, kita akan memberikan input username berupa Corona dan password berupa StayAtHome. Lalu, tekan tombol Submit.
Halaman akan diarahkan ke localhost/Superglobal/request.php?username=Covid19&year;=2020
dengan hasil output sebagai berikut:
Metode GET
array(2) {["username"]=>string(7) "Covid19"["year"]=>string(4) "2020"}Metode POSTarray(2) {["username"]=>string(6) "Corona"["password"]=>string(10) "StayAtHome"}Metode REQUESTarray(3) {["username"]=>string(6) "Corona"["year"]=>string(4) "2020"["password"]=>string(10) "StayAtHome"}
8. $_ENV
$_ENV
adalah variabel superglobal yang berisi variabel-variabel environment yang disesuaikan dengan tempat website dijalankan pada web server. $_ENV
berbentuk array associative dan variabel-variabelnya diimpor ke namespace global PHP dari environment tempat PHP parser berjalan.
Untuk dapat mengakses variabel superglobal $_ENV
, kita dapat melakukan modifikasi nilai variables_order
menjadi "EGPCS"
pada php.ini
.
Sebenarnya, untuk dapat mengakses variabel-variabel environment, kita juga dapat memanfaatkan fungsi getenv()
. Fungsi ini dapat bekerja tanpa dipengaruhi pengaturan pada php.ini
. Selain itu, fungsi ini menerima parameter string
yang case insensitive
.
Agar lebih jelas, mari kita perhatikan contoh berikut.
<?php
var_dump($_ENV['OS']);var_dump(getenv('username'));?>
string(10) "Windows_NT"
string(16) "DESKTOP-5SZ3QE4$"
9. $_FILES
$_FILES
merupakan variabel superglobal yang berbentuk array associative dari data yang di-upload ke script berdasarkan metode HTTP POST, seperti file gambar, video, atau file berekstensi lainnya. Data yang tersimpan dalam array berupa nama file, tipe file, size, dsb.
Untuk lebih memahami penggunaan variabel superglobal $_FILES
, buatlah sebuah file dengan nama form_upload.html
pada folder project Superglobal
(C:xampphtdocsSuperglobal
).
Ketik kode sebagai berikut:
<form method="POST" enctype="multipart/form-data" action="upload.php">
<input type="file" name="document" /><input type="submit"></form>
Kita harus memberikan nilai
POST
untuk atribut method pada tagform
. Hal ini dikarenakan secara default, HTML akan mendefinisikan form dengan metode GET (jika tidak ditentukan).Kita juga harus menambahkan
enctype="multipart/form-data"
pada tagform
. Bagian ini penting apabila form berkaitan dengan upload file.
Lanjutkan dengan membuat sebuah file dengan nama upload.php
pada folder project yang sama. Ketik kode sebagai berikut:
<?php
if (isset($_FILES['document'])) {echo "File berhasil di-upload!";var_dump($_FILES['document']);} else {echo "File tidak berhasil di-upload!";}?>
Buka browser dan ketik localhost/Superglobal/form_upload.html
pada address bar.
Masukkan file yang akan di-upload. Pada contoh ini, kita akan melakukan upload sebuah gambar dengan nama informatikawebid.jpg. Lalu, tekan tombol Submit.
Halaman akan diarahkan ke localhost/Superglobal/upload.php
dengan hasil output sebagai berikut:
File berhasil di-upload!
array(5) {["name"]=>string(20) "informatikawebid.jpg"["type"]=>string(10) "image/jpeg"["tmp_name"]=>string(23) "C:xampptmpphpDFB.tmp"["error"]=>int(0)["size"]=>int(627073)}