Search code examples
drupaldrupal-6urlencode

Drupal url encoding


I am having trouble properly encoding URL data. Using the following code:

$redirect = drupal_urlencode("user/register?destination=/node/1");
drupal_goto( $redirect );

but, the URL that comes up in my browser test is the following:

http://testsite.com/user/register%253Fdestination%253D/node/1

I thought using the drupal_urlencode function should fix this encoding issue. How can I fix it?


Solution

  • You'd be better off using the built in url() function to create your URL, if you pass an array as the query parameter it handles URL encoding for you:

    $options = array(
      'absolute' => TRUE,
      'query' => array('destination' => '/node/1')
    );
    $redirect = url('user/register', $options);
    
    drupal_goto( $redirect );
    

    drupal_encode() will encode the whole string that you pass to it, so if you want to do it your original way it would look like this:

    $redirect = 'user/register?' . drupal_urlencode("destination=/node/1");
    drupal_goto( $redirect );