• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

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

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

    Запись на курс до 25 апреля. Получить промодоступ ...

Include из функций

  • Автор темы Holger Dee Assuran
  • Дата начала
H

Holger Dee Assuran

Суть:
У меня есть довольно большой объем библиотек функций. При работе с конкретной страницей используются лишь несколько. Была мысля, для разгрузки сервера подгружать только библиотеки необходимые в данный момент. А для сокращения кода сделать это с помощью функции.
Код:
function LoadObject($objectpath){
global $DR;
if (!$objectpath){
echo "<html>\n<head>\n\t<title>Критическая ошибка</title>\n</head>\n<body>\n";
echo "\t<font color='red'>\n\t\t<h1>Критическая ошибка!</h1>\n\t\t";
echo "<p>Не задано имя объекта! Продолжение работы не возможно!</p>\n\t</font>\n</body>\n</html>";
exit;
}
@ $inc=include("$DR/../fns/$objectpath.obj.php");
if (!$inc){
echo "<html>\n<head>\n\t<title>Критическая ошибка</title>\n</head>\n<body>\n";
echo "\t<font color='red'>\n\t\t<h1>Критическая ошибка!</h1>\n\t\t";
echo "<p>Невозможно загрузить объект! Продолжение работы не возможно!</p>\n\t</font>\n</body>\n</html>";
exit;
}
}
Эта функция должна вызываться на странице перед применением функций какой-либо библиотеки и включать ее в код страницы. Беда в том, что include будет виден только внутри функции, а нужно чтобы вставка шла в глобальный контекст.
 
G

GOsha

Круче, если передавать массив, с именами подключаемых объектов.
Код:
$objarr = array(graph,text,dlg,tambourine);

LoadObj($objarr);
Ну а там разбирать уже массив. - Это чтобы не вызывать ее 10 раз. А вообще ваша задумка описана Д. КОтеровым в книге PHP4. Там она обзывается библиотекарь.

А еще хорошо бы, наконец, начать писать классы.

А если в функции написать return $inc; - Тада она начнет возвращать инклуд.

А вообще она какая-то у вас извращенная. Не будет работать под register_globals = 'off'. Я бы посоветовал нарисовать все на бумажке, как и чего куда запрашиватся бут и что отдавать
 
M

maykoff

Если перенести всё в php5 , в классы - то можно пользовать __autoload()
Прописывается функция автозагрузки, и затребованный класс при его отсутствии передаётся параметром в эту функцию. Соответственно - в ней можно подключить скрипт с таким же именем

скрипт:
Код:
<?php
require('./include/classes/autoload.inc');

autoload.inc:
Код:
<?php
session_start();
function __autoload($class)
{
define('PATH',$_SERVER['DOCUMENT_ROOT']);
if(file_exists(PATH."/include/classes/{$class}.inc"))
{
include(PATH."/include/classes/{$class}.inc");
}
else
{
exit("<center><h1>{$class} NOT FOUND!");
}
}
?>
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!