11

URL を GET パラメータとして渡す際に問題が発生しています。アクセスしようとすると:

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

次のメッセージが表示されます。

予期しないエラー。

ただし、次の場合:

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

すべてが正常に機能します (もちろん、存在しないサイト (123) にリダイレクトされますが、期待どおりの動作をします)。url除外すると、パラメーターに何か問題があると言えますが、それは何ですか?

OBS:rawurlencode() URL のエンコードに使用しています。

編集: あなたが尋ねたコード...

リンクがある最初のビュー ( 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>

リンクをクリックすると、アクション ( /linkebuy/parceiro) にリダイレクトされ、そこで次のことが起こります (基本的には何もせず、フレームワークに保持するだけです)。

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
}

これには、ヘッドに含まれるビューが含まれていますlead-parceiro.php(上記の質問、このページにリンクしています)。

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

2 に答える 2

7

制限を取り除くことができない場合は、このように 2 つの部分に分けて URL を渡すことができます

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

次に、コードでそれを解析して、リダイレクトの完全な URL を作成します。

于 2013-03-06T18:07:17.393 に答える
5

urlencodeURLパラメーターとして何かを渡すときに使用する必要があります

于 2013-03-06T18:17:00.473 に答える