我试图将this转换为Drupal模块,以便我可以立即在我的网站上检查PHP代码以进行调试。我看到这个Firefox添加允许你动态执行PHP但管理员登录是必要的,到目前为止我做了一切,有一个表单并设置ajax调用,但如果我传递一个字符串,如:
preg_match($pat,$str,$matches);
print_r($matches);
如何在后端执行此操作?
修改
要加载表单:
$items['localphp'] = array(
'page callback' => 'executePHP',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
function executePHP(){
$output = drupal_get_form('executePHP_form');
return $output;
}
Ajax回调函数:
$items['runPHP'] = array(
'page callback' => 'getResult',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
function getResult(){
$code = $_POST['code'];
//I need help here how to execute $code i.e the php code and return back result
echo $code;
}
JS功能
function executePHP(baseurl){
var code = $("#edit-code").val();
$.ajax({
type : "POST",
url : baseurl+'runPHP',
data : 'code='+code,
async : true,
cache : false,
success : function (res) {
$("#edit-result").html(res);
},
error : function (res) {
alert("error");
}
});
return false;
}
答案 0 :(得分:1)
仅供参考,Devel module具有允许管理员从其页面运行自定义PHP代码的功能。 Devel模块有一个块,有很多用于调试的功能。
对于自定义模块,没有看到任何其他代码,我可以告诉你我在Drupal模块中实现AJAX所做的工作:
在JavaScript中向您网站上的网址发出AJAX请求。添加一个菜单项,其中hook_menu()
内的指定路径为'type' => MENU_CALLBACK
,指向模块中的某个功能。此函数应该执行您需要的所有处理,然后将结果返回到JavaScript,以便在那里执行所需的操作。