我的网站分为主题。用户可以随时在任何页面上切换主题。我希望能够在页面之间传递此主题。我猜这应该在php帖子中完成或获取变量。我可以从帖子中获取主题或获取变量,然后运行我的网站的其余部分。但是,这似乎需要每个页面上的表单传递此变量。截至目前,我通过发布或获取变量的唯一方法是从上一页的表单。我从未在几页上传递这些变量。我是否需要在每个页面上都有一个表单来传递这些变量?另外,这是标准的做法吗?
答案 0 :(得分:1)
您应该使用GET,因为它听起来只是在尝试显示不同的信息,而POST应该用于执行更改或操作。
如果您决定使用GET变量,您只需将它们附加到链接的href的末尾:
<a href="something.php?topic=bananas">MORE BANANAS</a>
答案 1 :(得分:1)
这样做的最小开销方法是添加一些javascript,每当有人导航到新主题时设置cookie。这将假设您可以选择某种方式匹配主题的所有链接(可能是槽类)
更好的方法 - 由于兼容性,可靠性和开销 - 但如果大量链接需要更改,则不一定可行,就是使用GET请求,如another poster suggested
答案 2 :(得分:0)
您可以创建一个帮助函数来生成锚标记,并将任何现有的查询字符串附加到它,所以代替:
<a href="page2.php?foo=bar&baz=bat">Foobar</a>
你会这样做:
<?php echo anchor('page2.php','Foobar'); ?>
你的函数看起来像这样:
/**
* Function creates an anchor tag and optionally
* appends an existing query string
* @param string $url
* @param string $txt
* @param bool $attach_qs Whether or not to follow a query string
*/
function anchor($url, $txt, $attach_qs = true)
{
$qs = '';
if ($attach_qs === true) {
$qs = (!empty($_SERVER['QUERY_STRING'])) ? '?' . $_SERVER['QUERY_STRING'] : '';
}
return '<a href="' . $url . $qs . '">' . $txt . '</a>';
}
答案 3 :(得分:0)
Kolink建议通过PHP echo语句为每个URL放置主题肯定会有效。然而,我感到惊讶的另一个选择还没有出现。
您可以使用PHP会话管理器来存储变量。它类似于使用cookie;但是,它只是暂时的(仅限于会话)。 cookie可以在多个会话中持久存在。
<?php
// use this code before the page is generated, before the topic is decided.
session_start();
if (isset($_GET['topic']) && $_GET['topic'] != $_SESSION['topic']) {
// GET['topic'] is set, session variable does not match
// you may want to sanitize or limit what can be passed via ?topic=
$_SESSION['topic'] = $_GET['topic'];
} else if (isset($_SESSION['topic'])) {
// Session topic is not empty, run code to display appropriate content
} else {
// No topic is set, display default
}
?>
这绝不是唯一的解决方案,但它确实为您提供了额外的选择。