0

我正在一个有数千页的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']?>

" />

但是,当页面刷新时,它会将我们发送到:

http://www.somesite.com/redirector.aspx?aid=334

我怎样才能解决这个问题?

4

3 回答 3

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);
}
于 2013-05-12T13:39:55.490 回答
0

您在滥用 URL。

您的 URL 解析如下:

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

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

于 2013-05-12T13:35:20.317 回答
0

无需对 GET 或 REQUEST 变量进行 urldecode,它们会自动解码:

http://php.net/manual/en/function.urldecode.php

于 2013-05-12T13:37:24.113 回答