在PHP中将复杂URL作为参数传递

时间:2011-05-05 12:15:39

标签: php url

我正在尝试将复杂的网址作为网址参数传递,但如果网址包含&例如,我想将以下链接作为参数传递

http://www.google.ps/search?hl=en&client=firefox-a&hs=42F&rls=org.mozilla%3Aen-US%3Aofficial&q=The+type+%27Microsoft.Practices.ObjectBuilder.Locator%27+is+defined+in+an+assembly+that+is+not+referenced.+You+must+add+a+reference+to+assembly+&aq=f&aqi=&aql=&oq=

我正在尝试从用户那里获取一个URL作为参数,并将用户重定向到此URL。

我怎么能在PHP中处理这个?


整个故事:

我正在尝试对Flash文件进行一些广告分析,以便用户将Flash广告提交​​到包含指向所需网页的链接的网站。

现在,我的客户端需要知道这个flash文件被点击了多少次。为了解决这个问题,我将直到每个提交flash的人都写一个链接到我的客户端网页并将所需的URL作为参数传递如下< / p>

http://myclientwebpage.com/disp.php?link=www.google.com&id=16

通过这种方式,我可以更新我的数据库,并计算点击此链接的次数

2 个答案:

答案 0 :(得分:15)

使用urlencode()rawurlencode()


您写道:

  

我正在尝试将URL作为参数   来自用户并将用户重定向到此   URL。

但你没有回答这个问题 - 你如何获得该网址?用户如何为您提供?它是用<input type='text'/>写的吗?或者用户是否点击了包含URL作为参数之一的链接?或者作为存储在DB中的某个URL的ID传递?

我想到的一个案例 - 在打开真实页面之前用纯文本替换URL并将用户发送到某些“重定向页面”,因此最终页面看不到可能包含某些安全数据的HTTP引用者(例如,会话ID) 。在这种情况下,你会写

<a href='redirect.php?link=<?php echo rawurlencode($url); ?>'>
    <?php echo htmlspecialchars($url); ?>
</a>

而不是

<a href='redirect.php?link=<?php echo $url; ?>'>
    <?php echo htmlspecialchars($url); ?>
</a>

答案 1 :(得分:0)

根据我的理解,您需要将&替换为&amp;

$url = str_replace('&', '&amp;', $url);
保留

&,用于分隔GET参数,&amp;用于在URL中编写文字&符号。