2012-01-25 18 views
0

我的网站被组织成主题。用户可以随时在任何页面上切换主题。我希望能够逐页传递此主题。我猜这应该在一个PHP文章或变量。我可以从帖子中获取主题或获取变量,然后运行我的网站的其余部分。但是,这似乎需要在每个页面上传递此变量的表单。截至目前,我通过发布或获取变量的唯一方法是从上一页的表单。我从来没有将这些变量传遍几页。我需要每页上的表单来传递这些变量吗?另外,这是做这个的标准方式吗?PHP GET变量在浏览期间传递

回答

1

您应该使用GET,因为它听起来像只是试图显示不同的信息,POST应该用于执行更改或操作。

如果你决定使用GET变量,所有你需要做的就是把它们添加到链接的href的末尾:

<a href="something.php?topic=bananas">MORE BANANAS</a> 
+0

但如果用户正在浏览网站并访问不同的网页,我该如何不断传递“香蕉”。对我来说,似乎我必须将每个链接变成一个from,这样变量才能继续。 – kirby

+1

类似于'MORE BANANAS'。此外,+ 1让我笑香蕉。香蕉很好。 –

1

这样做的最高效方法是添加一些JavaScript,设置每次有人导航到新主题时都会有一个cookie。这会假设你能以某种方式选择符合主题(大概槽类)所有的链接

一个更好的方法 - 因为兼容性,可靠性和开销 - 但不一定是可行的,如果大量的链接需要改变,是使用GET请求,为another poster suggested

0

您可以创建一个辅助函数来生成你的锚标记,只是任何现有的查询字符串追加到它,所以不是这样的:

<a href="page2.php?foo=bar&baz=bat">Foobar</a> 

你可以这样做:

<?php echo anchor('page2.php','Foobar'); ?> 

在您的功能应该是这样的:通过一个PHP回声声明放置主题为每个URL肯定会工作的

/** 
* 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>'; 
} 
0

Kolink的建议。然而,我感到惊讶的另一个选择还没有出现。

您可以使用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 
} 
?> 

这绝不是唯一的解决方案,但它确实会给你一个额外的选择。