2012-04-20 25 views
0

我有以下PHP函數獲取當前URL:分享至Facebook和高音單元后的問題與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

但是,當我試圖將當前URL分享給Facebook或Twitter時,page被切斷,所以共享URL總是l ooks like http://mydomain.com/index.php?menu=13

我該如何處理這個問題?

回答

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); 
} 
+0

我非常感謝你的解決方案:) – user1292810 2012-04-20 12:25:38

0

我認爲這個問題是,在Facebook的分享按鈕你有「& T =」的網址後,可能獲得url錯誤切斷,因爲&頁=可以混淆它。所以我說你試圖這樣做:

<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> 

我不確定應該工作的微博。

+0

這裏的問題是'&page ='進入'sharer.php'而不是給定的url。這就是爲什麼他需要使用'urlencode'來逃避他的網址。 – j0k 2012-04-20 12:16:30

+0

@ j0k是的,我同意,但我相信它的工作方式,我也說。 urlencode似乎解決了這個問題,而沒有改變參數的位置。 – 2012-04-20 12:23:22