Php urlencode并在Ampersand处获取请求中断

Php urlencode并在Ampersand处获取请求中断,php,wordpress,get,urlencode,Php,Wordpress,Get,Urlencode,我在一个wordpress网站上工作,该网站有数千个页面,所有者通过名为:afflink的自定义字段为每个页面输入一个附属链接 关联链接通过以下方式在页面上输出: <?php echo get_post_meta(get_the_ID(), 'afflink', true) ?> 在go.php页面中有以下元刷新标记: <meta http-equiv="refresh" content="5;<?php echo $_GET['url']?> 如何修复此问题?

我在一个wordpress网站上工作,该网站有数千个页面,所有者通过名为:afflink的自定义字段为每个页面输入一个附属链接

关联链接通过以下方式在页面上输出:

<?php echo get_post_meta(get_the_ID(), 'afflink', true) ?>
在go.php页面中有以下元刷新标记:

<meta http-equiv="refresh" content="5;<?php echo $_GET['url']?>
如何修复此问题?

您误用了URL

您的URL解析如下:

www.mysite.com/go/go.php?url=http://www.somesite.com/redirector.aspx?aid=334&cid=2502&tid=3
  • 路径:
    go/go.php
  • 第一个查询字符串参数:
    url=http://www.somesite.com/redirector.aspx?aid=334
  • &
  • 第二个查询字符串参数:
    cid=2502
  • &
  • 第三个查询字符串参数:
    tid=3

相反,您需要对内部URL进行URL参数编码。

无需对GET或请求变量进行URL解码,它们会自动解码:


在向用户打印链接之前,而不是在用户单击链接之后,应使用
urlencode

$link = "http://www.somesite.com/redirector.aspx?aid=334&cid=2502&tid=3";
echo '<a href="http://www.mysite.com/go/go.php?url='.urlencode($link).'">' . $link . '</a>';

是的,如果我将原始链接直接输入到$link中,这将很好,但是因为我们正在从url参数中检索它,它正在断开ampersand@AlanCarr因此,您无法控制如何生成此链接供用户单击?此链接通过自定义字段添加到Wordpress中。要回显用户单击页面上的链接,我们使用:请用此更新您的问题并添加更多代码-此函数是否仅返回链接(
http://www.somesite...
)或整个html?更新,请检查修改后的问题,应该更清楚
$link = "http://www.somesite.com/redirector.aspx?aid=334&cid=2502&tid=3";
echo '<a href="http://www.mysite.com/go/go.php?url='.urlencode($link).'">' . $link . '</a>';
$url = $_GET['url'];
unset($_GET['url']);
if ($_GET) {
    $url .= '&' . http_build_query($_GET);
}