2011-12-24 40 views
5

Tôi gặp sự cố khi mã hóa dữ liệu URL đúng cách. Sử dụng đoạn mã sau:Mã hóa url Drupal

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

nhưng, URL mà đi lên trong thử nghiệm trình duyệt của tôi như sau:

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

Tôi nghĩ sử dụng chức năng drupal_urlencode nên khắc phục vấn đề này mã hóa. Có ai đề nghị cách sửa lỗi này không?

Trả lời

3

Bạn muốn được tốt hơn bằng cách sử dụng được xây dựng trong url() chức năng để tạo URL của bạn, nếu bạn vượt qua một mảng làm tham số query nó xử lý mã hóa URL cho bạn:

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

drupal_goto($redirect); 

drupal_encode() sẽ mã hóa toàn bộ chuỗi mà bạn vượt qua nó, vì vậy nếu bạn muốn làm theo cách ban đầu của bạn nó sẽ trông như thế này:

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

Đây không phải là hoàn toàn đúng, như [ 'drupal_goto()'] (http://api.drupal.org/api/drupal/ include--common.inc/function/drupal_goto/6) sử dụng hàm 'url()' trên các tham số được truyền vào. Cách đúng là chuyển mảng tham số truy vấn như tham số thứ hai vào 'drupal_goto()'. –

2

cách đơn giản nhất để làm điều này trong Drupal 6 là:

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

Mã dưới đây từ Clive làm việc cho tôi ..

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

drupal_goto($redirect);