Nasıl eval olmadan I çıkışı bu dinamik veri olabilir?

0 Cevap php

MVC tarzı bir CMS yazma oldum ve file_get_contents aracılığıyla gerekli çeşitli dosyaları çekmek için bir Şablon sınıf kullanmış

Yapmam sonunda

eval('?>'.($template).'<?');

PHP aslında kodu oluşturur böylece eval kötü olduğunu bilmek, nasıl alternatif bu verileri temizleyebilirsiniz?

Herşey yüklenmiş bir kez anda Şablon sınıf yapar. Şablon sınıf bir değişken olarak benim index.php için bu kodu döndürebilir ve ardından çalıştırmak yapmak için bir şey çalıştırmak mümkün mü?

Ben geldim bir MVC tarzı sitesi kodlama Her örnek sorunu çözmek için eval kullanır.

Ilave ilgili bir soru - Ben eval kötü niyetli kullanıcı girilen kod çalıştırmak için kullanılan olabilir anlıyorum, ancak bazı diğer fonksiyon aynı kaderi değil mi? Ben html varlıkları içine herhangi bir kullanıcı içeriğini açarsanız, bu üstesinden değil mi?


Büyük olasılıkla benim yöntemi kusurlu, ama ben eval önler başka bir yöntemi görmek için istekli kulüpler neden olan, okuma oldum örneklerini izler.

Ben sadece aynı şeyi başarır bu pasajı buldunuz:

function interpolate( $string ){
        foreach ($GLOBALS as $name => $value){

            $string = str_replace( '$'.$name, $value, $string );
        }

        $string = preg_replace( '/[$]\\w+/', '', $string );
        return $string;

    }

Bu etkili, doğru içerik ile değişkenleri değiştirerek tüm kodu oluşturur.

0 Cevap