Потоковая библиотека IO была добавлена к стандартной библиотеке C++ перед STL. Для не повреждения обратной совместимости было решено постараться не изменять библиотеку IO, когда STL был добавлен, даже если это означало некоторые проблемы как та, которую Вы повышаете.
header('Location: http://www.example.com/', true, 302);
exit;
Ссылка: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
редактировать:
Этот ответ кэшируется, только если обозначается Cache-Control или Поле заголовка истекает.
Лучший способ перезагрузить страницу и заставить ее не извлекаться из кеша - это добавить случайный идентификатор или временную метку в конец URL-адреса в виде строки запроса. Это делает запрос каждый раз уникальным.
Попробуйте следующее:
echo '<script>document.location.replace("someurl.php");</script>';
Это должно заменить историю браузера, но не кеш.
Самый безопасный способ - использовать перенаправление заголовка
header('Location: http://www.example.com/', true, 302);
exit;
Но учтите, что он должен быть отправлен ДО того, как любой другой вывод будет отправлен в браузер.
function redirect($url) {
if(!headers_sent()) {
//If headers not sent yet... then do php redirect
header('Location: '.$url);
exit;
} else {
//If headers are sent... do javascript redirect... if javascript disabled, do html redirect.
echo '<script type="text/javascript">';
echo 'window.location.href="'.$url.'";';
echo '</script>';
echo '<noscript>';
echo '<meta http-equiv="refresh" content="0;url='.$url.'" />';
echo '</noscript>';
exit;
}
}
// How to use
$url = "www.google.com";
redirect($url);