【发布时间】:2018-05-25 12:42:48
【问题描述】:
虽然听起来很奇怪,但我对仅在 Chrome 下发生的会话有疑问。
这里是场景:
我在控制器中有一个方法search:
public function search()
{
$keyWord = htmlspecialchars(strip_tags($this->get['keyword']));
if(mb_strlen($keyWord) < 3){
$this->flashMessage->warning('keyword is too short');
redirect(SITE_ADDR . '/forum');
}
......
}
简单明了 - 如果来自 $_GET 的关键字少于 3 个字符 - 在 $_SESSION 中保存一条消息并重定向。但是,如果我进入搜索页面(例如site.com/forum/search/?keyword=fff)(注意 $_GET 中有 3 个字符)并开始快速刷新,错误消息是随机设置的,但永远不会调用重定向函数。我尝试通过在$this->flashMessage->warning 之后插入exit(); 来停止脚本,并且脚本停止时没有问题,但从未调用重定向函数。对于 1 或 2 个字符,重定向没有问题。当错误消息甚至不应该在会话中设置时,仅适用于 3 个或更多字符。
这只发生在 Chrome 中。我尝试了 Firefox 和 Opera,没有这样的问题。我尝试隐身但没有任何改变。有人知道为什么会这样吗?
我没有使用框架或任何东西。
【问题讨论】:
-
好吧,我没有看到任何与 PHP SESSION 相关的代码,所以除了猜测之外,这有点困难。您也没有在此处显示任何代码,如果不应该设置它会清除警告(一旦设置,它将保持设置直到您清除它,或者会话到期)。请提供更多信息。
-
我知道为什么请看我的第二个帖子。