Как создать кнопку отправки в форме, которая направляется на определенную ссылку [дубликат]

Убедитесь, что сценарий содержит

<?php

перед кодом, который должен быть выполнен. Между <? и php в этом не должно быть пробелов.

1030
задан gturri 15 December 2014 в 20:25
поделиться

28 ответов

Резюме существующих ответов плюс мои собственные два цента:

1. Основной ответ

Вы можете использовать функцию header() для отправки нового HTTP-заголовка, но это должно быть отправлено в браузер перед любым HTML или текстом (например, до объявления <!DOCTYPE ...>, например).

header('Location: '.$newURL);

2. Важные подробности

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. Это неверно для многих других пользовательских агентов, таких как пауки и роботы.

3. Документация

Заголовки HTTP и функция header() в PHP

4. Альтернативы

Вы можете использовать альтернативу метод http_redirect($url);, для которого необходимо установить пакет PECL pecl .

5. Вспомогательные функции

Эта функция не включает код состояния 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();
}

6. Обходной путь

Как уже упоминалось, header() перенаправляет работу только до того, как что-либо выписано. Они обычно терпят неудачу, если вызывается inmidst HTML . Затем вы может использовать метод обхода HTML-заголовка (не очень профессиональный!), например:

 <meta http-equiv="refresh" content="0;url=finalpage.html">

Или перенаправление JavaScript даже.

window.location.replace("http://example.com/");
1412
ответ дан 21 revs, 11 users 73% 21 August 2018 в 04:41
поделиться
  • 1
    Некоторые проблемы с этим ответом: 303 могут быть не «правильными». код состояния. 301 может потребоваться, например, для Google. Во-вторых, header('Location: '.$newURL); должен быть до того, как любой HTML (или текст) будет передан браузеру, или он не будет работать правильно. – Chuck Le Butt 27 May 2011 в 13:30
  • 2
    К сожалению, ежедневная история WTF является распространенной. Во всяком случае, это не недостающий ум, что вызывает проблему, но плохой дизайн. В 99,9% случаев яростно блокирует процесс. Обычным, более чистым решением (а не моим любимым в любом случае) является бросить исключение RedirectionException и уловить его в точке входа приложения. После этого вы можете получить все ваши «после» & quot; звонки (журналы / закрытие соединений / что когда-либо) – robertodecurnex 17 July 2014 в 05:09
  • 3
    http-equiv="Location" не поддерживается всеми браузерами. Вместо этого вы должны использовать refresh! <meta http-equiv="refresh" content="0;url=http://example.com/"> – Timo002 23 September 2014 в 09:06
  • 4
    Никогда выдает 301, если вы не означаете его . 301 означает постоянное и постоянное средство постоянное , то есть оно будет кэшироваться агентами пользователя, то есть длинными, заполненными кофеином ночами, смотрящими на журналы приложений, задаваясь вопросом, сойдете ли вы с ума, потому что вы клянетесь, что какая-то страница должна иметь были вызваны или обновлены, и вы клянетесь, что Бог работает на вашей машине, но не на клиентах. Если вы абсолютно должны называть 301, поставьте максимальный возраст управления кешем на ресурс. У вас нет бесконечной мудрости, и вы не должны поступать так, как вы. – madumlao 12 December 2014 в 10:47
  • 5
    Но есть ли причина использовать смерть над выходом? выход кажется более чистым и более подходящим. – ars265 9 March 2015 в 19:21

Я уже ответил на этот вопрос, но я сделаю это снова, так как между тем я узнал, что есть особые случаи, если вы работаете в CLI (перенаправления не могут произойти и, следовательно, не должны exit() ), или если ваш веб-сервер работает с PHP как (F) CGI (для правильной переадресации требуется предварительно установленный заголовок Status).

