0

更新:我试图在下面写出的所有数据实际上是在页面加载后在源代码中看到的。当我说它不起作用时,我指的是 Facebook 共享者没有正确拾取 og 标签的事实。

所以我有一个页面,顶部有许多包含,使用会话变量进行一些查询。一切都很好。当我回显它们时,会话变量都会填充到我需要它们的位置。例子:

<title><? echo $_SESSION["clientName"] ?></title>

问题是当我开始将它们写入 og 元数据时。

<meta property="og:description" content="<? echo $_SESSION["clientName"]; ?>"/>

这让我将数据写入标签。我在源代码中看到它,但当共享者被激活时,Facebook 认为它什么都不是。现在,如果我使用任何类型的会话定义了一个来自没有查询的本地 php 变量,那么它在共享器中读取得很好。

$clientName="University of Alaska";    
<meta property="og:description" content="<? echo $clientName; ?>"/>

这让我很困惑!它是否没有及时设置,因为它试图先填充?我的一个包含页面正在做一些繁重的工作。在加载所有内容之前会话是否完全设置?

完整代码

<?
session_start(); 
include '../includes/connection.php';
include '../includes/getMajorExtra.php';
include '../includes/getHiddenList.php';
include '../includes/getMajorList.php';
?>
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<META http-equiv="Content-type" content="IE=edge,chrome=1; charset=iso-8859-1">
<? 
$query = "SELECT clientID,active,customer FROM client WHERE     subdomain='".$_SESSION["clientURL"]."'";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_assoc($result))
{
 $activeClient=$row["active"];
 $clientName=$row["customer"];
 $clientID=$row["clientID"];
}
mysql_free_result($result);
echo "<meta property=\"og:title\" content=\"".$clientName."\">";  
?>
<meta property="og:image" content="http://themajorkey.com/images/MK_logo.png"/>
<meta property="og:description" content="<? echo $_SESSION["clientName"]; ?>"/>
<title><? echo $_SESSION["clientName"]; ?></title>
4

1 回答 1

1

你是如何设置你的 $_SESSION["clientName"] 的?Facebook 会抓取您的链接并缓存链接的元数据。我猜 facebook 无法设置您的会话数据 $_SESSION['clientName']。您是根据用户登录名还是用户操作选择的内容设置会话数据?如果是这种情况,facebook 将无法为您设置。

您可以在生成共享链接时尝试此操作:

您的客户名称共享链接可以是这个

http://yoursite.com/?clientName=<?php echo $_SESSION['clientName'];?>

在您的网站中,您可以执行以下操作:

<meta property="og:description" content="<?php echo $_GET["clientName"]; ?>"/>

根据需要在 $_GET["clientName"] 上添加验证。

于 2013-08-29T18:21:24.253 回答