1

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

我有一个我建立的网站,在我们使用的所有不同的测试服务器上都可以正常工作,但现在在客户端的服务器上,并且出现了一个小错误,在四处搜索后我明白它为什么这样做,但不确定修复它的最佳方法。

基本上在其中一个页面上,我有一个 php if 语句来确定查询字符串是否存在,这段代码如下

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

在我的服务器上一切正常,但是在客户端上 thisisset($_GET['area'])总是 return true。它所做的是,当您使用添加 的链接进入页面时?area=test,服务器正在存储此值,并且每当我返回此页面时,它认为这GET是真的然后执行弹出窗口,即使有没有查询字符串。

非常烦人,我可能正在考虑清除会话,但它似乎有点矫枉过正,是否有一个未设置的$_GET函数可以在检查查询字符串是否存在之前执行。

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

提前致谢。

4

3 回答 3

2

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

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

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

于 2012-09-06T09:20:41.893 回答
2

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

浏览器缓存带有 get 参数的 url,或者您在其他地方“欺骗”该参数。

于 2012-09-06T09:21:55.153 回答
2

$_GET不会被缓存。

但是,我可以想象你在某个地方用一个=.

就像是;

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

这将设置它,并使其成为现实。因此,您将永远拥有它(if()在这种情况下也是如此

于 2012-09-06T09:24:04.967 回答