Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在URL中保留GET变量_Php_.htaccess_Session_Cookies_Session Cookies - Fatal编程技术网

Php 在URL中保留GET变量

Php 在URL中保留GET变量,php,.htaccess,session,cookies,session-cookies,Php,.htaccess,Session,Cookies,Session Cookies,我有一个奇怪的问题,我相信你们中的大多数人都意识到,这些问题产生于开发人员无法控制的特定情况 我想了解如何始终在URL中保留querystring参数。如果未设置参数,我希望将默认值附加到URL?param=something 我之前问了一个与此相关的问题,并且能够使用htaccess添加默认查询,但这只适用于初始请求,而我需要确保它始终存在于地址中 我想在PHP中使用cookie集,然后使用.htaccess进行查询 因此,我想问的是,这是否可行,是否有更好的方法来实现这一点?$\u GET和

我有一个奇怪的问题,我相信你们中的大多数人都意识到,这些问题产生于开发人员无法控制的特定情况

我想了解如何始终在URL中保留querystring参数。如果未设置参数,我希望将默认值附加到URL?param=something

我之前问了一个与此相关的问题,并且能够使用htaccess添加默认查询,但这只适用于初始请求,而我需要确保它始终存在于地址中

我想在PHP中使用cookie集,然后使用.htaccess进行查询


因此,我想问的是,这是否可行,是否有更好的方法来实现这一点?

$\u GET
$\u POST
超全局变量,它们不是这样使用的。我不知道为什么它是必需的,但无论如何,您可以使用或获得所需的功能。你想做的事不实际。行业标准是使用会话和cookie。试试看,我肯定这会帮你的。如果您有任何问题,请告诉我。

在不更改所有URL的情况下,我认为这是不可能的,正如前面所讨论的那样,这是一种非常有技巧的方法

我建议你给他们一个“特殊”的按钮,他们用来复制链接。让他们使用此按钮复制链接而不是URL。然后,您可以在不入侵网站的情况下正确控制数据

编辑:您“可以”在中添加一些JQuery,以附加带有参数的所有链接。你想过这个吗

$(document).ready(function() {
  $('a[href]').each(function() {
    this.href = this.href + '?something=<?php echo $_SESSION["myparam"]; ?>'
  });
});
$(文档).ready(函数(){
$('a[href]')。每个(函数(){
this.href=this.href+'?某物='
});
});
您可以从初始页面加载/会话中获取参数,但这需要用户启用JS(现在大多数人都这么做)


p、 s未经测试的半伪代码。如果您决定采用这种方式,我可以对其进行适当的测试。

如果您使用的是Apache 2,那么您可以添加一个重写规则,在URL中没有“param=…”的每个请求后面附加一个GET参数。类似于(未经测试):


有关详细信息,请参阅。如果您想将此限制为某个URL,可以在
%{REQUEST\u URI}
上添加另一个
RewriteCond

我大约3个月前才学会php,所以我希望我不会引导您走上这条路,这是我将尝试的


编辑:我学习php已经5个月了。在此编辑之前,我的上一个版本只“构建”了get to append(它可能不起作用)

preg_更换您的分机

$string = 'your webpage before output';
$patterns = array();
$patterns[0] = '/.html/';
$patterns[1] = '/.php/';
$patterns[2] = '/yoursite.com /';//with space
$replacements = array();
$replacements[0] = '.html'.$get;
$replacements[1] = '.php'.$get;
$replacements[2] = 'yoursite.com/index.php'.$get;
然后打印你的字符串

echo preg_replace($patterns, $replacements, $string);

我真的得问问。。为什么?如果您在提供值时使用默认值,这还不够吗?您当然可以使用cookie,尽管我不认为其他解决方案有任何优势。但请注意,Cookie值未填充到
$\u GET
超全局变量中。@webnoob用于在网站上设置用户类型,而无需使用新路径修改所有现有URL。必须设置该变量,以便我们的销售团队可以复制URL并将客户定向到特定页面,还可以设置他们的用户类型。这是一个混乱的解决方案,但我的想法@arkascha如果我不能将cookie值传递到我的重写规则中,那么这个想法就到此为止了。会话已经运行并设置了用户类型-但只有在设置了?param=something时。如果用户转到其他页面,则他们的会话仍处于活动状态,但查询字符串已消失。如果他们复制地址并将其发送给客户端,则客户端无法获得正确的内容。这就解释了吗?@AlexHolsgrove-我现在明白你的问题了。你不能给他们一个“特殊”的按钮,他们用来复制链接吗。让他们使用此按钮复制链接而不是URL。你可以在不入侵网站的情况下正确控制数据。这是我最初的解决方案,但被更高的权力机构拒绝了。。。这似乎是目前唯一可行的解决方案:)@AlexHolsgrove如果你决定使用它,我会将它移动到一个答案。我已经创建了一个页面链接按钮,添加了正确的查询字符串,但是jQuery的想法很好,因为我已经将它包含在网站上。谢谢你的回答。我设法让你的建议起作用(见我前面的问题:),但它并不能完全解决我的问题。我已经实现了一个复制URL并附加查询字符串的按钮——这是一个快速而干净的解决方案
$string = 'your webpage before output';
$patterns = array();
$patterns[0] = '/.html/';
$patterns[1] = '/.php/';
$patterns[2] = '/yoursite.com /';//with space
$replacements = array();
$replacements[0] = '.html'.$get;
$replacements[1] = '.php'.$get;
$replacements[2] = 'yoursite.com/index.php'.$get;
echo preg_replace($patterns, $replacements, $string);