function Redirect($url, $code = 302)
{
    if (strncmp('cli', PHP_SAPI, 3) !== 0)
    {
        if (headers_sent() !== true)
        {
            if (strlen(session_id()) > 0) // if using sessions
            {
                session_regenerate_id(true); // avoids session fixation attacks
                session_write_close(); // avoids having sessions lock other requests
            }

            if (strncmp('cgi', PHP_SAPI, 3) === 0)
            {
                header(sprintf('Status: %03u', $code), true, $code);
            }

            header('Location: ' . $url, true, (preg_match('~^30[1237]$~', $code) > 0) ? $code : 302);
        }

        exit();
    }
}

Я также рассмотрел вопрос о поддержке различных Коды перенаправления HTTP (301, 302, 303 и 307), как это было описано в комментариях к моему предыдущему ответу, вот описания:

  • 301 - Перемещено на постоянной основе
  • 302 - Найдено
  • 303 - См. Other
  • 307 - Временное перенаправление (HTTP / 1.1)
89
ответ дан Alix Axel 21 August 2018 в 04:41
поделиться
  • 1
    И не забывайте о буферизации вывода, иначе вы получите «Заголовки, уже отправленные». – Kuroki Kaze 20 April 2009 в 15:36
  • 2
    ... и не забывайте, что напечатайте somthign like & quot; вы будете перенаправлены на $ nepage в $ n секунд, нажмите $ link здесь, если перенаправление не произойдет & quot; Некоторые броузеры и некоторые настройки браузера могут привести к отказу в перенаправлении. – Strae 20 April 2009 в 16:49
  • 3
    @DaNieL: этот тип перенаправления не займет «$ n seconds». Это будет мгновенно, если это произойдет вообще, и любой соответствующий браузер должен его обработать. Я думаю, вы думаете о «метаобновлении». перенаправляет людей, когда они не знают ничего лучшего. – rmeador 20 April 2009 в 17:03
  • 4
    в каких браузерах это? – nickf 21 April 2009 в 01:57
  • 5
    Андрей: как браузер HTTP не уважает? Откуда :? – vartec 21 April 2009 в 08:56

Вы можете использовать переменные сеанса для управления доступом к страницам и авторизации действительных пользователей.

<?php

session_start();

if ( !isset( $_SESSION["valid_user"]) )
{
    header("location:../");
   die();
}

// Page goes here
?>

http://php.net/manual/en/reserved.variables.session .php .

Недавно я получил кибератаки и решил, что мне нужно знать пользователей, пытающихся войти в панель администратора или зарезервированную часть веб-приложения.

, поэтому я добавил IP-адрес доступа к журналу и пользовательские сессии в текстовом файле, потому что я не хочу беспокоить мою базу данных.

17
ответ дан Asuquo12 21 August 2018 в 04:41
поделиться

Да, можно использовать PHP, мы перенаправимся на другую страницу, попробуем это:

<?php
header("location:./");//redirect to index file
header("location:index.php");//redirect to index file
header("location:example.php");
?>
4
ответ дан Bhargav Chudasama 21 August 2018 в 04:41
поделиться

Возможно, слишком поздно ответить на этот вопрос. Тем не менее, вот мои мысли:

IMHO, лучший способ перенаправить входящий запрос - это использовать заголовки местоположений, которые идут

<?php
header("Location: /index.php");
?>

Как только этот оператор будет выполнен , а вывод отправлен, браузер начнет перенаправлять пользователя. Однако убедитесь, что перед отправкой заголовков не было никакого выхода (любого echo / var_dump), иначе это приведет к ошибкам.

Хотя это быстрый и грязный способ добиться того, что изначально было задано, но в конечном итоге это будет катастрофой для SEO, так как этот тип перенаправления всегда интерпретируется как перенаправление 301/302, поэтому поисковые системы всегда будут видеть вашу индексную страницу как перенаправленную страницу, а не что-то целевой страницы / главной страницы. Следовательно, это повлияет на настройки SEO на сайте.

