【问题标题】:How to get URL argument in Page body by PHP?如何通过 PHP 在页面正文中获取 URL 参数?
【发布时间】:2011-01-20 08:07:32
【问题描述】:

在 Drupal 网站上,为页面正文内容启用了 PHP 代码。如何在 PHP 代码中获取参数及其值?例如,我想从以下地址获取ref33002

http://example.com/node/1?ref=33002

在以下代码中:

<?php 
  print arg(0);
  print arg(1);
  print arg(2);
  print arg(3);
?>

我可以得到node1,但没有ref33002

谢谢!

【问题讨论】:

    标签: php drupal


    【解决方案1】:

    你可以使用drupal_get_query_parameters()如下:

    $params = drupal_get_query_parameters();
    
    if (isset($params['ref']) && is_numeric($params['ref'])) {
      var_dump(check_plain($params['ref']));
    }
    

    【讨论】:

      【解决方案2】:

      使用这个:

      <?php
      $a=$_REQUEST['ref'];
      echo "The value of the ref parameter is ".$a;
      ?>
      

      【讨论】:

      • 这行得通,但我不建议在 Drupal 环境中使用它。看我的回答。
      • 如果您使用的是 PHP 5.2+,请不要使用 $_GET、$_POST 或 $_REQUEST。使用 filter_input() php.net/manual/en/function.filter-input.php.
      【解决方案3】:

      crowicked 的解决方案可行,但“Drupal 方式”是将 ref 值作为 url 参数传递,即:

      http://example.com/node/1/33002
      

      现在您可以使用 arg() 函数访问 ref 值:

      $ref = arg(2);
      

      当然,这样的方法只有在 ref 值始终是第三个参数时才有效。

      即使上面的代码有效,也不建议将 php 脚本放置在节点主体中。它使您的网站更难维护和调试。总有一天,编辑器会意外删除您的 php 节点,从而破坏您的网站。

      如果您有一个要运行的 php 脚本,最好的方法是向您的站点添加一个简单的自定义模块,该模块实现了 hook_menu。查看Menu Example module 或此hello world module 以了解有关 hook_menu 的更多信息。

      最后,无论您选择哪种方法(php 节点或自定义模块),始终确保清理 url 输入,例如使用 check_plain()

      【讨论】:

      猜你喜欢
      • 2016-08-11
      • 1970-01-01
      • 2015-02-04
      • 1970-01-01
      • 2018-06-12
      • 2015-03-20
      • 2017-09-30
      • 1970-01-01
      • 2012-06-23
      相关资源
      最近更新 更多