Blog Posts » PHP » Menjalankan Kode PHP Didalam Postingan

Menjalankan Kode PHP Didalam Postingan

PHP dibekali fungsi yang hebat, yaitu eval()*. Fungsi ini bekerja dengan cara mem-parse string yang diberikan kemudian mengeksekusinya sebagai PHP.
[Textarea][RAW][Download]

  1. <?php
  2. $var = 'Test eval';
  3. $str = 'echo $var;';
  4. eval($str); // Hasil: Test eval
  5. ?>


Bagaimana cara menanamkan fungsi ini agar kita bisa menjalankan kode PHP di posting atau artikel?
Cukup buat fungsi layaknya BBcode, seperti kalau menggunakan preg_replace. Namun karena didalam preg_replace kita tidak bisa memasukkan fungsi lain (walau sebenarnya bisa dengan cara menambahkan e modifier pada preg_replace) tetapi PHP telah meninggalkannya sejak PHP 5.5.0 (Hehe kebanyakan hosting masih pake PHP 5.2.x :P):

e (PREG_REPLACE_EVAL)
Warning
This feature has been DEPRECATED as of PHP 5.5.0. Relying on this feature is highly discouraged.


Maka kita gunakan penggantinya saja agar tidak ketinggalan :D, yaitu preg_replace_callback.

Kita buat fungsi callback** dulu yang berisi eval:
[Textarea][RAW][Download]

  1. function callback_eval($matches) {
  2. eval($matches[1]);
  3. }


Lalu contoh sederhana fungsi BBcode-nya:
[Textarea][RAW][Download]

  1. function bbcode($str) {
  2. $str = preg_replace_callback('#\[eval\](.*?)\[/eval\]#si', 'callback_eval', $str);
  3. return $str;
  4. }


Contoh penerapannya:
[Textarea][RAW][Download]

  1. <?php
  2. // Tulis dua fungsi diatas disini, atau taruh misalnya di function.php lalu di-include.
  3. $str = 'Ini adalah artikel mengenai fungsi [eval]echo 'eval';[/eval] di PHP.';
  4. echo bbcode($str);
  5. // Hasil: Ini adalah artikel mengenai fungsi eval di PHP.
  6. ?>


Mudah bukan? Selamat mencoba :)

* Perlu diingat bahwa jika ingin menggunakan fungsi eval ini maka harus benar-benar hati-hati terhadap akses publik. Ada beberapa hosting yang men-disable atau mem-blok fungsi ini karena alasan keamanan.
** Tentang cara kerja fungsi callback ada di Penerapan PHP callback.

(admin)