2014-04-02 22 views
1

我目前正在使用自定義的CMS,並且希望管理員能夠在公共區域編輯php文件和樣式表。我沒有遇到文件問題,並且根據我的發現,嘗試了幾個基於谷歌搜索和我的搜索這個網站的想法。這裏就是我至今:使PHP代碼可以在textarea內編輯

獲取文件:

<?php 
    $dir = "./"; 
    function get_files($directory = "") { 
    $dir = $directory; 
    if(is_dir($dir)) { 
      $dir_array = scandir($dir); 
     $filtered = array(); 
     foreach($dir_array as $file) : 
     if(stripos($file, '.') > 0) 
       array_push($filtered, $file); 
     endforeach; 
     return $filtered; 
    } else { 
     //Do something else 
      } 
    } 

使用jQuery輸出的文本區域內的每個文件的內容:

$(document).ready(function() { 
    $('.file').each(function(){ 
    var file_link = this; 
    var HTML_FILE_URL = './' + file_link.id; 
    var file_id = file_link.id; 
    $(file_link).bind('click', function(){ 
     $('#filename').text(" - " + file_id); 
    $.get(HTML_FILE_URL, function(data){ 
       var htmlData = htmlEntities(data); 
     $('textarea').text(htmlData); 
     }); 
    }); 
    }); 
}); 


function htmlEntities(str) { 
    //This is a function which I found on this site. 
    //It gave me a good result on the html part 
    //However, the PHP codes were already executed. 
} 

我將非常感激,如果任何人們可以指出我的方向是正確的。有什麼特別的PHP方法可以完全忽略嗎?有沒有我可以參考的解決方案?

謝謝。

+0

從安全的角度來看,我不會從CMS允許編輯PHP文件的範圍,這可能是危險的。 –

+1

無論你是否得到它的工作,我覺得指出這是一個非常糟糕的主意很重要。允許網站管理員輸入任意的PHP代碼是關於您可以將其放入系統的最大安全風險。即使這些管理員都是可信的(他們是誰?),並且您的密碼存儲系統是完全安全的(它是否確實?您確定嗎?),攻擊者仍然可以通過多種方式使用此功能來危害您的系統。 – Spudley

+0

不要讓任何人寫'<?php rmdir ||取消鏈接||無論什麼'進入你的應用程序,請。不過,如果你想讓人們混淆你的代碼和樣式,只需授予他們FTP訪問權限即可。 – moonwave99

回答

1

你不能直接從PHP文件通過JavaScript加載源代碼 - 因爲你發現PHP總是執行。

你需要做的是調用PHP腳本,將加載並返回的源代碼:

//getsource.php 
$editable_files = array('edit1.php', 'mybooks.php'); 

if(isset($_GET['file']) && in_array($_GET['file'], $editable_files)){ 
    echo file_get_contents($_GET['file']); 
} 

那麼你會調用這個文件在你的JS。

正如其他人所說,這可能打開了一些安全漏洞,但是這超出了這個問題

+0

謝謝。我知道我把安全置於危險之中。我肯定會更多地考慮安全方面。但是,現在,使其工作至關重要。 – Elarcrex

+0

@ user3489312當然,我的回答也能幫到你嗎?或者你仍然有問題? – Steve

+0

正在處理它。 :) – Elarcrex

相關問題