我有一个主页面,其中包含一个标题页,可以在所有页面上编辑标题,从而加快处理速度。我遇到的问题是这个标题上有搜索选项,我希望搜索字词保存在会话变量中。如果标题位于页面本身而不是包含的页面上,它可以正常工作,但只要我将标题放入其自己的文件中,搜索功能就会停止按预期工作。
这只是包含代码:
<?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>
当我提交搜索时,页面会重新加载,但搜索数据未保存。我可能错过了一些重要的东西,但是我对此并不感到满意。有没有人想过问题是什么,或者这是不可能的?
答案 0 :(得分:0)
请勿在{{1}}中使用absolute path
。您必须使用include
才能使其正常运行。
relative path
答案 1 :(得分:0)
$ _ SESSION始终设置为PHP全局变量。我不认为你需要在启动之前检查会话是否存在。此外,您无法按请求启动两次会话(因此只需从包含的头文件中删除)。您应该在应用程序的最开始处执行一次session_start(),就是这样。
如果确实需要检查会话是否已初始化,请使用空(&amp; $ var)。