0

我正在尝试使用其简单的共享器在 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 是它自己的,但它不能使用它并且它丢弃了参数。
猜猜我怎么能逃脱他们?

4

3 回答 3

1

使用sharer.php共享页面时,您应该对 URL 进行编码,以便它以适当的方式使用它,否则它可能会将像您这样的参数secondID作为自己的参数,并且会错误地呈现 URL。

于 2013-06-06T08:50:39.967 回答
1

rawurlencode()在共享 url 上使用 PHP :

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')?>
于 2015-01-23T19:55:18.600 回答
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 进行进一步定义。诀窍在于编码。

于 2019-11-09T19:57:46.107 回答