从包含的页面中丢失POST值,从而阻止创建会话数据

时间:2014-08-01 04:46:32

标签: php session post include

我有一个主页面,其中包含一个标题页,可以在所有页面上编辑标题,从而加快处理速度。我遇到的问题是这个标题上有搜索选项,我希望搜索字词保存在会话变量中。如果标题位于页面本身而不是包含的页面上,它可以正常工作,但只要我将标题放入其自己的文件中,搜索功能就会停止按预期工作。

这只是包含代码:

<?php 
if (!isset($_SESSION)) {
  session_start();
}

$redirectAction = $_SERVER['PHP_SELF'];
?>
<html>
  <body>
    <?php include 'http://www.saxon564.com/tclusa/header.php'; ?>
  </body>
</html>

这是header.php代码:

    <?php
    if (!isset($_SESSION)) {
      session_start();
    }


    if ((isset($_POST["search"])) && ($_POST["search"] == "1")) {

        $_SESSION['query'] = $_POST['query'];
    }
    ?>
    <html>
      <body>
          <form action="<?php echo $redirectAction; ?>" method="POST">
                  <input type="text" name="query" id="query" placeholder="Search" size="20" value="<?php echo $_SESSION['query']; ?>" />
                  <input type="hidden" name="search" id="search" value="1" />
                  <input type="submit" class="sbmt" value="Search" />
          </form>
      </body>
    </html>

当我提交搜索时,页面会重新加载,但搜索数据未保存。我可能错过了一些重要的东西,但是我对此并不感到满意。有没有人想过问题是什么,或者这是不可能的?

2 个答案:

答案 0 :(得分:0)

请勿在{{1​​}}中使用absolute path。您必须使用include才能使其正常运行。

relative path

答案 1 :(得分:0)

$ _ SESSION始终设置为PHP全局变量。我不认为你需要在启动之前检查会话是否存在。此外,您无法按请求启动两次会话(因此只需从包含的头文件中删除)。您应该在应用程序的最开始处执行一次session_start(),就是这样。

如果确实需要检查会话是否已初始化,请使用空(&amp; $ var)。

相关问题