Artikel ini dapat digunakan, disalin, dan disebarluaskan. Cukup cantumkan sumber asli. Jika isinya mengandung kebenaran, semoga memberi kebaikan bagi kita yang memanfaatkannya. Jika ada yang salah, mohon kiranya penulis dimaafkan. Dan sangat baik, jika kesalahan tersebut dapat diberitahukan kepada penulis.
Yanmarshus, 16 November 2006, yan[at]daunsalam[dot]net

If Not Defined

Fungsi yang dimaksud pada judul ini adalah fungsi define yang ada dalam PHP. Disini akan diceritakan secara ringkas bagaimana menggunakan fungsi ini sebagai salah satu perlindungan untuk script PHP yang kita buat.

Cukup sering dalam membuat program dengan PHP, karena alasan tertentu digunakan statement include untuk menyertakan file php lainnya agar ikut dieksekusi. Penggunaan include ini bisa berguna untuk membuat program lebih ringkas, sebab file yang sama bisa dipakai di beberapa file php lainnya. Dan file yang di-include-kan ini memang tidak dimaksud untuk dieksekusi secara langsung.

Untuk menghindari agar file tersebut tidak dieksekusi secara langsung, ada beberapa cara yang bisa digunakan. Salah satunya adalah memanfaatkan file .htaccess jika menggunakan webserver Apache. Cara lain adalah dengan menambahkan beberapa baris instruksi dalam program yang kita buat dengan memanfaatkan fungsi define. Sebagai contoh, seperti pada potongan program berikut

Misalnya file utama.php berisi kode seperti berikut. Di dalamnya ada statement untuk include file jablay.php

<?php

echo "Stasiun Citayam <br>";
include "jablay.php";

?>

File jablay.php yang akan diikutkan di dalam file utama.php

<?php

echo "Mendadak Dangdut";

?>

Jika kita eksekusi file utama.php kita akan memperoleh hasil seperti berikut

Stasiun Citayam
Mendadak Dangdut

Jika kita eksekusi file jablay.php kita juga akan tetap bisa memperoleh hasil, yaitu tampilnya tulisan Mendadak Dangdut. Dalam sejumlah keadaan, sebenarnya kita tidak mengizinkan file jablay.php ini untuk dieksekusi secara langsung. Dengan memanfaatkan fungsi define, kita bisa melindungi file jablay.php

Caranya adalah dengan mendefinisikan sebuah konstan tertentu dalam file utama.php, lalu pada baris kode paling awal dalam file jablay.php kita lakukan pengujian, apakah konstan yang didefinisikan dalam file utama.php ada atau tidak. Kalau ada, bisa terus dilanjutkan, kalau tidak, program langsung dihentikan, misalnya dengan die().

File utama.php akan menjadi seperti berikut

<?php

define("XXYYZZ","film");
echo "Stasiun Citayam <br>";
include "jablay.php";

?>

File jablay.php yang akan diikutkan di dalam file utama.php

<?php

if (!defined("XXYYZZ")) { die('Jangan akses langsung file ini'); }
echo "Mendadak Dangdut";

?>

Selain cara di atas, bisa juga dengan menguji melalui variabel global $_SERVER['PHP_SELF'] yaitu dengan mengetahui nama file yang sedang dieksekusi. Jika nama file yang dieksekusi adalah file jablay.php yaitu dirinya sendiri, maka proses langsung dihentikan.