6
ответ дан Bhaskar Pramanik 21 August 2018 в 04:41
поделиться
  • 1
    exit () следует использовать сразу после заголовка () – EKanadily 17 February 2017 в 08:05
  • 2
    @docesam .. согласился .. exit () должен быть немедленно вызван после вызова header (). Однако я чувствую, что, если в этом заголовке больше нет вывода для браузера, exit () может не понадобиться. Просто мое мнение – Bhaskar Pramanik 20 February 2017 в 05:23
  • 3
    да, но вы должны объяснить это, потому что кто-то может скопировать вашу строку кода в свой сценарий, и это потенциально может вызвать длительные кружки вокруг себя, выясняя, что пошло не так. – EKanadily 21 February 2017 в 03:47
  • 4
    @BhaskarPramanik представьте, что вам нужно быстро запереть дверь, но тогда вам придется снова тянуть / нажимать / разбить их, чтобы убедиться, что она уже заблокирована или нет. – aswzen 22 March 2018 в 04:40
  • 5
    @aswzen +1 для комментария;) – Bhaskar Pramanik 26 March 2018 в 18:45

Как и другие здесь, отправьте заголовок местоположения с помощью:

header( "Location: http://www.mywebsite.com/otherpage.php" );

, но вам нужно сделать это, прежде чем отправлять какой-либо другой вывод в браузер.

Также , если вы собираетесь использовать это, чтобы блокировать пользователей, не прошедших проверку подлинности, с определенных страниц, как вы упомянули, помните, что некоторые пользовательские агенты будут игнорировать этот и продолжать на текущей странице в любом случае, так что вы Мне нужно будет умереть () после его отправки.

6
ответ дан Brent 21 August 2018 в 04:41
поделиться
  • 1
    but you need to do it before you've sent any other output to the browser. Удивительно !! Был поиск минут на том, почему я продолжал получать заголовки, уже отправленные ошибки. +1 !! – josh 18 January 2014 в 10:39
  • 2
    Более общий, у вас есть / остановить ваш скрипт полностью /. die() - это только один способ сделать это. – MauganRa 13 November 2016 в 16:29

Да, вы можете использовать функцию header () ,

header("Location: http://www.yourwebsite.com/user.php"); /* Redirect browser */
exit();

. Также наилучшей практикой является вызов функции exit () сразу после header(), чтобы избежать выполнения кода.

Согласно документации, необходимо вызывать header() до отправки любого фактического выхода.

7
ответ дан CasperSL 21 August 2018 в 04:41
поделиться

Вывод JavaScript из PHP с использованием echo, который выполнит задание.

echo '<script type="text/javascript">
           window.location = "http://www.google.com/"
      </script>';

Вы не можете сделать это на PHP, если не буферизовать вывод страницы, а затем проверить условие переадресации. Это может быть слишком много хлопот. Помните, что заголовки - это первое, что отправлено со страницы. Большая часть перенаправления обычно требуется позже на странице. Для этого вам нужно буферизировать весь вывод страницы и позже проверить состояние переадресации. В этот момент вы можете либо перенаправить заголовок пользователя страницы (), либо просто эхо-буферизованный вывод.

Подробнее о буферизации (преимущества)

Что такое буферизация вывода?

88
ответ дан Community 21 August 2018 в 04:41
поделиться
  • 1
    Простой и точный ответ! Отлично подходит для простого перенаправления страниц! – Stathis Andronikos 19 May 2016 в 11:04
  • 2
    И таким образом вы не сталкиваетесь с общей ошибкой Cannot modify header information - headers already sent by. – Kai Noack 28 August 2016 в 18:33
  • 3
    @hmd, что, если javascript отключен? – Istiaque Ahmed 9 September 2017 в 21:20
  • 4
    @IstiaqueAhmed javascript почти всегда включен в эти дни, но если он отключен, вы можете использовать буфер PHP. Этот вопрос SO отвечает на этот вопрос. Если вы используете буферизацию PHP, тогда вам не нужен этот метод, который я хочу. – Hammad Khan 10 September 2017 в 17:55
  • 5
    False, вы можете (и должны) делать это на PHP даже без буферизации: на хорошо продуманной странице вся соответствующая обработка PHP должна происходить до того, как любой HTML-контент будет отправлен пользователю. Таким образом, перенаправления PHP будут работать нормально. – MestreLion 4 August 2018 в 08:45

