【问题标题】:Cannot pass specific variable to session无法将特定变量传递给会话
【发布时间】:2013-08-02 13:59:33
【问题描述】:

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

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"

我错过了什么?

谢谢!

【问题讨论】:

  • 如果在分配给$author之前先var_dump($keywords['author']);,结果是什么?
  • 我不知道是否有问题以及在哪里有问题,但是当我看到使用的“会话”时,我的第一个问题是,session_start(); 在你的所有文件和顶部?
  • @Fred 我也是第一个想法,但一个变量正确回显。
  • @Jim 您认为由于会话被覆盖、丢失或找不到,它会回显第一个结果而不是另一个结果?
  • 看来问题不在于会话,而在于 get_meta_tags 返回的内容。你确定它是把作者还给你吗?在第 1 行后添加var_dump($keywords); 进行检查。

标签: php session variables set meta-tags


【解决方案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);

感谢您分享您的想法!

【讨论】:

    【解决方案2】:

    Warning: get_meta_tags(): Filename cannot be empty

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

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

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

    【讨论】:

    • 嗨,davidS,我确实需要标签,而不是标题。而且由于 get_meta_tags 确实返回了我需要的内容,因此仍然是将其结果分配给会话的问题。事实上,我确实收到了 example.com 的作者(和描述等),我在将其分配给会话之前通过回显 $author ("nameofauthor") 来证明这一点。另外,在将其分配给会话后的同一页面上,$_SESSION['keywords']['author'] 将正确包含 $author(它回显“nameofauthor”),但在其他页面上我最终得到一个空回显,而当我分配手动值时一切都很好......
    猜你喜欢
    • 1970-01-01
    • 2011-06-12
    • 2018-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    • 2014-11-08
    • 1970-01-01
    相关资源
    最近更新 更多