Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движок для сайта, Пишем с нуля 
:(
    Опции темы
Всемогущий
Дата 3.5.2007, 06:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



Цитата(Alexey007 @  2.5.2007,  23:50 Найти цитируемый пост)
мне {PAGE} надо заменить фнукцией?? 

Код

<?php
function alert(){return '!!!!!!!!!!!!!!!!!!!!';}
function big(){return 'привет';}


$phrase  = "{|tegone|}здесь может быть любойтекст {|tegtwo|}";
$healthy = array('{|tegone|}','{|tegtwo|}', "и так далее");
$yummy   = array(big(), alert(), "ice cream");

echo $newphrase = str_replace($healthy, $yummy, $phrase);

?>


так?


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Alexey007
Дата 3.5.2007, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: 1
Всего: 1



Всемогущий, уже ближе к истине, но мнемного не то...
Представь, если у меня не один десяток тегов {}, то если я добавлю ещё какой-нибудь, то мне придется прописывать его в array и на то что заменять тоже...
Есть мысль, только как её осуществить?
Дело в следующем. Такой метод будет заменять сами функции(их скорее всего слишком много не будет), а класс будет саменять только переменные.
Опосаюсь за безопасность функции Parse, т.к. там идут глобальные переменные. Прошу помочь разобратьсяsmile
Код

  class template {

    var $template;

    # очистка буфера
    function Clear() {
     $this->template = "";
    }

    # Чтение буфера
    function Read() {
     $tmp = $this->template;
     $this->Clear();
     return $tmp;
    }

    //Вывод шаблона
    function Show() {
     print($this->Read());
    }

    // Подключение текстового файла
    function SendFile($filename) {
        if(file_exists($filename)) {
            $this->template .= join('',file($filename));
        }
    }

    //Замена...
    function Parse() {
        reset($GLOBALS);
        while(list($name,$val) = each($GLOBALS)) {
            # выбираем только строки и числа
            if(is_string($val) OR is_int($val)) {
                $this->template = str_replace('{'.$name.'}',$val,$this->template);
             }
         }
    }

  }

P.S. о вариант хороший, мне понравилсяsmile
PM MAIL   Вверх
Всемогущий
Дата 3.5.2007, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



Цитата(Alexey007 @  3.5.2007,  16:00 Найти цитируемый пост)
Представь, если у меня не один десяток тегов {}, то если я добавлю ещё какой-нибудь, то мне придется прописывать его в array и на то что заменять тоже...

прописывать всё равно придёться.

пусть замен будут сотни...

Код

<?php
function alert(){return '!!!!!!!!!!!!!!!!!!!!';}
function big(){return 'привет';}
function big1(){return 'привет';}
function big11(){return 'привет';}
function big111(){return 'привет';}
function big1111(){return 'привет';}
function big11111(){return 'привет';}
function big111111(){return 'привет';}

$zamena['{|tegone|}']=alert();
$zamena['{|tegtwo|}']= big();
$zamena['{|teg100|}']= big1();
$zamena['{|teg110|}']= big11();
$zamena['{|teg111|}']= big111();
$zamena['{|teg101|}']= big1111();
$zamena['{|teg000|}']= big11111();
$zamena['{|teg001|}']= big111111();




$phrase  = "{|tegtwo|} здесь может быть любойтекст {|tegone|}";



echo $newphrase = str_replace(array_keys($zamena),array_values($zamena), $phrase);

?>





--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Alexey007
Дата 3.5.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: 1
Всего: 1



Всемогущий, спасибо,  с этим понятно.
Вот ещё штука: как разбить файл не по строчкам, а по какому-нибудь критерию?
Т.е. вот код:
Код

$file_open = fopen($file_path, "r");

fuction block{
//Тут функция(может массив?), которая разбивает переменную $file_open
//на несколько переменых, каждая из которых содержит текст, заключенный
//между тегами [BLOCK] и [/BLOCK], а затем эти переменные вставляются в шаблон (описано выше)
}


Примерное содержание файла:
Код

[BLOCK]
{text}
[/BLOCK]
[BLOCK]
{text}
[/BLOCK]


А код шаблона примерно такой:
Код

<table valign="top" border="0" width="100%" cellspacing="0" cellpadding="0">
  <tr>
    <td width="6" background="images/texttab_bg_l.gif"></td>
    <td valign="top" bgcolor="#F3F7FC">{TEXT}</td>
    <td width="6" background="images/texttab_bg_r.gif"></td>
  </tr>
</table>


+ Ко всему нужно делать проверку:
Если в файле нет таких тегов, то направлять в СОВЕРШЕННО другой шаблон

Это сообщение отредактировал(а) Alexey007 - 3.5.2007, 17:59
PM MAIL   Вверх
Vaulter
Дата 3.5.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



[code=php]
<?php
/*
Vaulter 25/12/06 07:33:08 Volgograd
[email protected]
$FreeBSD$
*/
/**page class file
 * very impotant thing
 * load template
 * process it among other filters
 * filters:
 * @access public
 * @author Vaulter 25/12/06 08:20:48
*/
//define('_HTMLVARSTART','<var>');//'{{';
//define('_HTMLVAREND','</var>');//'}}';
/* can we use #:
for example
a href='^someobject.somemethod[someparam,someparam]'
<title> 
in blocks i can use shortholders
<b><var>name</var></b><i><var>descr</var></i>
*/
ob_start();//will catch all out of ____ and print it AFTER 
define('_RESSLASH','/');//we will write as form/perms @see function valid()
 /**logic is not MVC and much more flexible for programmer :)
 * each @filter@ class just parse itown blocks in full text (agc by reference)
 *        
 */

/** class of page! 
*
*fucking abstract thing. what it shall do    but short API must remain:
*        $page->reports['name'] = 
*        via some universalis and
*        iBl();//can we realize it?
*        build('form') - for absolete build_forms()
*        build('form','someid')
*       

Это сообщение отредактировал(а) Vaulter - 3.5.2007, 22:07
PM MAIL WWW ICQ   Вверх
Alexey007
Дата 3.5.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: 1
Всего: 1



Vaulter, прости конешно, но при чем тут коды, которые ты написал? авторизация какая-то...
PM MAIL   Вверх
Vaulter
Дата 3.5.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: 6
Всего: 22



в кратце все просто
лежит 
html/default.html
Код

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title><block id='title' /></title>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <meta name="description" content="{{%meta.description%}}" />
    <meta name="keywords" content="{{%meta.keywords%}} />
    <meta name="author" content="Vaulter" />
    <link rel="stylesheet" type="text/css" href="css/gazeta.hm.css" />
</head>
<body>
    <div id='wrapper'>
        <div id='header' >
            header
        </div>
    
        <div id='innerwrapper'>
            <div id='left'>
                <h4>Главное меню</h4>
                <fieldset id='firsttab'><legend>Авторизация</legend>
                    <block id='mainmenu' src='mainmenu'/>
                </fieldset>
                <fieldset id='secondtab'><legend>Модули</legend>
                <block id='modulesmenu' ibl='module.menu'>
                    <a href='{{%url%}}'>{{%alias%}}</a><br />
                </block>
                </fieldset>
            </div>
            <div id='content'>    
                <block id='content' />
            </div>

        </div>
    </div>
        <div id='footer' title='здесь просто список сообщений системы, также можно сделать скажем, плавно открывающийся снизу страницы слой, в котором будут эти сообщения
        пока для простоты селект:'>
            <select style='width:100%' >
            <block id='sessmess' ibl='session.messages'>
                <option>{{%message%}}</option>
            </block>
            </select>
        </div>
</body>


ну и все это соответственно по
запросу index.html шевелится и живет smile

 smile 


--------------------
PM MAIL WWW ICQ   Вверх
Alexey007
Дата 3.5.2007, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: 1
Всего: 1



Vaulter,  а создать свою ветку форума можешь, вроде не новичок на форуме смотрю?

Тут идет создание движка сайта.. Пытаюсь его сделать Я! ну помогают мне конешноsmile
Так вот, обсуждается этот движок, а не какие иначе.

Модератор, удалите пожалуйста последние сообщения, корорые идут не по теме.
Дата 3.5.2007, 21:43
Дата 3.5.2007, 21:52
Дата 3.5.2007, 22:08
И это подредактируйте тоже, пожалуйста



Добавлено @ 22:19
Всемогущий, скажи пожалуйста, а если создать "шаблон" средствами замены str_replace, т.е. вручную записать все замены {****}, от этого производительность не изменится?

Или можно как-то по-другому сделать?
Или помоги пожалуйста решить вопрос о безопасности(я там в коде показал где-именно + описал в чем проблема)

Это сообщение отредактировал(а) Alexey007 - 3.5.2007, 22:21
PM MAIL   Вверх
Всемогущий
Дата 4.5.2007, 08:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



Цитата(Alexey007 @  3.5.2007,  19:45 Найти цитируемый пост)
Вот ещё штука: как разбить файл не по строчкам, а по какому-нибудь критерию?

зачем?


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Alexey007
Дата 4.5.2007, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: 1
Всего: 1



Всемогущий, Потому что вот так надо! каждый текст нужно вставить в отдельную таблицу... По дизайну...
PM MAIL   Вверх
Всемогущий
Дата 4.5.2007, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



Alexey007
Неужеле вы собираетесь хранить всю информацию в одно месте(одном файле)?

расскажите где оправдана такая схема?

Код

<?php

$string='[BLOCK]
{text}
[/BLOCK]
[BLOCK]
{text}
[/BLOCK]';
 preg_match_all("/(?<=\[BLOCK\]).+(?=\[\/BLOCK\])/sU", $string, $matches);
              print_r($matches);

?>


Добавлено через 1 минуту и 24 секунды
Цитата(Alexey007 @  4.5.2007,  13:00 Найти цитируемый пост)
Потому что вот так надо! 
 smile 



--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Alexey007
Дата 4.5.2007, 11:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: 1
Всего: 1



Всемогущий, вот ответ:
пример

Как видно, здесь на глабной странице есть 3 блока...
Но тут каждый текст хранится в отдельном файле.. а если редактору понадобиться создать ещё блок? он будет в тупике

Информацию ДАННОЙ страницы буду хранить в одном файле.
т.е. страница index.php, будет соответствовать index.txt, а не index1.txt; index2.txt; .....

А по поводу чтения файла, как наиболее безопасно?
PM MAIL   Вверх
Всемогущий
Дата 4.5.2007, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



для того и нужен шаблон
Цитата(Alexey007 @  3.5.2007,  19:45 Найти цитируемый пост)
Код

<table valign="top" border="0" width="100%" cellspacing="0" cellpadding="0">
 <tr>    
     <td width="6" background="images/texttab_bg_l.gif"></td>
     <td valign="top" bgcolor="#F3F7FC">{TEXT}</td>
     <td width="6" background="images/texttab_bg_r.gif"></td>
 </tr>
</table>

а я возьму и добавлю новый блок
Код

<table valign="top" border="0" width="100%" cellspacing="0" cellpadding="0">
 <tr>    
     <td width="6" background="images/texttab_bg_l.gif"></td>
     <td valign="top" bgcolor="#F3F7FC">{здесь будут новости}</td>
     <td width="6" background="images/texttab_bg_r.gif"></td>
 </tr>
  <tr>    
     <td width="6" background="images/texttab_bg_l.gif"></td>
     <td valign="top" bgcolor="#F3F7FC">{меню А}</td>
     <td width="6" background="images/texttab_bg_r.gif"></td>
 </tr>
</table>





--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Alexey007
Дата 4.5.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 30.3.2007

Репутация: 1
Всего: 1



Всемогущий,
Цитата(Alexey007 @  4.5.2007,  11:25 Найти цитируемый пост)
а если редактору понадобиться создать ещё блок? он будет в тупике

 Потому что он полный ноль в тегах и ничо не знает в HTML!!!
можно конешно воспользоваться проверенным способом str_replace(), то тогда шаблон будет неудобаен в плане, что будет 2 файла block_top и block_bottom

А дизайнеру будет не очень удобно так возиться!
PM MAIL   Вверх
Всемогущий
Дата 4.5.2007, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 5
Всего: 13



Цитата(Alexey007 @  4.5.2007,  13:25 Найти цитируемый пост)
А по поводу чтения файла, как наиболее безопасно?

http://php.novgorod.ru/manual/ru/function.readfile.php
http://php.novgorod.ru/manual/ru/function....et-contents.php

Добавлено через 1 минуту и 56 секунд
Цитата(Alexey007 @  4.5.2007,  13:55 Найти цитируемый пост)
 Потому что он полный ноль в тегах и ничо не знает в HTML!!!

 smile покажите мне его  smile такие повымерли давно smile 


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
Страницы: (4) Все 1 [2] 3 4 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1024 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.