我目前正在开发自定义CMS,我希望管理员能够在公共区域编辑php文件和样式表。我没有问题到文件,并根据我的调查结果尝试了几个想法,因为谷歌和我对这个网站的搜索有点彻底。这是我到目前为止的地方:
获取文件:
<?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输出textarea中每个文件的内容:
$(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 :(得分:1)
你不能通过javascript直接从php文件加载源代码 - 因为你发现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中调用这个文件。
正如其他人所提到的,这可能会打开一些安全漏洞,但这超出了这个问题的范围