|
|
|
| index.php
<?include "a.php";include "b.php";?>
|
Я имею доступ только к файлу a.php и мне надо там выводить в браузер информацию. Ни к index.php, ни к b.php у меня доступа нет. Как мне сделать так, чтобы в случае посылки header в b.php или в index.php после инклуда a.php - у человека не вылезала ошибка? | |
|
|
|
|
|
|
|
для: Shorr Kan
(13.10.2005 в 12:32)
| | Ничего не выводить в a.php | |
|
|
|
|
|
|
|
для: cheops
(13.10.2005 в 12:44)
| | Но я где-то у вас же читал, что есть какая-то дирректива, позволяющая работать с заголовками после выдачи в браузер.
А как вариант - <?include "a.php";include "b.php";include "c.php";?>
и я буду иметь доступ к a.php и c.php - в этом случае ведь можно сыграть буферизацией и в случае есть человек в b.php в самом конце даст команду exit; , то тогда не сработает ВЕСЬ вывод. В том числе и содержимого b.php - я прав?
Перевожу этот сумбур:
Берем все в буфер.
выводим все в a.php
пользователь все выводит в b.php
отправляем и очищаем буфер в c.php .
Человек управляет только index.php и b.php , но инклуды a.php и c.php он убрать не может, так как они из php.ini присоединяются.
При таком исполнении - человек не сможет отключить выдачу a.php, но выдавать index.php и b.php ? Просто дирректирве auto_append_file можно помешать командой exit; , но если ВСЕ берется в буффер - помешать exit'ом будет нельзя, я прав ?
То есть, в a.php будет:
<?ob_start();
print "aaaaaaa";
?>
|
в c.php
И если каким-то макаром пользователь не даст загрузиться c.php, то весь его сайт не выведется. Так? | |
|
|
|
|
|
|
|
для: Shorr Kan
(13.10.2005 в 13:24)
| | Хм... или я неверно применил буферизацию? | |
|
|
|
|
|
|
|
для: Shorr Kan
(13.10.2005 в 16:28)
| | Чтобы ею воспользоваться, надо в index.php написать что-то типа
<?php
ob_start();
include "b.php";
//---------------
$buffer=ob_get_contents();
ob_end_flush();
//---------------
include "a.php";
?>
|
То, что между чертами, можно с тем же успехом прописать и в a.php. Но все равно, в index.php надо что-то писать. | |
|
|
|
|
|
|
|
для: Киналь
(13.10.2005 в 19:01)
| | Кажется, вы меня не так поняли. Я говорил о том, что есть auto_prepend_file - в нем я и могу делать что угодно. Это и есть a.php, так сказать. И аналогично, но не наверху, а внизу - b.php. Все, в остальные файлы я не имею права писать. И потом - какая разница, где писать - в индексе или в файле, который индекс инклудит ? | |
|
|
|
|
|
|
|
для: Shorr Kan
(13.10.2005 в 13:24)
| | Да такие функции имееются, но в вашем случае недоступны функции index.php и b.php, а их следует использовать в index.php... | |
|
|
|
|
|
|
|
для: cheops
(13.10.2005 в 22:56)
| | ; Использование буферизации вывода. Позволяет посылать заголовки (включая
; Cookies) после вывода текста. Правда, это происходит ценой
; незначительного замедления вывода.
; Вы можете разрешить буферизацию во время выполнения сценария путем
; вызова функций буферизации, или же включить ее по умолчанию с помощью
; следующей директивы:
output_buffering = Off
а это не решит проблему?.. | |
|
|
|
|
|
|
|
для: Shorr Kan
(14.10.2005 в 01:17)
| | А ? | |
|
|
|
|
|
|
|
для: Shorr Kan
(14.10.2005 в 01:17)
| | Решит, но я так понял что настройки стороннего сервера не доступны? Т.е. можно буфферизовать вывод, но там где index.php, а не a.php | |
|
|
|
|
|
|
|
для: cheops
(14.10.2005 в 14:04)
| | Не-не-не, это все один и тот же сервер, просто я не имею права вмешиваться в index.php серединную его часть.. Могу работать только с a.php, c.php и... с основным php.ini . | |
|
|
|
|
|
|
|
для: Shorr Kan
(14.10.2005 в 14:09)
| | Тогда включайте буффер
это действительно должно помочь. | |
|
|
|
|
|
|
|
для: cheops
(14.10.2005 в 14:52)
| | Есть! Помогло. Вопрос - нет ли каких-то скрытых минусов? Опасности, и т.д.? | |
|
|
|
|
|
|
|
для: Shorr Kan
(14.10.2005 в 15:03)
| | Нет, никаких неприятностей быть не должно, даже данные между сервером и клиентом пошустрее должны передаваться... | |
|
|
|