| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > PHP: Общие вопросы > Движок для сайта |
| Автор: Alexey007 2.5.2007, 14:48 | ||||||||||
| Решил написать новый движок, буду очень признателен за советы и полезные линки, по ходу дела Это может выглядеть как и урок для начинающих програмистов 1. Пути к папкам и их значения: site/ Главная директория сайта, собственно site/configuration.php Файл главных настроек сайта site/install Файлы инсталяции движка site/administrator Админ-центр site/includes Различные модификации(сначала будет только новости) site/class Различные классы site/logs Файлы, в которых будут сохранены ошибки различных кодов site/pages Файлы текстов site/templates Файлы шаблонов site/templates/images Картинки P.S. Скажу сразу, делаю постепенно.. install и administrator буду делать в конце 2. Настройки: site/configuration.php:
P.S. Данный файл будет в создаваться автоматически в инсталяции. 3. Первый класс, подключение к БД: site/class/mysql.php:
P.S. Сразу вопрос к знатокам: Как брать значение пути к ЛОГ файлам брать из файла настроек? 4. Файл site/index.php:
P.S. Вопрос к знатокам: а)Как сделать, чтобы можно было вставлять не только файлы с разрешение .html, но и с другими? б)Если ничего не передается(в поле $_GET), то подгружать index.html в)Новости будут не в этой папке, как сделать критерий на новости? г)Как разбить файл на 2 вывода, т.е. содержимое файла:
Требуется примерно такое вывод:
Много уважаемые начинающие програмисты, спрашивайте, не стесняйтесь |
| Автор: WolfON 2.5.2007, 15:42 | ||||||
| 2. лучше хранить настройки хотя-бы в ассоциативном массиве, хотя о вкусах не спорят 3.
4. а) в чем проблема? ) б)
в) в смысле критерий? добавь еще одну строчку в бд или сформируй запрос для поиска г)
|
| Автор: Alexey007 2.5.2007, 19:38 | ||||||
Как можно целые функции запихнуть под определенной переменной, т.е. есть шаблон:
нужно: Заметь {****} на определенные значения... Как заменить {PAGE}? В него должна включаться функция
Тексты наверно примерно так, а всю страницу пихать в переменную $text.:
Но все это очень громозко, можно как-нибудь облегчить код? Задача: Совместить структуру и шаблон воедино, но чтобы не потерялась читабельность и быстрота выполнения скриптов. |
| Автор: Alexey007 2.5.2007, 20:08 |
| Тут назрела идея, записать эту функцию в файл, а потом просто его записывать в переменную и приставлять туда, куда нужно P.S. Неужели никто не может помочь |
| Автор: Glip 2.5.2007, 20:18 |
| до fopen() можно проверить is_readable() и "глотать" ошибки @ не есть гуд. |
| Автор: Alexey007 2.5.2007, 20:34 |
| Glip, что тогда посоветуешь? |
| Автор: Glip 2.5.2007, 20:43 | ||
лично мне очень нравится
|
| Автор: Alexey007 2.5.2007, 20:46 | ||||
Обновил, по советам Glip:
P.S. Сообщение об ошибке внес в файл конфигурации, чтобы код самого скрипта был чище, и не было посторонних текстов:
Добавлено через 4 минуты и 55 секунд Glip, запостил сообщение, не увидев твое сообщение можешь чуть-чуть объяснить что это за функция? А потом как её вставлять? |
| Автор: Glip 2.5.2007, 20:51 | ||||
можно вынести в отдельную переменную. оно в 3-х местах уже одно и то же. Добавлено @ 21:01 код взят из http://onphp.org/index.ru.html там же можно найти и пример использования
отчет об ошибке в отладочной версии получаем на экран. в рабочей - перенаправляем пользователя на главную страницу, а отчет об ошибке себе в почту. |
| Автор: Alexey007 2.5.2007, 21:09 |
| Glip, это вообще для чего? я не вижу связи! |
| Автор: Glip 2.5.2007, 21:12 | ||
про какую функцию вопрос? |
| Автор: Alexey007 2.5.2007, 21:20 | ||
Glip,
поточнее надо, что за что отвечает(переменные) Если менять нужно много значений, как быть? И вопрос про замену {PAGE} на целую функцию остается нерешенным. |
| Автор: Glip 2.5.2007, 21:39 |
если в двух словах, то: ошибку (error) которую обрабатывать сложно, преобразуем в исключение (exception) для обработки которого есть конструкция try catch. это один из варинтов. при этом не прячем их совсем как @fopen и не показываем клиенту как fopen, а "ловим" и решаем что с ними дальше делать а в итоге фиксим со временем. можно поискать еще что-нибудь на пердмет использования set_error_handler(). просто данным вариантом я пользуюсь и пока доволен. |
| Автор: Alexey007 2.5.2007, 21:50 | ||
| Вообщем вот что откапал: http://php.ru/forum/viewtopic.php?t=1372&postdays=0&postorder=asc&start=0 По этому есть сразу вопрос, там написано, что так не безопасно. вопрос, как обезопасить себя?
Есть ли какие-нибудь ещё недочеты в данном классе (см. выше) Glip, спасибо за подсказку функции http://ru2.php.net/manual/ru/function.set-error-handler.php, изучаю... Простите за такую настойчивость, но как быть, если мне {PAGE} надо заменить фнукцией?? |
| Автор: Всемогущий 3.5.2007, 06:08 | ||
так? |
| Автор: Alexey007 3.5.2007, 14:00 | ||
| Всемогущий, уже ближе к истине, но мнемного не то... Представь, если у меня не один десяток тегов {}, то если я добавлю ещё какой-нибудь, то мне придется прописывать его в array и на то что заменять тоже... Есть мысль, только как её осуществить? Дело в следующем. Такой метод будет заменять сами функции(их скорее всего слишком много не будет), а класс будет саменять только переменные. Опосаюсь за безопасность функции Parse, т.к. там идут глобальные переменные. Прошу помочь разобраться
P.S. о вариант хороший, мне понравился |
| Автор: Всемогущий 3.5.2007, 16:49 | ||||
прописывать всё равно придёться. пусть замен будут сотни...
|
| Автор: Alexey007 3.5.2007, 17:45 | ||||||
| Всемогущий, спасибо, с этим понятно. Вот ещё штука: как разбить файл не по строчкам, а по какому-нибудь критерию? Т.е. вот код:
Примерное содержание файла:
А код шаблона примерно такой:
+ Ко всему нужно делать проверку: Если в файле нет таких тегов, то направлять в СОВЕРШЕННО другой шаблон |
| Автор: Vaulter 3.5.2007, 21:43 |
| [code=php] <?php /* Vaulter 25/12/06 07:33:08 Volgograd vaulter@nm.ru $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') * |
| Автор: Alexey007 3.5.2007, 21:52 |
| Vaulter, прости конешно, но при чем тут коды, которые ты написал? авторизация какая-то... |
| Автор: Vaulter 3.5.2007, 22:08 | ||
| в кратце все просто лежит html/default.html
ну и все это соответственно по запросу index.html шевелится и живет |
| Автор: Alexey007 3.5.2007, 22:13 |
| Vaulter, а создать свою ветку форума можешь, вроде не новичок на форуме смотрю? Тут идет создание движка сайта.. Пытаюсь его сделать Я! ну помогают мне конешно Так вот, обсуждается этот движок, а не какие иначе. Модератор, удалите пожалуйста последние сообщения, корорые идут не по теме. Дата 3.5.2007, 21:43 Дата 3.5.2007, 21:52 Дата 3.5.2007, 22:08 И это подредактируйте тоже, пожалуйста Добавлено @ 22:19 Всемогущий, скажи пожалуйста, а если создать "шаблон" средствами замены str_replace, т.е. вручную записать все замены {****}, от этого производительность не изменится? Или можно как-то по-другому сделать? Или помоги пожалуйста решить вопрос о безопасности(я там в коде показал где-именно + описал в чем проблема) |
| Автор: Всемогущий 4.5.2007, 08:44 | ||
зачем? |
| Автор: Alexey007 4.5.2007, 11:00 |
| Всемогущий, Потому что вот так надо! каждый текст нужно вставить в отдельную таблицу... По дизайну... |
| Автор: Всемогущий 4.5.2007, 11:17 | ||
| Alexey007, Неужеле вы собираетесь хранить всю информацию в одно месте(одном файле)? расскажите где оправдана такая схема?
Добавлено через 1 минуту и 24 секунды |
| Автор: Alexey007 4.5.2007, 11:25 |
| Всемогущий, вот ответ: http://aragoniafx.com/new/ Как видно, здесь на глабной странице есть 3 блока... Но тут каждый текст хранится в отдельном файле.. а если редактору понадобиться создать ещё блок? он будет в тупике Информацию ДАННОЙ страницы буду хранить в одном файле. т.е. страница index.php, будет соответствовать index.txt, а не index1.txt; index2.txt; ..... А по поводу чтения файла, как наиболее безопасно? |
| Автор: Всемогущий 4.5.2007, 11:46 | ||||||
для того и нужен шаблон
а я возьму и добавлю новый блок
|
| Автор: Alexey007 4.5.2007, 11:55 | ||
Всемогущий,
Потому что он полный ноль в тегах и ничо не знает в HTML!!! можно конешно воспользоваться проверенным способом str_replace(), то тогда шаблон будет неудобаен в плане, что будет 2 файла block_top и block_bottom А дизайнеру будет не очень удобно так возиться! |
| Автор: Всемогущий 4.5.2007, 11:58 |
http://php.novgorod.ru/manual/ru/function.readfile.php http://php.novgorod.ru/manual/ru/function.file-get-contents.php Добавлено через 1 минуту и 56 секунд |
| Автор: Alexey007 4.5.2007, 12:15 | ||||||
| Всемогущий, мне не до шуток По поводу ссылок, спасибо, но у меня же есть чтение из файла. только вот не понимаю что мне надо изменить) Так как быть с шаблоном(замену верха и низа не хочется
Так нужно ещё и для удобства!
P.S. прошу ответить по возможности на все, что щас написал Буду ОЧЕНЬ признателен |
| Автор: Всемогущий 4.5.2007, 12:29 |
| Давай поговорим об этом потом,и займёмся реализацией конкретных модулей: это будет гораздо интересней. |
| Автор: Alexey007 4.5.2007, 12:51 | ||||
| Всемогущий, предлагаешь заняться структурой? Дело в том, что я даж не знаю как разбить шаблоны от кода сразу... В каких форматах лучше хранить все модули? (т.е. все кроме index.php) Как защитить файл configuration.php от просмотра посторонних глаз. Как защитить эти файлы ВООБЩЕ от просмотра, без гл. "руководителя" index.php? Может так?
Это если учесть, что у меня в index.php строчка:
Вроде на локалке работает Какой комент можно написать к данной фитче? Как определиться мне, менюшки всякие- это модули или это просто includes (в них тоже будут различные функции) 100% модули: -новости -отправка сообщения на почту -Ч.А.В.О.(будет на скоро Все вроде пока. Начну делать новости. сразу вопрос, что в модуле должно содержаться? Впринципе структура новостей: -подключение к таблице -замены, сплошные%) (всякие теги типа [b] [u] [i] и т.д.) можно потом правда сделать, когда будем делать в шаблоне... |
| Автор: Всемогущий 4.5.2007, 14:40 |
| http://forum.vingrad.ru/index.php?show_type=forum&showtopic=149154 Добавлено через 1 минуту и 49 секунд Предположим новости создаёт человек со знанием HTML |
| Автор: CyClon 4.5.2007, 14:43 | ||
Предпочитаю структуру примерно такую:
То есть, чтобы в корне не валялась куча файлов, а все было в папке типа kernel, engine и т.п. |
| Автор: Всемогущий 4.5.2007, 14:51 |
а разве может быть иначе? |
| Автор: Alexey007 4.5.2007, 15:22 |
| Всемогущий, про bbcode знаю CyClon, можно и так, особой роли не играет, но спасибо.. может так будет удобнее Всемогущий, а что насчет того что я писал(про защиту чтения сис. файлов)? Добавлено через 2 минуты и 32 секунды |
| Автор: Всемогущий 4.5.2007, 15:51 | ||
Предпологается иерархия Вы : Руководитель Я : Консультант по техническим вопросам. Из этого следует что те части которые были предложены вами и не вызвали резкой критики(естественно аргументированой) с моей стороны принимаются по умолчанию. к примеру и теперь что б не сочли за пустую болтавню продолжаем обсужать предлагаю сделать модуль новостей с такой структурой: в бд хранятся 2 таблицы: первая собственно с текстами новостей вторая с отзывами Добавлено @ 15:54
|
| Автор: Alexey007 4.5.2007, 16:11 | ||||||
Ну по поводу новостей таблица уже заказана с такими критериями:
Вот, нашкрябал.. Помогите улучшить и объединить 2 файла: Файл коротких новостей
Файл длинных
P.S. Сразу скажу, что все эти echo данных так выглядеть НЕ должно... Все будет уходить в шаблон... |
| Автор: BuShaRt 4.5.2007, 16:12 |
| Допусти мы тоже не знаем не HTML не BB, но вот почему то я вполне, представив, что их забыл, могу сделать так: Первая надписть Вторая Третья Как я это сделал? Просто мне в помощь пришел интерфейс на JavaScript, который вполне понятен, если конечно человек вообще способен что-либо понимать Мораль: Если нужны функции редактирования текста, то ненадо мудрить, а делайте панель форматирования текста на JS. http://www.woweb.ru/load/118-1-0-3500 |
| Автор: Alexey007 4.5.2007, 16:14 | ||
Ещё немаловажно Добавлено через 2 минуты и 1 секунду BuShaRt, у меня форма добаления новостей будет такая же, как на этом форуме(похожая). А bbcode буду использовать только для того, чтобы в поле текста не было всяких тегов закрученных! |
| Автор: Всемогущий 4.5.2007, 17:04 | ||
| сейчас пришло время разнообразных функций. будем делать всё на них пока оставлю SQL как есть но мне кажется, что новости лучше выбирать по времени.
|
| Автор: Alexey007 4.5.2007, 17:13 |
| Всемогущий, это, надеюсь не PHP5? на сервере 4 стоит |
| Автор: Всемогущий 4.5.2007, 17:37 |
| единственное отличие http_build_query http://forum.vingrad.ru/index.php?showtopic=144656&hl=http_build_query# а вообще скоро выйдет php6 нужно модернезировать сервер |
| Автор: Alexey007 4.5.2007, 17:46 | ||
| Если бы я знал как... Во чо пишет:
Добавлено @ 17:58 |
| Автор: Всемогущий 4.5.2007, 18:05 | ||
| ругань связана с тем что mysql ничего не вернула. попробуй какой нибудь простой запрос и кинь весь получившийся html в приват потом отредактирую сообщение Добавлено через 2 минуты и 29 секунд совсем забыл подправим слегка
|
| Автор: Alexey007 4.5.2007, 18:17 |
| Всемогущий, так в каких форматах мне хранить все файлы? |
| Автор: mishaSL 4.5.2007, 19:54 | ||||||||
| Alexey007, даже не знаю с чего начать... начну с начала: 1. Мой совет по поводу этапности написания. Не надо начинать писать модули пока вы не определились окончательно с файловой структурой вашей CMS. Также было бы не плохо продумать структуру БД, тех таблиц которые не относятся к определенным модулям. Далее определиться какие системные классы (классы для работоспособности всей CMS) вам необходимы, к примеру класс для работы с БД, шаблонизатор (его вы уже упоменали) и т.д. Далее написать эти классы (и при этом хорошенько продумать их функции, а также удобство работы с этими классами). Если на данном этапе проблематично написание таких классов, то подобрать готовые и удобные для вас. Дальше было бы логично начать с написания системы управления сайтом ("Админ-центр"). А потом уже пользовательскую часть. 2. По поводу конфига, на самом деле удобнее хранить конфиг в ассоциативном массиве. Но каждый делает как ему удобнее. Вы спрашивали что это:
замечу что скорее всего вам понадобится адрес сайта, т.е. http://www.site.com 3. По поводу защиты файлов я до конца не понял, что вы конкретно имеете ввиду. Но скажу что я думаю по этому поводу: первое, насколько я понимаю все файлы будут подгружаться через index.php, тогда вполне будет достаточно определение константы, со следующей проверкой во всех файлах(то что вы предложили). Второе, правильно проставление прав доступа на файлы. Дальше просто не по порядку замечания: Использование global нежелательно.
функция должна возвращать значение и ничего не выводить, и это значение подставляем вместо {PAGE}
Логика абсолютно непонятна.
Если я правильно понял о чем вы, то НЕТ. Также было бы неплохо сразу продумать будете ли вы использовать ЧПУ, продумать структуру предполагаемых модулей. Это то что пераое пришло на ум P.S. Также можете почитать эти темы: http://forum.vingrad.ru/act-Search/CODE/show/searchid-29b064e582278e421fc9e52441ccb4f0/search_in-posts/result_type/topics/flag/search/highlite/cms/index.html |
| Автор: Alexey007 4.5.2007, 20:39 | ||
| mishaSL, Возможно, но в каких целях? это я понял, вот и спрашивал как поправить
уже разобрались все вместе Ну например, если тегов таких нет, то при выводе страницы, например, автоматически "приставлять" эти теги. Но НЕ изменять при этом файл. Тогда наверно использовать регулярки? Вроде все ответил... А по поводу начать с админки, я не знаю как будет что устроено, что именно можно будет изменять\удалять |
| Автор: Alexey007 8.5.2007, 13:53 | ||||
| Шаблонный класс(отдельная функция и её проверка) Помогите пожалуйста, знающие люди Проблема с реализацией:
Таблица шаблонов:
А выводит ошибку: Notice: Undefined offset: 2 in Z:\home\localhost\www\site\engine\modules\news.php on line 6 Array |
| Автор: -=Ustas=- 8.5.2007, 14:11 | ||
|
| Автор: Alexey007 8.5.2007, 14:19 |
| -=Ustas=-, спасибо, ошибка убралась, но вот только теперь он вы водит Array А должен шаблон(т.е. содержимое таблицы) |
| Автор: Alexey007 8.5.2007, 15:13 | ||
Вот решение (Всемогущий конешно помог)
|
| Автор: -=Ustas=- 9.5.2007, 00:13 |
| Alexey007, http://php.net/array Добавлено через 2 минуты и 55 секунд Точнее http://ru2.php.net/manual/en/language.types.array.php |
| Автор: Alexey007 9.5.2007, 10:33 |
| -=Ustas=-, спасибо |
| Автор: v_enom 18.10.2007, 22:54 |
| много букоф... не на самом деле я начал по этой теме тоже делать движок, но вижу что она не закончена, поэтому прошу экспертов разъяснить просто концепцию того, что нужно сделать. Пожалуйста, напишите из чего состоит дивжок(самый простой) как работает, что от куда должен брать и с чем взамиодействовать. В инете искал тему - не нашел, там одним готовые CMS |
| Автор: SergV 17.1.2008, 13:25 | ||
Это всё зависит от потребностей. Это может быть типа хтмл сайта с пхп или яваскрипт вставками к примеру для организации определённых форм, или ещё что. Или иметь один index.php, а всё что выводится формируется в нём через пхп скрипты связанные с базой данных, или если без базы данных, то с текстовыми файлам где лежит необходимый контент. Плюс это авторизация пользователей, плюс админка для управления сайтом, плюс что угодно. Если хочешь узнать подробней, просто посмотри различные CMS в работе и их внутренности. |
| Автор: bash 19.2.2008, 22:38 | ||
Пройди по этой ссылке: http://www.nulled.ws/showthread.php?t=39068 Скачав этот курс и просмотрев его сразу отпадут все вопросы, поймёш что с чем взаимодействует, откуда берётся и счего начать... |