【问题标题】: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 );
      

      【讨论】:

        猜你喜欢
        • 2023-03-20
        • 1970-01-01
        • 1970-01-01
        • 2020-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        相关资源
        最近更新 更多