PHP-服务器正在缓存$_GET


PHP - $_GET being cached by server

看到我的第一个问题得到了很好的回答,我寄予厚望,所以我会尽我所能,但如果你需要更多信息,就大声喊出来。

我已经建立了一个网站,它在我们使用的所有不同的测试服务器上都能很好地工作,但现在是在客户的服务器上,出现了一个小错误,经过搜索,我理解它为什么要这样做,但不确定修复它的最佳方法。

基本上,在其中一个页面上,我有一个php-if语句来确定querystring是否存在,这段代码在下面

<?php if (isset($_GET['area'])) { ?>
    <script type="text/javascript">
        $(function() {
            setTimeout(function() {
                $('#<?php echo $_GET['area']; ?>-popup').click();
            }, 500);
        });
    </script>
<?php } ?>

在我的服务器上一切都很好,但在客户端上,这个isset($_GET['area'])总是返回true。它所做的是,当你使用添加?area=test的链接进入页面时,服务器会存储这个值,每当我回到这个页面时,它会认为GET是真的,然后执行弹出,即使没有查询字符串。

非常烦人,我可能想清除会话,但这似乎有些过头了,在检查查询字符串是否存在之前,是否有一个未设置的$_GET函数可以执行。

希望这是有道理的,我以前从未做过这样的事情,服务器存储$_GET S.似乎很疯狂

提前谢谢。

这是不可能的。如果"parameter"不在url中,则没有$_GET["parameter'"]。如果isset()返回true,则它存在于url中。

浏览器缓存url WITH get参数,或者您在其他地方"欺骗"该参数。

据我所知,$_GET没有缓存。

此外,通常您会设置一个随机的GET值,以避免像?seed=123131153131 那样的服务器缓存

你确定在显示页面时发送给Php的请求吗?

$_GET不会被缓存。

然而,我可以想象你在某个地方用一个=进行检查。

类似于;

if ($_GET['area'] = 'test')

这将使它成为现实。因此,您将始终拥有它(在这种情况下,这个if()也将为真