【问题标题】:Drupal url encodingDrupal 网址编码
【发布时间】:2011-12-24 15:18:28
【问题描述】:
我无法正确编码 URL 数据。使用以下代码:
$redirect = drupal_urlencode("user/register?destination=/node/1");
drupal_goto( $redirect );
但是,在我的浏览器测试中出现的 URL 如下:
http://testsite.com/user/register%253Fdestination%253D/node/1
我认为使用 drupal_urlencode 函数应该可以解决这个编码问题。
请问有人可以提出解决这个问题的方法吗?
【问题讨论】:
标签:
drupal
drupal-6
urlencode
【解决方案1】:
你最好使用内置的url() 函数来创建你的URL,如果你传递一个数组作为query 参数它会为你处理URL 编码:
$options = array(
'absolute' => TRUE,
'query' => array('destination' => '/node/1')
);
$redirect = url('user/register', $options);
drupal_goto( $redirect );
drupal_encode() 将对你传递给它的整个字符串进行编码,所以如果你想按照你原来的方式进行编码,它看起来像这样:
$redirect = 'user/register?' . drupal_urlencode("destination=/node/1");
drupal_goto( $redirect );
【讨论】:
-
这并不完全正确,因为drupal_goto() 在传入的参数上使用了url() 函数本身。正确的方法是将查询参数数组作为第二个参数传递给drupal_goto()。
【解决方案2】:
在 Drupal 6 中执行此操作的最简单方法是:
drupal_goto("user/register","destination=/node/1");
【解决方案3】:
来自 Clive 的以下代码对我有用..
$options = array(
'absolute' => TRUE,
'query' => array('destination' => '/node/1')
);
$redirect = url('user/register', $options);
drupal_goto( $redirect );