1

我正在尝试执行以下操作(我知道这似乎是不必要的复杂,但我不得不将问题分解成几个部分):

page_a.php

$keywords = get_meta_tags($_SERVER['HTTP_REFERER']);
$author = $keywords['author']; //"nameofauthor"
$foo = "foo";
$keywords = array ( "author" => $author, "foo" => $foo);
$_SESSION['keywords'] = $keywords;

//echo $author on page_a.php would successfully print "nameofauthor", so the variable isn't empty

page_b.php

echo $_SESSION['keywords']['author']; //echoes ""
echo $_SESSION['keywords']['foo']; //echoes "foo"

我错过了什么?

谢谢!

4

2 回答 2

1

我发现问题是包含脚本的页面的双重执行。

在第一次运行中,引用者取自远程站点(我需要从中检索元标记的站点)。

在第二次运行中,引用者是从脚本托管站点获取的,因此,导致此运行用空值覆盖标签(因为脚本本身没有使用元标签)。

为了避免后者,我添加了以下几行来检查它是第一次执行还是第二次执行。

$baseurl = parse_url($request->getBaseUrl()); //My framework's function to return the hosting system's base-url (e.g., example.com)
$referer = strstr($_SERVER['HTTP_REFERER'], $baseurl['host']) ? $_SESSION['referer'] : $_SERVER['HTTP_REFERER'];
$keywords = get_meta_tags($referer);

感谢您分享您的想法!

于 2013-08-05T06:48:34.040 回答
0

Warning: get_meta_tags(): Filename cannot be empty

get_meta_tags— 从文件中提取所有元标记内容属性并返回一个数组

您不是在处理文件,而是在处理全局变量。

示例:
$tags = get_meta_tags('http://www.example.com/');
您可能想要:get_headers():
- 返回一个数组,其中包含服务器为响应 HTTP 请求而发送的标头。

于 2013-08-03T12:07:02.113 回答