php会话变量在标题中回显但在og meta中没有。时间问题?

时间:2013-08-29 17:36:45

标签: php session-variables

更新:我试图在下面写出的所有数据实际上在页面加载后查看源代码。当我说它不起作用时,我指的是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>

1 个答案:

答案 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”]上添加验证。