gpt4 book ai didi

php - 在页面刷新/关闭之前设置 cookie

转载 作者:行者123 更新时间:2023-11-30 18:06:43 25 4
gpt4 key购买 nike

我再次向 SO 社区寻求一点帮助。

我正在修改 Joomla“测验”组件,使其按照我需要的方式运行。我现在要做的是改变组件的“刷新”行为。基本上,每个测验都有一个超时时间,即用户不再可以访问测验的时间,因此当计时器变为 0 时,将提交测验等等,但是该组件的默认行为使得无论何时页面刷新后,计时器将重置为初始设置时间(比方说,10 分钟)

问题是我希望能够让计时器从它离开的地方继续,以防刷新。

我从 3 或 4 年前就没有使用过 PHP,所以我有点迷路了。

为了能够实现所需的行为,我正在设置一个 cookie,它将存储(通过内爆)初始时间(测验打开时)和“现在”时间(加载时设置为 0,但在刷新我想“更新”cookie 以存储重新加载时间)。

有了初始时间和现在时间,我将能够计算已经过去了多少时间,并将计时器从它停止的地方开始放置。

问题是,我正在尝试使用 javascript“onbeforeunload”“更新”cookie,以便我可以设法将刷新时间放入 cookie 中。但出于某种原因,它根本没有做任何事情。当我去查看 cookie 内容时,一切都与设置 cookie 时一样。

我知道为了更新 cookie,我必须删除它然后重新设置它,但我没有成功。

示例代码如下:

//This is responsible for setting the cookie (via PHP):
<?php
$name = "progress";
$now = 0;
$time_diff = 0;
$expire = time() + 3600;
$data = array(time(), $now, $time_diff, $this->quiz->time_limit);
//$var = implode(',', $data);

if(isset($_COOKIE[$name])) {
/* If defined, update the timer */

} else {
setcookie($name, implode(',',$data), $expire);
}
echo $_COOKIE[$name];
echo "<br />";
echo $this->quiz->time_limit;
?>

这是为了检测“刷新”事件(使用将运行 PHP 的 Javascript):

window.onbeforeunload = function() {
<?php
$name = "progress";
$list = explode($_COOKIE[$name]);
//delete cookie
setcookie($name, "", time() - 3600);

//Update the fields
$list['1'] = time(); //now - refresh time
$list['2'] = $list['1'] - $list['0']; //time_diff

//Set the cookie again
setcookie($name, implode(',', $list), time() + 3600);
?>
}

谁能指出这段代码有什么问题?

最佳答案

正如评论中所说,JavaScript 无法像那样运行 PHP 代码……但如果您使用 AJAX,则可以。现在有了您发布给我们看的代码,如果您在浏览器中加载页面并查看代码,您的函数将如下所示:

window.onbeforeunload(){

}

因此,当您关闭浏览器时,您的 cookie 没有任何反应也就不足为奇了。现在,在看不到其他函数的情况下,很难准确判断发生了什么,但是您可以以不同的方式将 PHP 和 JavaScript 交织在一起使用。让我用一个例子来解释这一点。

window.onbeforeunload(){
var name = <?php $name='Steve'; echo($name); ?>;
console.log(name);
}

如果您有此代码并在浏览器中加载页面,您将不会再看到 PHP 代码,而是会看到:

window.onbeforeunload(){
var name = 'Steve';
console.log(name);
}


话虽如此,这里有一些链接可能对您有所帮助。

关于php - 在页面刷新/关闭之前设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15644275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com