Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过drupal模块中的Ajax调用执行PHP代码_Php_Drupal_Drupal 6_Drupal Modules - Fatal编程技术网

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

通过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

我试图转换成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;
}
仅供参考,具有允许管理员从其页面运行自定义PHP代码的功能。Devel模块有一个块,其中包含大量用于调试的功能

对于自定义模块,在没有看到任何其他代码的情况下,我可以告诉您我在Drupal模块中实现AJAX的方法:


在JavaScript中,向站点上的url发出AJAX请求。在
hook_menu()
中添加一个具有指定路径的菜单项,作为指向模块中函数的
'type'=>菜单回调。这个函数应该完成您需要的所有处理,然后将结果返回到JavaScript,以便在那里执行您想要的操作。

devel不是ajax我想我早就忘记了,我将研究一下这一点以获得想法,我已经设置了ajax,正如我所提到的,我遇到的问题是这样的,我正在将php代码添加到ajax函数中,然后如何继续?如何像前面提到的那样执行php代码并返回结果?展示您是如何执行AJAX的,而不仅仅是您想要执行的php。我明天早上就能看了,可能会提供一个我用过的例子。没关系,我想eval()就是我要找的。啊,是的,很高兴你找到了它