如何通过PHP获取页面正文中的URL参数?

如何通过PHP获取页面正文中的URL参数?,php,drupal,Php,Drupal,在Drupal站点上,启用了页面正文内容的PHP代码。如何在PHP代码中获取参数及其值?例如,我想从以下位置获取ref和33002: http://example.com/node/1?ref=33002 在以下代码中: <?php print arg(0); print arg(1); print arg(2); print arg(3); ?> 我可以获得节点和1,但是关于ref或33002的内容没有 谢谢 使用以下命令: <?php $a=$_R

在Drupal站点上,启用了页面正文内容的PHP代码。如何在PHP代码中获取参数及其值?例如,我想从以下位置获取
ref
33002

http://example.com/node/1?ref=33002
在以下代码中:

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

我可以获得
节点
1
,但是关于
ref
33002
的内容没有

谢谢

使用以下命令:

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


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

http://example.com/node/1/33002
现在可以使用arg()函数访问ref值:

$ref = arg(2);
当然,只有当ref值始终是第三个参数时,这样的方法才能起作用

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

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

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

您可以使用以下方法:

$params = drupal_get_query_parameters();

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

这是可行的,但我不建议在Drupal环境中使用它。请参阅我的答案。如果您使用的是PHP5.2+,请不要使用$\u GET、$\u POST或$\u REQUEST。使用filter_input()。我发布了一个后续问题:只有在事先知道参数顺序的情况下才使用这个选项。