header( 'Location: http://www.yoursite.com/new_page.html' );

11
ответ дан Daniel A. White 21 August 2018 в 04:41
поделиться

Накануне семантической сети правильность - это то, что нужно учитывать. К сожалению, «Location» -header PHP по-прежнему использует HTTP 302 -редакторный код, который, строго говоря, не самый лучший для перенаправления. Тот, который он должен использовать, является 303 .

W3C достаточно любезен, чтобы упомянуть , что заголовок 303 несовместим со «множеством pre -HTTP / 1.1 пользовательских агентов ", который не будет использовать браузер в текущем использовании. Таким образом, 302 является реликтом, который не должен использоваться .

... или вы могли бы просто игнорировать его, как и все остальные ...

6
ответ дан Henrik Paul 21 August 2018 в 04:41
поделиться

Если вы используете Apache, вы также можете использовать .htaccess для перенаправления.

Redirect 301 / http://new-site.com/
1
ответ дан jabko87 21 August 2018 в 04:41
поделиться
<?php header('Location: another-php-file.php'); exit(); ?>

, или если вы уже открыли теги php, используйте это:

header('Location: another-php-file.php'); exit();

Вы также можете перенаправить на внешние страницы, например:

header('Location: https://www.google.com'); exit();

Убедитесь, что вы включаете exit() или include die()

23
ответ дан jake 21 August 2018 в 04:41
поделиться
header("Location: /index.php");
exit(0);   
10
ответ дан joan16v 21 August 2018 в 04:41
поделиться
<?php
$url = "targetpage"
Function redirect$url(){
   If (headers_sent()) == false{
      Echo '<script>window.location.href="' . $url . '";</script>';
}}
?>
1
ответ дан Joshua Charles Pickwell 21 August 2018 в 04:41
поделиться
  • 1
    Не могли бы вы объяснить функцию вашего кода? Ваш ответ был отмечен из-за его длины и содержания. – www139 20 November 2017 в 20:38

1. Использование функции заголовка с exit()

<?php 
     header('Location: target-page.php');
     exit();
?>

, но если вы используете функцию заголовка, то несколько раз вы получите сообщение «предупреждение, подобное уже отправленному», чтобы решить, что не эхо или печать перед отправкой или вы можете просто использовать die() или exit() после функции заголовка.

2. Без заголовка

<?php 
    echo "<script>location.href='target-page.php';</script>";
?>

здесь вы не столкнетесь с какой-либо проблемой

3. Использование функции заголовка с ob_start() и ob_end_flush()

<?php
ob_start(); //this should be first line of your page
header('Location: target-page.php');
ob_end_flush(); //this should be last line of your page
?>
58
ответ дан Juned Ansari 21 August 2018 в 04:41
поделиться

Мы можем сделать двумя способами

  1. , когда пользователь перейдет на https://bskud.com/PINCODE/BIHAR/index.php , затем перенаправляется на https://bskud.com/PINCODE/BIHAR.php

ниже кода php

<?php header("Location: https://bskud.com/PINCODE/BIHAR.php"); exit; ?>

Сохранить выше кода в https://bskud.com/PINCODE/BIHAR/index.php

2.Когда любое условие true, то перенаправление на другую страницу

<?php  $myVar = "bskud";   if ($myVar == "bskud") { ?>  <script> window.location.href="https://bskud.com";  </script> <?php  } else {  echo "<b>Check Website Name Again</b>"; } ?>

