Автор Тема: замена include на что то похожее  (Прочитано 5704 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
замена include на что то похожее
« : 02 Июля 2004, 16:19:37 »
ПРива
допустим у нас есть шаблон в котором мы заменяем какой либо место хотя бы с помошью str_replace на другие данные. Так вот мона ли заменить так чтобы вместо данных стравить скрипт
что то типо

$Objects = include("...");
str_replace("Тут был я", $Objects, $template);

????

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
замена include на что то похожее
« Ответ #1 : 02 Июля 2004, 16:24:59 »

str_replace
(\'тут был кто-то\',\'<?php include("...");?>\',$template);

это если я тебя правильно понял номер раз. а если номер два - то RTFM file_get_contents();

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #2 : 02 Июля 2004, 16:28:15 »
не мне именно надо через переменную
чтоб я мог указать разные файлы

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
замена include на что то похожее
« Ответ #3 : 02 Июля 2004, 16:31:44 »
А что тебе так мешает указать разные файлы? вместо "..." подставь $file. Или "религия не позволяет"? :)

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #4 : 02 Июля 2004, 16:37:32 »
нет не позволяет
т.к.
мне именно надо присвоить все что в файле переменной а потом уже ею заменить место в шаблоне

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
замена include на что то похожее
« Ответ #5 : 02 Июля 2004, 16:38:27 »
#$%
Цитировать
RTFM file_get_contents();

[p]file_get_contents[/p]

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #6 : 02 Июля 2004, 16:47:06 »
я короче написал

$Objects = file_get_contents("file.php");
str_replace("Тут был я", $Objects, $template);

файл file.php
echo "1111";
?>

и ничего не выводит

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #7 : 02 Июля 2004, 17:10:44 »
короче привожу часть кода
$template = LoadTemplate($PageArray[\'ModelID\']);
$FullTemplate = $template[\'Template\'];
eval("echo \\"".$FullTemplate."\\";");

function LoadTemplate($PageModelID) {
   global $PageID, $template;

   $SQL = "SELECT * FROM `models` WHERE `ModelID` = \'".$PageModelID."\';";
   $Result = mysql_query($SQL);
   $template = mysql_fetch_array($Result);
   mysql_free_result($Result);

   $template[\'Template\'] = str_replace(\'%Header\', $template[\'Template\'], $template[\'Template\']);
   $template[\'CountPlaces\'] = preg_match_all(\'/##place[0-9]+##/\', $template[\'Template\'], $W);

   for ($i=0; $i < $template[\'CountPlaces\']; $i++) {
      $TemplateWithObjects[] = CountTemplates($PageModelID, $i);
      $template[\'Template\']= str_replace("##place".($i+1)."##", "`".$TemplateWithObjects[$i]."`", $template[\'Template\']);
   }
   return $template;
}

function CountTemplates($PageModelID, $i) {
   global $PageID;

   $SQL2 = "SELECT RazdelID, TemplateID, ModulID
         FROM model_places
         WHERE PageID = ".$PageID." AND ModelID = ".$PageModelID." AND PlaceID = ".$i.";";
   $Result2 = mysql_query($SQL2);
   $PlaceArray = DBResultToArray($Result2);

   for ($y=0; $y < count($PlaceArray); $y++) {
      if ($PlaceArray[$y][\'TemplateID\']) {
         $Objects = CountObjects($PlaceArray[$y][\'RazdelID\']);
      } else if ($PlaceArray[$y][\'ModulID\']) {
         $SQL = "SELECT IncludeUrl FROM modules WHERE ModuleID = \'".$PlaceArray[$y][\'ModulID\']."\';";
         $Result = mysql_query($SQL);
         list ($IncludeUrl) = mysql_fetch_row($Result);
         mysql_free_result($Result);
         
         $Objects == ????????????????????????????
      }
      $TemplateWithObjects .= $Objects;
   }
   return $TemplateWithObjects;
}

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
замена include на что то похожее
« Ответ #8 : 02 Июля 2004, 17:31:23 »
[off]
Цитировать
stanlee: eval("echo \\"".$FullTemplate."\\";");

Зачем? Это ж потенциальная дырка! Кто мешает просто так вывести?[/off]
LJ: Backslashed life (rss)

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #9 : 02 Июля 2004, 17:33:45 »
Там еще куча подшаблонов и без eval просто не обойтись - вы что думаете - мне так просто захотелось

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #10 : 02 Июля 2004, 18:23:23 »
Цитировать
Там еще куча подшаблонов и без eval просто не обойтись

мы думаем, что ты безмозгло спроектировал свои шаблоны.
Шаблон служит КАК РАЗ для РАЗДЕЛЕНИЯ кода и оформления.
а ты в своих шаблонах их СОЕДИНИЛ и получилось уродство

Оффлайн CGVictor

  • теперь местный
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2511
  • +0/-0
  • 2
    • Просмотр профиля
    • http://cg.net.ru
замена include на что то похожее
« Ответ #11 : 02 Июля 2004, 21:13:01 »
Цитировать
stanlee:
Там еще куча подшаблонов и без eval просто не обойтись - вы что думаете - мне так просто захотелось

Согласен, первое что приходит в голову - eval. Но сделать им - сделать глупость.

Если хочется в шаблоне указывать вложенные, тогда, как вариант, используй еще один формат своих подстановок (%EXTERNALTEMPLATE FILE=filename или вроде того), чтобы самому открывать их в скрипте и подставлять в шаблон.

Если еще и код хочется - ну, тут уж думай сам. Все от кода зависит.
LJ: Backslashed life (rss)

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #12 : 05 Июля 2004, 09:09:31 »
Блин вы все такие простые - мне нужно чтобы в шаблоне и код задействовался а тута без eval мало что получится
да и забейте вы про eval - я же не про то спрашивал

а на мой вопрос так никто и не дал ответа

Оффлайн stanlee

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 215
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #13 : 05 Июля 2004, 10:25:19 »
методом проб и ошибок я тута кое что намутил - посмотрим что вы подскажите

скажите пожалуйста почему вы так против eval -?
я не слышал ничего негативного об этой функции
если можно дайте ссылочку почитать что так сильно вас пугает

да и если это дыра - почему ее еще не закрыли - свежая что ли?

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
замена include на что то похожее
« Ответ #14 : 05 Июля 2004, 12:55:08 »
ответ, почему нельзя использовать евал - дан.
это дыра, но не в коде, а в голове.
тема закрыта

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28