sonra yürütmek, veritabanında textarea, mağaza içine php kodunu yazın

6 Cevap php

Herkes böyle bir şey yapıyor hakkında gitmek nasıl bir fikriniz var.

Kullanıcıların sayfa içeriğini düzenlemek için izin vermek için bir textarea kurulum var. içerik daha sonra bir veritabanında saklanır ve bir html şablon içinde php tarafından önyüzü üzerinde alınır. gibi bir şey:

<html>
yada yada...
<?php
echo get_page_contents_by_id($_GET['id']);
?>
yada yada...
</html>

onun tüm bir. php dosyasında çalıştırmak durumunda herkes dışarı aramak istedim.

Ben php ile veritabanından içeriği alıyorum, çünkü isimli merak ediyorum ne, ben bu içerikte bulunan php kodunu almak ve yine dosya yazma her türlü yapmadan çalıştırabilirsiniz herhangi bir yolu yoktur.

6 Cevap

Aslında doğrudan PHP dosyasında yazılmış gibi eğer - Sen PHP veritabanından döndürülen PHP kodu çalıştırmak için eval() yöntemini kullanabilirsiniz.

örneğin

<?php
eval("echo('merhaba dünya');");
?>

Baskılar:

merhaba dünya

Bu amaç için eval kullanabilirsiniz.

http://php.net/manual/en/function.eval.php

James Goodwin ve Gãžler aslında dize veri PHP kodu çalıştırmak için tek yol dedikleri gibi eval() olduğunu.

Güvenlik sonuçlara ek olarak - bu mySQL veri erişimi elde ederek tüm web sitesi uzlaşma mümkün olacak - Eğer eval () d aracılığıyla tüm hata iletileri takip etmek zorunda kalacak gibi bu yaklaşım, hata ayıklamak çok zor kod yapacak kodu.

Ben bu aynı şeyi yapmaya çalıştılar, ancak etiketleri ve normal HTML etiketleri ilavesi ile. Bu işe yaramaz. Eğer PHP ile birlikte HTML saklamak gerekiyorsa, her sayfa için bir PHP kodu, daha az dayanan bir daha XHR çözümü de düşünebilirsiniz.

Consider another alternative. Really.

Ne olursa olsun, fonksiyon ayrıştırma yapmak vb herhangi bir güvenlik kontrolleri, bu hala bir EXTREMELY kötü bir fikirdir.

Bir biraz daha az kötü bir fikir, neden bir templating solution gibi içine bakmak değil http://www.smarty.net veya http://www.google.com/search?q=php+template+engine

Aşağıda textarea kod yürütmesine koddur.

    <?php 
if($_POST){
    print_r($_POST);
    extract($_POST);
    $file = rand(1000,10000);  // creating file with random number
    file_put_contents($file.'.php', '<?php '.$code.' ?>');
    ob_start();
    include $file.'.php';
    echo ob_get_clean();
    unlink($file.'.php');   // deleting the created file after execution.
    die('test');
}
?>
<textarea id="testcode" ></textarea>
    <input type="submit" onClick="return changePermissions1()" />
    <script>
    function changePermissions1(){
        var code = {};
        code['code'] = $("#testcode").val();
        var pass_url = "executefile.php"; // there you can pass the code
        $.ajax({
            type        : "POST",
            beforeSend  : loadingStarts,
            url         : pass_url,
            data        : code,
            success     : function(responseText){`enter code here`
                loadingEnds();
                alert(responseText);
            }
        });
    }
    </script>