Резюме существующих ответов плюс мои собственные два цента:
Вы можете использовать функцию header()
для отправки нового HTTP-заголовка, но это должно быть отправлено в браузер перед любым HTML или текстом (например, до объявления , например).
header('Location: '.$newURL);
die () или exit ()
header("Location: http://example.com/myOtherPage.php");
die();
Почему вы должны использовать die()
или exit()
: The Daily WTF
Абсолютный или относительный URL
С июня 2014 года могут использоваться как абсолютные, так и относительные URL-адреса. См. RFC 7231 , который заменил старый RFC 2616 , где разрешены только абсолютные URL.
Коды статуса
PHP " Местоположение «-header по-прежнему использует HTTP 302 -предельный код, но это не тот, который вы должны использовать. Вы должны рассмотреть либо 301 (постоянная переадресация), либо 303 (другое).
Примечание: W3C упоминает , что 303 -header несовместим со многими пользовательскими агентами pre-HTTP / 1.1. В настоящее время используемыми браузерами являются все пользовательские агенты HTTP / 1.1. Это неверно для многих других пользовательских агентов, таких как пауки и роботы.
Заголовки HTTP и функция header()
в PHP
Вы можете использовать альтернативу метод http_redirect($url);
, для которого необходимо установить пакет PECL pecl .
Эта функция не включает код состояния 303 :
function Redirect($url, $permanent = false)
{
header('Location: ' . $url, true, $permanent ? 301 : 302);
exit();
}
Redirect('http://example.com/', false);
Это более гибко:
function redirect($url, $statusCode = 303)
{
header('Location: ' . $url, true, $statusCode);
die();
}
Как уже упоминалось, header()
перенаправляет работу только до того, как что-либо выписано. Они обычно терпят неудачу, если вызывается inmidst HTML . Затем вы может использовать метод обхода HTML-заголовка (не очень профессиональный!), например:
Или перенаправление JavaScript даже.
window.location.replace("http://example.com/");
Для фокусировки текстового поля после метода setText("");
можно использовать следующее,
textFieldName.requestFocus();
. Для центрирования текстового поля можно использовать этот код,
textFieldName.setHorizontalAlignment(JTextField.CENTER);