将 GET 变量从第一页保存到另一页
Posted
技术标签:
【中文标题】将 GET 变量从第一页保存到另一页【英文标题】:Keeping GET variables from 1 page to anonter 【发布时间】:2014-10-13 09:45:19 【问题描述】:问题是我想保留在浏览页面时与 GET 表单一起使用的搜索变量。就像谷歌在你搜索某些东西然后你想搜索图片时所做的那样,你只需点击图片而不需要替换搜索。我确实看到他们的图像或其他类型的搜索的链接在创建页面时已经在 url 中有 GET 字符串。那么是否有一个变量包含 url 字符串中的所有内容,我可以将其放回 href 到下一页。
示例:我当前的网址:localhost/index.php?name=John
我有一个指向另一个页面的链接让我们说 edit.php
放置一个类似 echo 'edit.php?'.$GET_var.';
的代码并回显到 edit.php?name=John
会很有用
编辑:
我可能会使用$string = http_build_query($_GET);
但另一件事是获得index.php
的部分。因此,如果我在此页面(index.php)上,则此页面的链接应为index.php
,而其他链接应为 ?query 参数
【问题讨论】:
那么问题出在哪里? 如果有一个变量像我的 $GET_var 包含来自 url 的字符串 好的!您在哪里创建指向edit.php
之类的页面的链接?你是通过index.php
中的<a>
元素来做的吗?
【参考方案1】:
你可以试试这个
// suppose your url is index.php?name=john&city=jordan
$arr_temp = array();
foreach($_GET as $key=>$val)
$arr_temp[] = $key."=".$val; // name=john or city=jordan into arr_temp array
$params = implode("&", $arr_temp); // implode with & name=john&city=jordan
echo 'edit.php?'.$params; // combine params to new link
更新 2:
$params = $_SERVER['QUERY_STRING'];
echo 'edit.php?'.$params;
【讨论】:
我喜欢这个,但它可以在链接的分配/输出过程中使用urlencode()
或htmlspecialchars()
。
你应该检查$key
不是一个数组。当 url 看起来像这样时,您可能会在倒数第二行遇到问题:/index.php?name[]=hello
可能是的。不确定您是否需要转义这些值,永远不必像那样对 QUERY_STRING 进行操作。
不需要转义就可以在url中打印,它将在新页面中处理。他们将在哪里访问。【参考方案2】:
我建议使用内置的parse_url
。
$url ="http://localhost/index.php?name=John";
$result = parse_url($url);
$newUrl = 'http://localhost/index.php?' . $result['query'];
或者,使用parse_url
的组件参数,也许更简洁:
$url ="http://localhost/index.php?name=John";
$query = parse_url($url, PHP_URL_QUERY);
$newUrl = 'http://localhost/index.php?' . $query;
了解parse_url。
【讨论】:
我会接受另一个答案,因为它也包括您获取网址的方式。您刚刚将您的声明为 $url=.. 这也很有用【参考方案3】:$_SERVER['QUERY_STRING'] 有你的 GET 变量。 您可能还想查看phpinfo() 以了解您还有什么可用的。
【讨论】:
【参考方案4】:使用 php 将 $_GET 变量从一个页面移动到另一个页面, 您可以使用 htt_build_query 函数作为
$string = http_build_query($_GET);
将该 $string 附加到您的网址,即 YOUR_URL?$string
【讨论】:
+1 表示此评论,因为它不需要在指向其他页面的链接中显式附加 $_GET 变量。以上是关于将 GET 变量从第一页保存到另一页的主要内容,如果未能解决你的问题,请参考以下文章