Перевод кода: ASP.NET Server.Transfer в PHP

Как бы я сделал это в PHP?

Server.Transfer("/index.aspx")

(добавьте ';' для C#)

Обновлено:

Важно, чтобы URL-адрес оставался прежним; ну знаете, для Google. В моей ситуации у нас есть куча файлов .html, которые мы хотим передать, и для клиента важно, чтобы адресная строка не менялась.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
3
0
3 876
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Самый простой способ - использовать переадресацию header.

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

Редактировать: Или вы можете просто включить файл и выйти, если не хотите использовать заголовки HTTP.

На самом деле это не то же самое, что Server.Transfer, поскольку Server.Transfer не меняет заголовок.

Filip Ekberg 23.01.2009 01:08

Кстати, я использую Request.Transfer (url); в ASPNET единственный эквивалент в PHP - выполнять любую обработку, которую вы собираетесь делать, не записывая ничего в заголовки или тело, а затем вызывая header ('Location: url');

Mike C. 22.06.2011 01:31
Ответ принят как подходящий

Насколько я знаю, у PHP нет реальной возможности передачи, но вы можете получить точно такой же эффект, используя include () или require (), например:

require_once('/index.aspx");

Я действительно разобрался с этим и собирался сам ответить на этот вопрос, но вы меня опередили.

jrcs3 23.01.2009 01:48

Require_once будет более подходящим, поскольку вы не будете добавлять никаких других операторов require, если вы хотите, чтобы это работало как Server.Transfer. Кроме того, по крайней мере, вам нужно добавить exit или die в конец вашего оператора, иначе это просто оператор PHP require, а не Server.Transfer

TroySteven 08.04.2019 19:50

Использование require будет похоже на server.transfer, но в некоторых случаях его поведение будет немного отличаться. Например, когда вывод уже был отправлен в браузер и используется require, вывод, уже отправленный в браузер, будет показан, а также путь, который вам требуется.

Лучший способ имитировать C# / ASP.NET Server.Transfer () - правильно настроить буферизацию вывода PHP, а затем использовать следующую функцию, которую я написал.

function serverTransfer($path) { 
    if (ob_get_length() > 0) { 
        ob_end_clean(); 
    }
    require_once($path); 
    exit; 
}

Настроить буферизацию вывода так же просто, как использовать ob_start () в качестве первой строки, вызываемой вашим приложением PHP. Более подробную информацию можно найти здесь: http://php.net/manual/en/function.ob-start.php

ASP.NET включает буферизацию вывода по умолчанию, поэтому это не обязательно при использовании Server.Transfer ();

Другие вопросы по теме