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]
- <?php
- $var = 'Test eval';
- $str = 'echo $var;';
- eval($str); // Hasil: Test eval
- ?>
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 ):
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 , yaitu preg_replace_callback.
Kita buat fungsi callback** dulu yang berisi eval:
[Textarea][RAW][Download]
- function callback_eval($matches) {
- eval($matches[1]);
- }
Lalu contoh sederhana fungsi BBcode-nya:
[Textarea][RAW][Download]
- function bbcode($str) {
- $str = preg_replace_callback('#\[eval\](.*?)\[/eval\]#si', 'callback_eval', $str);
- return $str;
- }
Contoh penerapannya:
[Textarea][RAW][Download]
- <?php
- // Tulis dua fungsi diatas disini, atau taruh misalnya di function.php lalu di-include.
- $str = 'Ini adalah artikel mengenai fungsi [eval]echo 'eval';[/eval] di PHP.';
- echo bbcode($str);
- // Hasil: Ini adalah artikel mengenai fungsi eval di PHP.
- ?>
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)