我正在尝试使用简单的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.
但它只是部分工作,因为它只采用firstID而不是第二种。
我的猜测是Facebook认为secondID是它自己的,但它不能使用它而且它丢弃了参数
我猜怎么逃脱它们?
答案 0 :(得分:1)
使用sharer.php
分享页面时,您应该对URL进行编码,以便它以适当的方式使用它,否则它可能会将secondID
等参数作为自己的参数进行编码错误地渲染URL。
答案 1 :(得分: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')?>
答案 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> . '¶m1='.<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进行进一步定义。诀窍全在于编码。