`

3
ответ дан Kavita Sharma 21 August 2018 в 04:41
поделиться
  • 1
    Что это? Пожалуйста, не используйте ссылки на свой собственный сайт. Второй пример использует javascript redirect, а не функцию PHP header(). – Scriptman 18 January 2018 в 10:51

Многие из этих ответов верны, но они предполагают, что у вас есть абсолютный URL-адрес, что может и не быть. Если вы хотите использовать относительный URL-адрес и сгенерировать остальные, вы можете сделать что-то вроде этого ...

$url = 'http://' . $_SERVER['HTTP_HOST'];            // Get the server
$url .= rtrim(dirname($_SERVER['PHP_SELF']), '/\\'); // Get the current directory
$url .= '/your-relative/path-goes/here/';            // <-- Your relative path
header('Location: ' . $url, true, 302);              // Use either 301 or 302
18
ответ дан Luke 21 August 2018 в 04:41
поделиться

Большинство этих ответов забывают о очень важном шаге!

header("Location: myOtherPage.php");
die();

Оставив эту жизненно важную вторую строку, вы увидите, что вы попали в The Daily WTF . Проблема в том, что браузеру нет , чтобы уважать заголовки, возвращаемые вашей страницей, поэтому при игнорировании заголовков остальная часть страницы будет выполнена без перенаправления.

49
ответ дан nickf 21 August 2018 в 04:41
поделиться
  • 1
    Что можно сказать о том, чтобы дать пользователю некоторый результат, прежде чем убить скрипт? Знаешь, люди любят знать, что происходит ... – Strae 20 April 2009 в 16:50
  • 2
    вы предполагаете, что сценарий не имеет ничего общего, кроме перенаправления. Что может быть неверно. – vartec 20 April 2009 в 18:11
  • 3
    @DaNieL: измените его на ум («Прекратите игнорировать мои заголовки!») – nickf 21 April 2009 в 01:56
  • 4
    Мне понравилось это простое объяснение die();, которое вы дали - если вы этого не сделаете, пользователь может увидеть полную страницу на мгновение, если вы ее используете; пользователь будет перенаправлен, и никакая временная ошибка содержимого не покажет + 1 – TheBlackBenzKid 2 June 2015 в 05:46
  • 5
    Возможно, что полезная активность происходит после отправки заголовка, активность, которая ничего не отправляет браузеру, но регистрирует действие или завершает транзакции записи. По этой причине потребность в die / exit зависит от сценария. – DanAllen 16 November 2017 в 02:03
<?php 
header('Location: redirectpage.php');
header('Location: redirectpage.php');exit();
echo "<script>location.href='redirectpage.php';</script>";
?>

Это регулярное и нормальное перенаправление PHP, но вы можете перенаправить страницу с несколькими секундами ниже кода:

<?php
header('refresh:5;url=redirectpage.php '); //Note: here 5 means 5 seconds wait for redirect.
?>
7
ответ дан Obaidul Haque 21 August 2018 в 04:41
поделиться

Существует несколько способов сделать это, но если вы предпочитаете php, я бы рекомендовал использовать функцию header().

В основном

$your_target_url = “www.example.com/index.php”;
header(“Location : $your_target_url”);
exit();

Если вы хотите отбросить его на носу, лучше использовать его в функциях, таким образом, вы сможете добавить в него аутентификации и другие проверочные элементы.

Давайте попробуем, проверив level.

Итак, предположим, что вы сохранили уровень полномочий пользователя в сеансе с именем u_auth.

В function.php

<?php

function authRedirect($get_auth_level, $required_level, $if_fail_link = “www.example.com/index.php”){
    if($get_auth_level != $required_level){
        header(location : $if_fail_link);
        return false;
        exit();
    }else{
        return true;
    }
 }

 . . . 

вы Затем вызывается функция для каждой страницы, которую вы хотите аутентифицировать.

Как в page.php или на любой другой странице.

<?php

// page.php

require “function.php”

authRedirect($_SESSION[‘u_auth’], 5);  // redirects to www.example.com/index.php if the user isn’t auth level 5
authRedirect($_SESSION[‘u_auth’], 4);  // redirects to www.example.com/index.php if the user isn’t auth level 4
authRedirect($_SESSION[‘u_auth’], 2, “www.someotherplace.com/somepage.php”);  // redirects to www.someotherplace.com/somepage.php if the user isn’t auth level 2


. . . 

Надеюсь, вы найдете некоторые из содержание полезно

Ссылки;

1
ответ дан Pyr James 21 August 2018 в 04:41
поделиться

Лучший способ перенаправления с PHP - это следующий код ...

 header("Location: /index.php");

Убедитесь, что код не будет работать после

header("Location: /index.php");

Все коды должны быть выполнены перед указанной строкой.

Предположим,

Случай 1:

echo "I am a web developer";
header("Location: /index.php");

Он будет правильно перенаправлен к местоположению (index.php).

Случай 2:

return $something;
header("Location: /index.php");

Вышеприведенный код не будет перенаправлен на местоположение (index.php).

Надеюсь, это ясно.

5
ответ дан sabuz 21 August 2018 в 04:41
поделиться
  • 1
    Уже есть ответ, который содержит 1085, содержащий информацию, которую вы предоставляете, и многое другое. – Patrick Hund 9 April 2017 в 09:00
[Д0] 1. Использование функции заголовка in-build php

a) Простое перенаправление без параметров

<?php

   header('Location: index.php');

?>

b) Перенаправление с параметрами GET

<?php

      $id = 2;

      header("Location: index.php?id=$id&msg=succesfully redirect");

  ?>

2. Перенаправление с помощью javascript в php

a) Простое перенаправление без параметров

<?php 

     echo "<script>location.href='index.php';</script>";

 ?>

b) Перенаправление с параметрами GET

<?php 

     $id = 2;

     echo "<script>location.href='index.php?id=$id&msg=succesfully redirect';</script>";

   ?>
0
ответ дан Shaan Ansari 21 August 2018 в 04:41
поделиться

Вы можете попытаться использовать функцию заголовка php для перенаправления. Вы захотите установить выходной буфер, чтобы ваш браузер не выдавал предупреждение о переадресации на экран.

ob_start();
header("Location: ".$website);
ob_end_flush();
1
ответ дан Shawn 21 August 2018 в 04:41
поделиться
  • 1
    exit () следует использовать сразу после заголовка (). Кроме того, буферизация автоматически включена по умолчанию в течение некоторого времени. – EKanadily 17 February 2017 в 08:07

Чтобы перенаправить посетителя на другую страницу (особенно полезно в условном цикле), просто используйте следующий код:

<?php 
header('Location: mypage.php'); 
?>

В этом случае mypage.php является адресом страницы, на которую вы хотите перенаправить посетителей. Этот адрес может быть абсолютным и может также включать параметры в этом формате: mypage.php?param1=val1¶m2=val2)

Относительный / абсолютный путь

При работе с относительными или абсолютными путями, идеально выбрать абсолютный путь от корня сервера (DOCUMENT_ROOT). Используйте следующий формат:

<?php 
header('Location: /directory/mypage.php'); 
?>

Если когда-либо целевая страница находится на другом сервере, вы включаете полный URL-адрес:

<?php 
header('Location: http://www.ccm.net/forum/'); 
?> 

Заголовки HTTP

Согласно протоколу HTTP, HTTP-заголовки должны быть отправлены before любым типом контента. Это означает, что перед заголовком никогда не нужно отправлять символы, даже пустое пространство!

Временные / постоянные переадресации

По умолчанию тип перенаправления, представленный выше, является временным. Это означает, что поисковые системы, такие как Google, не будут учитывать перенаправление при индексировании.

Если вы хотите уведомить поисковые системы о том, что страница была постоянно перемещена в другое место, используйте следующий код:

<? 
header('Status: 301 Moved Permanently', false, 301); 
header('Location: new_address'); 
?>

Например, эта страница имеет следующий код :

<? 
header('Status: 301 Moved Permanently', false, 301); 
header('Location: /pc/imprimante.php3'); 
exit(); 
?>

Когда вы нажимаете на ссылку выше, вы автоматически перенаправляетесь на эту страницу. Кроме того, это постоянное перенаправление (статус: 301 перемещен навсегда). Итак, если вы введете первый URL-адрес в Google, вы автоматически перенаправляетесь на вторую, перенаправленную ссылку.

Интерпретация кода PHP

Код PHP, расположенный после заголовка (), будет интерпретироваться сервером, даже если посетитель переместится на адрес, указанный в перенаправлении. В большинстве случаев это означает, что вам нужен метод, чтобы следовать функции header() функции exit(), чтобы уменьшить нагрузку на сервер:

<? 
header('Status: 301 Moved Permanently', false, 301); 
header('Location: address'); 
exit(); 
?>
4
ответ дан Star 21 August 2018 в 04:41
поделиться

Используйте header() функцию для отправки HTTP Location header :

header('Location: '.$newURL);

Вопреки мнению некоторых, die() ничего не имеет делать с перенаправлением. Используйте его только в том случае, если вы хотите перенаправить вместо обычного выполнения.

example.php:

<?php 
header('Location: static.html');
$fh = fopen('/tmp/track.txt','a');
fwrite($fh, $_SERVER['REMOTE_ADDR'].' '.date('c')."\n");
fclose($fh);
?>

Результат или 3 исполнения:

bart@hal9k:~> cat /tmp/track.txt
127.0.0.1 2009-04-21T09:50:02+02:00
127.0.0.1 2009-04-21T09:50:05+02:00
127.0.0.1 2009-04-21T09:50:08+02:00

Возобновление & mdash; обязательным die() / exit() является некоторая городская легенда, которая не имеет никакого отношения к фактическому PHP. Не имеет никакого отношения к клиенту, «уважающему» Location: заголовок. Отправка заголовка не останавливает выполнение PHP, независимо от используемого клиента.

79
ответ дан vartec 21 August 2018 в 04:41
поделиться
  • 1
    Документация? :) – Paolo Bergantino 20 April 2009 в 15:16
  • 2
    die () или exit () для клиентов, которые не уважают «Местоположение: ...» заголовок – clawr 21 April 2009 в 01:59
  • 3
    @clawr: Нет, exit() заключается в том, чтобы страница не отображала оставшееся содержимое (подумайте о закрытых страницах). vartec прав, он не имеет ничего общего с заголовком HTTP-местоположения , и вам не нужно exit. Я решил включить его в свой ответ, потому что для тех, кто не знает, как сделать перенаправление simple , можно также играть безопасно, а не выполнять простой, но решающий шаг, в состоянии использовать расширенный контроль процесса. – Alix Axel 5 June 2013 в 18:24
  • 4
    Но браузеры, которые уважают заголовок, покидают страницу и закрывают соединение, пока ваш скрипт все еще выполняется. Это абсолютно плохо. PHP будет работать со сценарием в течение некоторого времени (поэтому ваш код выполняется), но может прерывать его случайным образом в середине исполнения, оставляя вещи сломанными. Вызов ignore_user_abort () предотвратит это, но, честно говоря, это не стоит. Просто продолжайте писать свои материалы для написания HTML (хотя, вероятно, бесполезно), но не делайте записи, которые записываются на диск или базу данных после заголовка («Местоположение:»); Пишите на диск перед перенаправлением, если это возможно. [Также: url должен быть абсолютным.] – FrancescoMM 21 March 2017 в 18:45

вы можете использовать некоторые java-скриптовые методы, например ниже

 1)self.location="http://www.example.com/index.php";

 2)window.location.href="http://www.example.com/index.php";

 3)document.location.href = 'http://www.example.com/index.php';  

 4)window.location.replace("http://www.example.com/index.php");
8
ответ дан Vikram Pote 21 August 2018 в 04:41
поделиться
  • 1
    Javascript работает на клиенте, который может быть или не быть тем, что вы ищете. – chharvey 7 August 2015 в 19:35

вы можете обновить заголовок в заголовке php:

2
ответ дан Zack Marrapese 21 August 2018 в 04:41
поделиться
93
ответ дан Alix Axel 1 November 2018 в 00:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: