PHP перенаправление страницы

Может ли PHP сделать вызов перенаправления после выполнения функции? Я создаю функцию, по завершении которой я хочу перенаправить ее в файл, расположенный в той же корневой папке. Это можно сделать?

 if {
      //i am using echo here
 }

 else if ($_SESSION['qnum'] > 10) { 
            session_destroy();
            echo "Some error occured.";
            //redirect to user.php
        }
вопрос задан 21.01.2010
amit
3599 репутация

15 ответов


  • 242 рейтинг

    Да, вы бы использовали функцию заголовка 375984494 .

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

    Рекомендуется вызывать exit() сразу после слов, чтобы код ниже не выполнялся.

    Также из документации:

    Помните, что header () должна вызываться перед отправкой любого фактического вывода, либо обычными HTML-тегами, пустыми строками в файле, либо из PHP. Это очень распространенная ошибка - читать код с помощью функций include () или require (), или другой функции доступа к файлу, и иметь пробелы или пустые строки, которые выводятся до вызова header (). Та же проблема существует при использовании одного файла PHP / HTML.

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

    ответ дан bkildow, с репутацией 4273, 21.01.2010
  • 45 рейтинг

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

    // $url should be an absolute url
    function redirect($url){
        if (headers_sent()){
          die('
    ');
        }else{
          header('Location: ' . $url);
          die();
        }    
    }
    

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

    ответ дан brianreavis, с репутацией 9612, 21.01.2010
  • 11 рейтинг

    Простой способ использования:

      echo '
    ';
    
    ответ дан CrownFord, с репутацией 199, 4.07.2015
  • 10 рейтинг
       $url='the/url/you/want/to/go';
       echo '
    ';
    

    это работает для меня нормально.

    ответ дан Thusitha Sumanadasa, с репутацией 1092, 12.06.2013
  • 7 рейтинг
    header( "Location: http://www.domain.com/user.php" );
    

    Но вы не можете сначала сделать эхо, а затем перенаправить.

    ответ дан code-zoop, с репутацией 4755, 21.01.2010
  • 3 рейтинг
     "value"), true, HTTP_REDIRECT_PERM);
    
    ?>
    
    ответ дан user3164291, с репутацией 36, 4.08.2015
  • 0 рейтинг

    Вы можете использовать этот код для перенаправления в php

    
    
    ответ дан Mahdiyah Al-kaff, с репутацией 1, 15.12.2013
  • 0 рейтинг

    Да.

    По сути, пока ничего не выводится, вы можете делать все, что захотите (убить сеанс, удалить куки пользователя, вычислить цифры от Pi до n и т. Д. ) до выдачи заголовка местоположения.

    ответ дан John Parker, с репутацией 47827, 21.01.2010
  • 0 рейтинг

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

     
    ответ дан nixxx, с репутацией 81, 26.05.2016
  • 0 рейтинг

    на самом деле, я нашел это в коде CMS на основе php.

    редирект ('? module = blog ', 0);

    , так что это возможно. В этом случае вы залогинены на уровне администратора, поэтому никакого вреда нет, фол (полагаю). первая часть это URL, а вторая? Я не могу найти документацию для того, для чего предназначено целое число, но я предполагаю, что это либо время, либо данные, поскольку они прикреплены к форме.

    Я тоже хотел обновить страницу после события, и размещение в лучшем месте сработало хорошо.

    ответ дан llothcat, с репутацией 21, 13.07.2013
  • 0 рейтинг

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

    JavaScript является альтернативой, если вы уже отправили содержимое файла.

    ответ дан ServAce85, с репутацией 931, 22.11.2011
  • 0 рейтинг

    Как уже упоминалось nix , добавление ob_start() перед добавлением любого кода php предотвратит ошибку уже отправленных заголовков.

    у меня сработало

    Код ниже также работает. Но он сначала загружает страницу, а затем перенаправляет, когда я ее использую.

    echo '
    ';
    
    ответ дан user2634873, с репутацией 12, 8.08.2017
  • 0 рейтинг

    Я, вероятно, установил бы сообщение как переменную сеанса, перенаправил бы пользователя на другую страницу, которая отображает сообщение и уничтожил бы сеанс.

    ответ дан Leprosy, с репутацией 569, 21.01.2010
  • -1 рейтинг
    ответ дан does_not_exist, с репутацией , 21.01.2010
  • -3 рейтинг

    Я ищу об этом, и я нахожу связанный этот ответ в

    https: // stackoverflow. ru / questions / 13539752 / redirect-function / 13539808

    function redirect_url($path)
    {
      header("location:".$path);
      exit;
    }
    
    ответ дан user1972007, с репутацией 319, 26.11.2012