【问题标题】:Tumblr share button not working with PHP CodeigniterTumblr 分享按钮不适用于 PHP Codeigniter
【发布时间】:2016-08-05 06:17:15
【问题描述】:

我正在尝试在我的网站上实现分享按钮,但是当我使用 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 时出现此问题

为什么这不起作用?

【问题讨论】:

  • html 源码中渲染的输出是什么?
  • 这是使用 PHP 在浏览器中呈现的方式:http://www.tumblr.com/share/link?url=http%3A%2F%2Fdomain%2Fimage%2F98&amp;name=test&amp;description=test
  • 为什么在你的工作示例中,你的 url 是 share/photo? 而非工作的是 share/link?
  • 这是一个错误。我会改正的。

标签: php codeigniter-3


【解决方案1】:

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

旁注:除非您尝试为domain.com 做广告,否则我鼓励您使用非商业实体,例如example.com

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

在我的测试中也值得注意 - 我不是代码点火器的粉丝,所以也许我跳过了配置设置 - current_url() 函数返回我的 IP,而不是主机名。这实际上不是问题,因为 tumblr 也会接受有效的可访问 IP 地址,但这可能是不可取的。因此,如果您遇到这种情况,我只需在 this guide 的帮助下重建整个 URL,并在 this post 的帮助下获得正确的协议:

<?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,注意底部的小“分享到 tumblr”链接。完整的源代码是here

【讨论】:

  • 谢谢。 current_url() 为我返回当前页面的 url。在看到您的答案和更多研究之后,我认为归结为它在本地发展中不起作用。准备好后,我会在生产环境中尝试。
猜你喜欢
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多