Tumblr 分享按钮不适用于 PHP Codeigniter

Tumblr share button not working with PHP Codeigniter

我正在尝试在我的网站上实现分享按钮,但是当我使用 php 时它不起作用。但是当我手动输入数据时它确实有效。

例如这个有效:

<a href="http://www.tumblr.com/share/link?url=https%3A%2F%2Fdomain.com&amp;name=test&amp;description=test">Share on Tumblr</a>

但这不是:

<a href="http://www.tumblr.com/share/link?url=<?=urlencode(current_url())?>&amp;name=test&amp;description=test">Share on Tumblr</a>

当我点击使用 PHP 的那个时,我被重定向到:

https://www.tumblr.com/widgets/share/tool/banned?

编辑:我什至尝试这样做:

var tumblr_link_url = '<?=current_url()?>';
var tumblr_link_name = 'test';
var tumblr_link_description = 'test';
var url = "http://www.tumblr.com/share/link?url=" + encodeURIComponent(tumblr_link_url) + "&amp;name=" + encodeURIComponent(tumblr_link_name) + "&amp;description=" + encodeURIComponent(tumblr_link_description);
var tumblr_button = document.createElement("a");
tumblr_button.setAttribute("href", url);
tumblr_button.setAttribute("title", "Share on Tumblr");
tumblr_button.innerHTML = "Share on Tumblr";
document.getElementById("tumblr_button").appendChild(tumblr_button);

但还是不行。肯定和使用PHP有关。我的其他分享按钮可以使用,只有 Tumblr 分享按钮在使用 PHP

时有这个问题

为什么这不起作用?

tumblr 禁止你 post 无效的 url,例如 domain,我假设你已经为这个论坛混淆了。在您的工作示例中,您实际上使用 domain.com 作为示例,这实际上是一个真实的网站,这就是它在 tumblr 上运行的原因。 请注意您损坏的示例中缺少 .com

side note: unless you're trying to advertise for domain.com, I would encourage you to use a non-commercial entity like example.com

我可能错了,但我猜你是在本地开发机器上测试这个,它的当前 url 是 localhost127.0.0.1,或者其他受防火墙保护的主机,它们对 tumblr 也是无效的 URL,因为它们不是世界可访问的。您的代码 应该 在全球可访问的服务器上正常工作。

在我的测试中也值得注意——我不是 code igniter 的粉丝,所以也许我跳过了配置设置——current_url() 函数 returns 我的 IP,而不是主机名.这实际上不是问题,因为 tumblr 也会接受有效的可访问 IP 地址,但这可能是不受欢迎的。因此,如果您遇到这种情况,我只是在 this guide with a little help from this post 之后重建了整个 URL 以使协议正确:

<?php 
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https" : "http";
$host     = $_SERVER['HTTP_HOST'];
$script   = $_SERVER['SCRIPT_NAME'];
$params   = $_SERVER['QUERY_STRING'];
$currentUrl = $protocol . '://' . $host . $script . '?' . $params;
?>
<a href="http://www.tumblr.com/share/link?url=<?=urlencode($currentUrl)?>&amp;name=test&amp;description=test">Share on Tumblr</a>

你可以看到工作示例here, notice the small "share on tumblr" link at the bottom. The full source code for that is here