即时通讯在用户的浏览器上可靠地设置Etag。当用户点击我的一个外部链接时,我想将文章ID设置为他们的Etag(我也使用Cookie,但是ID喜欢专门试验Etag来测试其可靠性)。PHP设置Etag可靠
当同一用户在几个小时/天后返回我的网站时,我希望能够读取Etag值并将其用于东西。
我可以在初始点击时设置一个Etag,但是当用户返回Etag值时消失了。我认为它过期了或什么的。下面是代码我一直在努力:
<?
$time = 1280951171;
$lastmod = gmdate('D, d M Y H:i:s \G\M\T', $time);
$etag = '123';
$ifmod = isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) ? $_SERVER['HTTP_IF_MODIFIED_SINCE'] == $lastmod : null;
$iftag = isset($_SERVER['HTTP_IF_NONE_MATCH']) ? $_SERVER['HTTP_IF_NONE_MATCH'] == $etag : null;
if (($ifmod || $iftag) && ($ifmod !== false && $iftag !== false)) {
header('HTTP/1.0 304 Not Modified');
} else {
header("Last-Modified: $lastmod");
header("ETag: $etag");
}
print_r($_SERVER);
?>
真棒的东西! “”就是我想念的:-)谢谢! – 2010-08-12 11:40:24
实际上,'header('Not Modified',true,304)''语法导致我的Wordpress网站上出现“500 Internal Server Error”。原始语法似乎更安全。 – Sphinxxx 2014-12-10 02:18:56
@Sphinxxx不幸的是,对于大多数使用HTTP/1.1的Web用户代理来说这是错误的(这就是为什么我建议不要对其进行硬编码的原因)。我已经更新了这篇文章,在PHP 5.4中包含了一个'新'功能,这比其他的更好。改为尝试。 – 2014-12-10 09:44:01