Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: include - как выкрутиться?
 
 автор: Shorr Kan   (13.10.2005 в 12:32)   письмо автору
 
 

index.php

<?include "a.php";include "b.php";?>


Я имею доступ только к файлу a.php и мне надо там выводить в браузер информацию. Ни к index.php, ни к b.php у меня доступа нет. Как мне сделать так, чтобы в случае посылки header в b.php или в index.php после инклуда a.php - у человека не вылезала ошибка?

   
 
 автор: cheops   (13.10.2005 в 12:44)   письмо автору
 
   для: Shorr Kan   (13.10.2005 в 12:32)
 

Ничего не выводить в a.php

   
 
 автор: Shorr Kan   (13.10.2005 в 13:24)   письмо автору
 
   для: 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

<?ob_end_flush();?>


И если каким-то макаром пользователь не даст загрузиться c.php, то весь его сайт не выведется. Так?

   
 
 автор: Shorr Kan   (13.10.2005 в 16:28)   письмо автору
 
   для: Shorr Kan   (13.10.2005 в 13:24)
 

Хм... или я неверно применил буферизацию?

   
 
 автор: Киналь   (13.10.2005 в 19:01)   письмо автору
 
   для: 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 надо что-то писать.

   
 
 автор: Shorr Kan   (13.10.2005 в 21:01)   письмо автору
 
   для: Киналь   (13.10.2005 в 19:01)
 

Кажется, вы меня не так поняли. Я говорил о том, что есть auto_prepend_file - в нем я и могу делать что угодно. Это и есть a.php, так сказать. И аналогично, но не наверху, а внизу - b.php. Все, в остальные файлы я не имею права писать. И потом - какая разница, где писать - в индексе или в файле, который индекс инклудит ?

   
 
 автор: cheops   (13.10.2005 в 22:56)   письмо автору
 
   для: Shorr Kan   (13.10.2005 в 13:24)
 

Да такие функции имееются, но в вашем случае недоступны функции index.php и b.php, а их следует использовать в index.php...

   
 
 автор: Shorr Kan   (14.10.2005 в 01:17)   письмо автору
 
   для: cheops   (13.10.2005 в 22:56)
 

; Использование буферизации вывода. Позволяет посылать заголовки (включая
; Cookies) после вывода текста. Правда, это происходит ценой
; незначительного замедления вывода.
; Вы можете разрешить буферизацию во время выполнения сценария путем
; вызова функций буферизации, или же включить ее по умолчанию с помощью
; следующей директивы:
output_buffering = Off

а это не решит проблему?..

   
 
 автор: Shorr Kan   (14.10.2005 в 14:01)   письмо автору
 
   для: Shorr Kan   (14.10.2005 в 01:17)
 

А ?

   
 
 автор: cheops   (14.10.2005 в 14:04)   письмо автору
 
   для: Shorr Kan   (14.10.2005 в 01:17)
 

Решит, но я так понял что настройки стороннего сервера не доступны? Т.е. можно буфферизовать вывод, но там где index.php, а не a.php

   
 
 автор: Shorr Kan   (14.10.2005 в 14:09)   письмо автору
 
   для: cheops   (14.10.2005 в 14:04)
 

Не-не-не, это все один и тот же сервер, просто я не имею права вмешиваться в index.php серединную его часть.. Могу работать только с a.php, c.php и... с основным php.ini .

   
 
 автор: cheops   (14.10.2005 в 14:52)   письмо автору
 
   для: Shorr Kan   (14.10.2005 в 14:09)
 

Тогда включайте буффер
output_buffering = On

это действительно должно помочь.

   
 
 автор: Shorr Kan   (14.10.2005 в 15:03)   письмо автору
 
   для: cheops   (14.10.2005 в 14:52)
 

Есть! Помогло. Вопрос - нет ли каких-то скрытых минусов? Опасности, и т.д.?

   
 
 автор: cheops   (14.10.2005 в 16:14)   письмо автору
 
   для: Shorr Kan   (14.10.2005 в 15:03)
 

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

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования