【问题标题】:facebook og:image does not fetch image from php file that echoes the URLfacebook og:image 不会从与 URL 相呼应的 php 文件中获取图像
【发布时间】:2017-05-25 20:39:01
【问题描述】:

facebook OG 从回显的 URL 获取图像,这可能吗?

因为我包含了一个会回显图像 URL 的 php 文件,但是当我签入共享调试器时,内容为空

<meta property="og:image" content="" />

我的元标记

<meta property="og:image" content ="<?php include "meta_gambar.php"?>">

和 php 文件:

<?php
 $module=$_GET['module'];
 $id=$_GET['id'];
 if($module=='detailproduk'){
   //prepare query
   $stmt=mysqli_prepare($con,"SELECT gambar FROM produk WHERE id_produk=?");
    if($stmt===false){
       die("Prepare error" . htmlspecialchars($mysqli->error));
    }
    //Bind parameters
    $bp=mysqli_stmt_bind_param($stmt,"i",$id);
     if($bp===false){
        die("Binding error" . htmlspecialchars($stmt->error));
    }
     //Execute query
     $bp=mysqli_stmt_execute($stmt);
     if($bp===false){
         die("Execute error" . htmlspecialchars($stmt->error));
     }
     //bind result
     $bp=mysqli_stmt_bind_result($stmt,$gambar);
      if($bp===false){
          die("Result bind error" . htmlspecialchars($stmt->error));
      }
     //Fetch
      $bp=mysqli_stmt_fetch($stmt);
       if($bp===false){
           die("Fetching error" .htmlspecialchars($stmt->error));
      }
    $image = "http://images.rajafotocopy.com/foto_produk/$gambar";
   }else{
      $image = "http://images.rajafotocopy.com/raja.png";
 }
   echo"$image";
?>

更新

我刚刚尝试将直接 URL 图像放到 og:image content 并且它可以工作

但包含一个将回显 URL 的 php 文件仍会导致空白

【问题讨论】:

  • 所以我的代码应该可以工作....但是为什么会发生这种情况?
  • 我有,结果是这样的&lt;meta property="og:image" content="" /&gt;
  • 不过,您的代码存在问题。您对SQL Injections 持开放态度,应该真正使用Prepared Statements 而不是连接您的查询。特别是因为你甚至没有逃避你的输入。
  • 另一件事,您的 SQL 代码不处理错误,而是抑制它们(在调试时这是一件坏事,就像现在一样)。而是正确处理它们(阅读手册)。如果您的查询没有返回任何结果,那么您的代码将会中断,因为您无论如何都在尝试使用结果。如果您的 if-statement 未计算,您仍在尝试回显未定义的变量。
  • 我认为准备好的语句应该用于用户输入而不是选择查询来获取图像?

标签: php facebook-opengraph


【解决方案1】:

听起来当前路径不是包含文件所在的位置。尝试指定包含文件的完整路径,例如:

include $_SERVER['DOCUMENT_ROOT'] . "/path/to/meta_gambar.php";

另一种选择是使用require 而不是include - 如果文件或路径有问题,require 将生成错误并为您提供一些关于问题所在的想法。

【讨论】:

  • 不是这样的。我使用 og:description 生成另一个 php 文件的描述,这个 php 文件位于与 meta_gambar.php 相同的路径中。 og:description 中的文件回显了一个字符串,然后 opengraph 得到它。但是 og:image 中的文件回显了图像的 URL,而 opengraph 没有得到它,内容留空。我还尝试了 og:url 只是为了通过使用h t t p ://$_SERVER['HTTP_HOST'] 回显变量来确认我对“它无法获得回显 URL”的怀疑,仅此而已。内容为空白。 OG 无法从 PHP 文件中的变量获取回显 URL
  • 但它可以从 php 文件的变量中获取回显字符串
  • 好的。但不要让您的问题复杂化——Facebook 的调试器与此无关。它只是解析你给它的html。如果它失败了,你给它的 HTML 不好。 meta_gambar.php 没有回显字符串,或者包含有问题。主页的 og 标签是什么样的(我的意思是视图->来自浏览器的源代码)?
  • 这是我从共享调试器和对象调试器&lt;meta property="og:image" content="" /&gt; 中得到的。这也是我从浏览器的视图源中得到的。这是为什么?为什么它不能回显 URL?我运行了脚本,它很好地回显了 URL
  • 不要使用 Facebook 调试器,只查看本地文件的源代码。删除meta_gambar.php中的所有代码,只添加1行:echo "http://images.rajafotocopy.com/raja.png";。现在主文件中的源代码是什么样的?
猜你喜欢
  • 2012-05-07
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
  • 2021-08-24
  • 2015-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多