如何在Facebook Sharer中处理GET参数

问题描述 投票:0回答:3

我正在尝试使用其简单的Sharer在Facebook上共享链接。我以这种方式传递一些参数:

title="Share this article/post/whatever on Facebook"    
href="http://www.facebook.com/sharer.php?
s=100
&p[url]=http://www.mypage.com/index.php?firstID=1&secondID=2
//etc.

但是它仅部分起作用,因为它只使用第一个ID,而不使用第二个。我的猜测是,Facebook认为secondID是它自己的,但它不能使用它并丢弃该参数。关于如何逃脱它们的任何猜测吗?

facebook facebook-sharer
3个回答
1
投票
[使用sharer.php共享页面时,您应该对URL进行编码,以便以适当的方式使用该URL,否则它可能会将secondID之类的参数作为其自己的参数,并且会错误地呈现URL。

1
投票
在共享网址上使用PHP的rawurlencode()

title="Share this article/post/whatever on Facebook" href="http://www.facebook.com/sharer.php? s=100 &p[url]=<?=rawurlencode('http://www.mypage.com/index.php?firstID=1&secondID=2')?>


0
投票
找到了可行的解决方案。 Facebook不直接接受您本地页面中带有参数的URL。它会在过程中剥离它们。如果使用PHP编写自己的代码,则可以通过对参数进行编码,然后将此编码后的字符串附加到页面URL的末尾来解决此问题。

[如果您正在使用简码来填充页面,那么这也适用于WordPress环境。

我想出的代码段是这个:

// When generating a URL for display, encode the parameters within the standard URL $PageURL = "https://yourdomain/page"; $EncodedParams = urlencode('param1='.<YOUR VALUE> . '&param1='.<YOUR VALUE>); $URLPath = $PageURL . '?' . $EncodedParams . '#';

现在在相关页面上

// This find the page you are currently displaying $protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://"; $url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // Retrieve the parameters from the URL $EncodedParams = substr($url, strrpos($url, '?' )+1); $DecodeParams = urldecode ($EncodedParams); $Params = explode('&', $DecodeParams); $temp = explode('param1=', $Params[0]); $Param1 = $temp[1]; $temp = explode('param2=', $Params[1]); $Param2 = $temp[1];

Param1和Param2现在可以在代码中使用以进行进一步定义。诀窍全在于编码。
© www.soinside.com 2019 - 2024. All rights reserved.