2013-03-06 38 views
8

Tôi đang gặp một số sự cố khi chuyển URL dưới dạng tham số GET. Khi tôi cố gắng truy cập:Làm cách nào để chuyển URL trong URL (như tham số GET) bằng cách sử dụng PHP?

http://www.linkebuy.com.br/linkebuy/parceiro?url=http%3A%2F%2Fwww.google.com

tôi nhận được thông báo sau:

Unexpected error.

Tuy nhiên, nếu tôi đi cho:

http://www.linkebuy.com.br/linkebuy/parceiro?url=123

Tất cả mọi thứ làm việc tốt (nó chuyển hướng đến một trang web không tồn tại - 123 -, tất nhiên, nhưng nó không mong đợi). Bằng cách loại bỏ tôi có thể nói có gì đó sai với tham số url, nhưng nó là gì?

OBS: Tôi đang sử dụng rawurlencode() để mã hóa URL.

EDIT:Mã bạn hỏi ...

Trong giao diện đầu tiên, nơi liên kết là (http://www.linkebuy.com.br/notebook/detalhe?id=5):

<!-- url() function just completes the right URL (production or development) --> 
<a href="<?php echo url('linkebuy/parceiro/?url=' . rawurlencode($l->getUrl()), true) ?>" class="<?php echo $leadClass ?> oferta" target="_blank"> 
    <?php echo $l->getNomeFantasia() ?> 
</a> 

Khi nhấp vào liên kết chuyển hướng đến một hành động (/linkebuy/parceiro), nơi xảy ra sau (cơ bản là không có gì, chỉ cần giữ trong khuôn khổ):

public function execute($request, $response) { 
    $response->addParameter('url', rawurldecode($request->getParameter('url', ''))); //This creates $url in the view 
    $response->setTemplate('site/linkebuy/lead-parceiro.php'); //Forwards to the view 
} 

Nó bao gồm các quan điểm, lead-parceiro.php (ở trên về vấn đề, tôi liên kết đến trang này), nơi người đứng đầu bao gồm:

<script type="text/javascript"> 
    setInterval(function(){ window.location = '<?php echo $url ?>'; },3000); 
</script> 
+0

Sử dụng đơn giản 'urlencode() 'và cho chúng tôi biết nếu mà làm cho bất kỳ sự khác biệt. –

+0

Không có sự khác biệt nào cả. – ramonztro

+2

Sự cố trong hàm chuyển hướng của bạn .... hiển thị cho chúng tôi mã;) – Hackerman

Trả lời

6

Nếu bạn không thể thoát khỏi những hạn chế, bạn có thể vượt qua các url trong 2 các bộ phận như thế này

http://www.linkebuy.com.br/linkebuy/parceiro?protocol=http&url=www.google.com 

Sau đó phân tích cú pháp trên mã của bạn để tạo url đầy đủ cho chuyển hướng.

+0

YEAH! Bạn đúng! Làm thế nào tôi có thể sửa lỗi này? Tôi có nghĩa là, sửa chữa cấu hình apache. – ramonztro

+0

Tôi không chắc chắn, điều này có lẽ là quy tắc viết lại cheking chuỗi truy vấn của bạn. Nhìn vào các tập tin .htaccess và các tập tin conf apache để tìm nó. – Ateszki

+2

Hãy xem câu trả lời này, vì trang web của bạn ở máy chủ lưu trữ, câu trả lời được chấp nhận phải có liên quan http://stackoverflow.com/questions/10992219/http-in-query-string-does-not-work – Ateszki

4

Bạn nên sử dụng urlencode khi bạn vượt qua bất cứ điều gì như tham số URL

Các vấn đề liên quan