Facebook Share&有关URL的Tweeter帖子问题

时间:2012-04-20 12:08:00

标签: php facebook twitter

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

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>

如果我使用<?php echo getCurrentUrl(); ?>回显网址,则会返回正确的结果:http://mydomain.com/index.php?menu=13&page=7

但是当我尝试将当前网址分享到Facebook或Twitter时,page会被切断,因此共享网址似乎总是http://mydomain.com/index.php?menu=13

我该如何处理这个问题?

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:0)

我认为问题在于,在Facebook分享按钮中,您在网址后面有“&amp; t =”,这可能会导致网址错误并被切断,因为&amp; 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>

我不确定推特应该有用。