0

我有以下获取当前 URL 的 PHP 函数:

function getCurrentUrl() {
  $isHTTPS = ( isset($_SERVER["HTTPS"] ) && $_SERVER["HTTPS"]  ==  "on" );
  $port = ( isset($_SERVER["SERVER_PORT"] ) && (( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || ( $isHTTPS && $_SERVER["SERVER_PORT"] != "443" )));
  $port = ($port) ? ':'.$_SERVER["SERVER_PORT"] : '';
  $url = ( $isHTTPS ? 'https://' : 'http://').$_SERVER["SERVER_NAME"].$port.$_SERVER["REQUEST_URI"];
  return $url;
 }

接下来我有以下代码:

<ul>
  <li id="face"><a href="https://www.facebook.com/sharer.php?u=<?php echo getCurrentUrl(); ?>&t=<?php echo $title; ?>" class="popup" title="Facebook">Share</a></li>
  <li id="tweet"><a href="http://twitter.com/home?status=<?php echo getCurrentUrl(); ?>" class="popup" title="Tweeter">Tweet</a></li>
</ul>

如果我回显 URL 并<?php echo getCurrentUrl(); ?>返回正确的结果:http://mydomain.com/index.php?menu=13&page=7

但是当我试图将当前 URL 分享到 Facebook 或 Twitter 时,page被切断了,所以共享的 URL 总是看起来像http://mydomain.com/index.php?menu=13

我该如何处理这个问题?

4

2 回答 2

0

您是否尝试过对您的网址进行urlencode 编码?

function getCurrentUrl()
{
  $isHTTPS = ( isset($_SERVER["HTTPS"] ) && $_SERVER["HTTPS"]  ==  "on" );
  $port = ( isset($_SERVER["SERVER_PORT"] ) && (( !$isHTTPS && $_SERVER["SERVER_PORT"] != "80" ) || ( $isHTTPS && $_SERVER["SERVER_PORT"] != "443" )));
  $port = ($port) ? ':'.$_SERVER["SERVER_PORT"] : '';
  $url = ( $isHTTPS ? 'https://' : 'http://').$_SERVER["SERVER_NAME"].$port.$_SERVER["REQUEST_URI"];

  return urlencode($url);
}
于 2012-04-20T12:10:54.557 回答
0

我认为问题在于,在 facebook 分享按钮中,您在 url 之后有“&t=”,这可能会导致 url 错误并被切断,因为 &page= 可能会让人感到困惑。所以我说你试着这样做:

<ul>
 <li id="face"><a href="https://www.facebook.com/sharer.php?t=<?php echo $title; ?>&u=<?php echo getCurrentUrl(); ?>" class="popup" title="Facebook">Share</a></li>
 <li id="tweet"><a href="http://twitter.com/home?status=<?php echo getCurrentUrl(); ?>" class="popup" title="Tweeter">Tweet</a></li>
</ul>

我不确定应该可以使用的推特。

于 2012-04-20T12:13:34.573 回答