我正在使用wordpress网站,该网站有数千页,所有者通过名为“afflink”的自定义字段为每个页面输入了会员链接
会员链接在页面上输出:
<?php echo get_post_meta(get_the_ID(), 'afflink', true) ?>
用户单击将其发送到名为go.php
的页面的链接链接如下所示:
www.mysite.com/go/go.php?url=http://www.somesite.com/redirector.aspx?aid=334&cid=2502&tid=3
在go.php页面中有以下元刷新标记:
<meta http-equiv="refresh" content="5;<?php echo $_GET['url']?>
“/&gt;
但是,当页面刷新时,它会将我们发送到:
http://www.somesite.com/redirector.aspx?aid=334
我该如何解决这个问题?
答案 0 :(得分:1)
在打印链接给用户之前,您应该使用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>';
[+]
我强烈建议编写一些脚本,用适当的脚本更改现有的条目。如果所有这些都以www.mysite.com/go/go.php?url=
开头,那么您可以将其替换为数据库中的任何内容,将此部分添加到元标记并从db回显urlencoded链接。
任何其他解决方案都只是一个问题。其中一个是从go.php中的其余GET参数重新创建原始URL:
$url = $_GET['url'];
unset($_GET['url']);
if ($_GET) {
$url .= '&' . http_build_query($_GET);
}
答案 1 :(得分:0)
您滥用网址。
您的网址解析如下:
go/go.php
?
url=http://www.somesite.com/redirector.aspx?aid=334
&
cid=2502
&
tid=3
相反,您需要对内部URL进行URL参数编码。
答案 2 :(得分:0)
无需对GET或REQUEST变量进行urldecode,它们会自动解码: