通过drupal模块中的Ajax调用执行PHP代码
我试图转换成Drupal模块,这样我就可以立即在我的站点上检查PHP代码以进行调试。我看到了这个Firefox插件,它允许您动态执行PHP,但需要管理员登录。到目前为止,我做了所有事情,使用一个表单并设置ajax调用,但是如果我传递一个字符串,如:通过drupal模块中的Ajax调用执行PHP代码,php,drupal,drupal-6,drupal-modules,Php,Drupal,Drupal 6,Drupal Modules,我试图转换成Drupal模块,这样我就可以立即在我的站点上检查PHP代码以进行调试。我看到了这个Firefox插件,它允许您动态执行PHP,但需要管理员登录。到目前为止,我做了所有事情,使用一个表单并设置ajax调用,但是如果我传递一个字符串,如: preg_match($pat,$str,$matches); print_r($matches); 如何在后端执行此操作 编辑 要加载表单,请执行以下操作: $items['localphp'] = array( 'page callback
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;
}
仅供参考,具有允许管理员从其页面运行自定义PHP代码的功能。Devel模块有一个块,其中包含大量用于调试的功能
对于自定义模块,在没有看到任何其他代码的情况下,我可以告诉您我在Drupal模块中实现AJAX的方法:
在JavaScript中,向站点上的url发出AJAX请求。在
hook_menu()
中添加一个具有指定路径的菜单项,作为指向模块中函数的'type'=>菜单回调。这个函数应该完成您需要的所有处理,然后将结果返回到JavaScript,以便在那里执行您想要的操作。devel不是ajax我想我早就忘记了,我将研究一下这一点以获得想法,我已经设置了ajax,正如我所提到的,我遇到的问题是这样的,我正在将php代码添加到ajax函数中,然后如何继续?如何像前面提到的那样执行php代码并返回结果?展示您是如何执行AJAX的,而不仅仅是您想要执行的php。我明天早上就能看了,可能会提供一个我用过的例子。没关系,我想eval()就是我要找的。啊,是的,很高兴你找到了它