在drupal模块中通过Ajax调用执行PHP代码

时间:2011-06-29 13:28:11

标签: php drupal drupal-6 drupal-modules

我试图将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;
}

1 个答案:

答案 0 :(得分:1)

仅供参考,Devel module具有允许管理员从其页面运行自定义PHP代码的功能。 Devel模块有一个块,有很多用于调试的功能。

对于自定义模块,没有看到任何其他代码,我可以告诉你我在Drupal模块中实现AJAX所做的工作:

在JavaScript中向您网站上的网址发出AJAX请求。添加一个菜单项,其中hook_menu()内的指定路径为'type' => MENU_CALLBACK,指向模块中的某个功能。此函数应该执行您需要的所有处理,然后将结果返回到JavaScript,以便在那里执行所需的操作。