im problem z ustawieniem Etag na niezawodnej przeglądarce użytkownika. Kiedy użytkownik klika jeden z moich zewnętrznych linków, chciałbym ustawić id artykułu na ich Etag (ja też używam ciasteczek, ale idę eksperymentować z Etag specjalnie, aby sprawdzić jego niezawodność).Ustawienie PHP Etag niezawodnie
Kiedy ten sam użytkownik powraca do mojej witryny kilka godzin/dni później, chciałbym móc odczytać wartość Etag i użyć jej do rzeczy.
Potrafię ustawić Etag na pierwszym kliknięciu, ale gdy użytkownik zwróci wartość Etag, zniknie. Zakładam, że wygasł lub coś takiego. Oto kod mam stara:
<?
$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);
?>
niesamowite rzeczy !! "" tego właśnie mi brakowało :-) Dzięki! –
Faktycznie, składnia 'header ('Not Modified', true, 304);' spowodowała błąd "500 Internal Server" w mojej sieci Wordpress. Oryginalna składnia wydaje się bezpieczniejsza. – Sphinxxx
@Sphinxxx Niestety, to będzie źle dla większości agentów internetowych, które używają HTTP/1.1 (dlatego zaleciłem go przed twardym kodowaniem). Zaktualizowałem post, dodając funkcję "new" w PHP 5.4, która jest lepsza od innych. Spróbuj zamiast tego. –