Я понимаю, как получить страницу для перенаправления:
<meta http-equiv="refresh" content="10; url=http://example.com/" />
Мне нужна задержка в 10–20 секунд (как показано выше), чтобы посетители увидели, что их данные были успешно собраны.
У нас есть следующие сайты:
- локальный компьютер:
http://localhost
- ТЕСТ сотрудника:
http://dev.example.com
- клиент БЕТА:
http://beta.example.com
- В прямом эфире:
http://www.example.com
Очевидно, я не хочу менять код на моем ПК после того, как он заработал, чтобы он работал в тестовой среде сотрудников, мы меняем его снова, когда он выйдет на бета-версию, или еще раз до того, как он перейдет в РЕЖИМ.
Перенаправление, подобное приведенному выше, будет использоваться после того, как кто-то отправит форму на нашем веб-сайте.
Как мне создать перенаправление, которое знает свое местоположение?
Моя текущая задача - выяснить, как это сделать в PHP, чтобы я мог написать тег до обслуживания страницы.
Но я также разрабатываю страницы в ASP.NET для других клиентов, поэтому я хотел бы увидеть способы сделать это, которые могут быть реализованы и в Windows.
2 ответа
Измените тег перенаправления так, чтобы он указывал на URL-адрес /
, который всегда будет корневым путем домена, в котором вы находитесь.
<meta http-equiv="refresh" content="10; url=/" />
В PHP:
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') {
header('location: /'); //or header('location: '.$_SERVER['HTTP_HOST']);
}
С функцией jQuery setTimeout:
setTimeout(function(){ window.location = '/'; }, 10000); //10.000 milliseconds delay
Здесь вы можете узнать больше о суперглобальном PHP СЕРВЕРЕ и перейти по этой ссылке в функцию PHP header ().
Использование ajax для отправки запросов на сервер
Если вы используете jQuery, вам, вероятно, следует подумать об этом решении: запросите файл PHP через ajax и обновите свою базу данных или некоторые вещи на стороне сервера. В случае успеха отобразить сообщение и через некоторое время выполнить перенаправление.
Примере:
jQuery:
$('#form').on('submit', function() {
var inputs = $(this).serialize(); //safe the submitted data
$.post('path_to_file.php', inputs, function(data) { //returned a json array
var data = $.parseJSON(data); //decode the json data
if('errors' in data) { //were there any errors?
$.each(data['errors'], function() {
$('#error-box').append(this); //show the error message
});
} else { //if no errors
$('#succes-box').html('Update was successful.');
setTimeout(function(){ window.location = '/'; }, 10000); //Redirect after 10s
}
});
});
path_to_file.php
<?php
//Do something with post data.....
$response = array();
if(!$query) {
$response['errors'][] = 'There was an error querying the database.'; //error example
}
echo json_encode($response);
Надеюсь это поможет.
Похожие вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.
$_SERVER['HTTP_HOST']
имеет текущее имя хоста. Вы также можете просто сделать обновление относительным:...url=/"...
./
означает корень хоста.$_SERVER['HTTP_HOST']
в мета-обновлении вместо того, чтобы просто жестко кодировать хост. Или, как я уже сказал, просто сделайте url=/
.