更新:我试图在下面写出的所有数据实际上在页面加载后查看源代码。当我说它不起作用时,我指的是Facebook分享者没有正确地拿起og标签这一事实。
所以我有一个页面,顶部有许多包含使用会话变量进行一些查询。一切都很好。当我回应它们时,会话变量将填充到我需要它们的位置。示例:
<title><? echo $_SESSION["clientName"] ?></title>
问题是当我开始将它们写入og元数据时。
<meta property="og:description" content="<? echo $_SESSION["clientName"]; ?>"/>
这样就可以将数据写入标签。我在源代码中看到它,但Facebook在激活共享器时认为它没什么。 现在,如果我使用任何类型的会话定义一个来自无查询的本地php变量,它就可以正常使用sharer。
$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>
答案 0 :(得分:1)
您如何设置$ _SESSION [“clientName”]? Facebook会抓取您的链接并缓存链接的元数据。我猜facebook无法设置你的会话数据$ _SESSION ['clientName']。您是根据用户登录还是用户操作选择的内容设置会话数据?如果是这种情况,Facebook将无法为您设置。
您可以在生成共享链接时尝试此操作:
您的clientName共享链接可以是
http://yoursite.com/?clientName=<?php echo $_SESSION['clientName'];?>
在您的网站中,您可以这样做:
<meta property="og:description" content="<?php echo $_GET["clientName"]; ?>"/>
根据需要在$ _GET [“clientName”]上添加验证。