2011-12-24 173 views
5

我無法正確編碼URL數據。使用下面的代碼:Drupal網址編碼

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

,但是,在我的瀏覽器測試出現的網址是:

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

我想到了用drupal_urlencode功能應該可以解決這個問題的編碼。 任何人都可以建議一種方法來解決這個問題嗎?

回答

3

你會更好使用內置的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);  
+0

這並不完全正確的,因爲['drupal_goto()'](http://api.drupal.org/api/drupal/包括 - common.inc/function/drupal_goto/6)在傳入的參數中使用'url()'函數本身。正確的方法是將查詢參數數組作爲第二個參數傳遞給'drupal_goto()'。 – 2011-12-26 10:34:53

2

在Drupal 6這樣做的最簡單的方法是:

drupal_goto("user/register","destination=/node/1"); 
0

從克里夫下面的代碼爲我工作..

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

drupal_goto($redirect);