Перейти к содержанию

Рекомендуемые сообщения

Итак PrototypeCP.

logo.png?raw=true

Начинал давно, решил возобновить работу, за год обкатал наработки. В основном по шаблонизатору.

Пока что кроме ядра мягко говоря ничего нету.

Ядро:

Поддержка шаблонов

Поддержка языков

Шаблонизатор:

Это отдельная тема. Шаблонизатор самописный как и все остальное практически.

Как он работает.

  • Достает каркас шаблона /templates/template_name/layout.html
  • Затем подгружает шаблоны для контента(для каждой страницы ставится отдельно) /templates/template_name/parts/part_name.html
  • После этого начинает обработку.
  • Замена переменных вида {var} на контент сгенерированный в php модулях.
  • Да кстати в layout.htm обязательно должна быть указана переменная {body}, она будет заменена контентом страницы подгруженым из /templates/template_name/parts/part_name.html
  • Замена {msg var_name} на языковую переменную с названием var_name
  • Обработка циклов
  • Обработка условий if

Про циклы и IFы напишу позже. В шаблоне рейтинга игроков используется цикл если интересно изучите сами.

Скоро начну активно дописывать. Напишу все что вспомню и придумаю. Все в открытом доступе даже psd от лого. Никаких платных модулей и прочего. Возможно добавлю свои донат скрипты в сборку. Посмотрим.

Ссылка на исходники: https://github.com/S...sol/PrototypeCP

  • Upvote 11
Ссылка на комментарий
Поделиться на другие сайты

Пару коммитов сделал, почему-то не залились части шаблона.

https://github.com/S-anasol/PrototypeCP/blob/master/templates/prototype/_parts/top.html

Ссылка на комментарий
Поделиться на другие сайты

Да-да это я еще гляну и переделаю наверно ибо меня не устраивает текущий класс базы.

Ссылка на комментарий
Поделиться на другие сайты

Зачатки регистрации и авторизации. Новый класс сайта.

Загрузка языковых файлов в php скриптах: $template->load_lang_strings("msg_menu_register")

https://github.com/S-anasol/PrototypeCP/commit/b0771d626c0d6cded8613fe2bc784378d1a9d8b3

Ссылка на комментарий
Поделиться на другие сайты

Бред использовать функции mysql, переходи на PDO.

Пусть сделает классом, так лучше будет, можно будет для разных бд использовать, я у себя в cms делал — родительский класс работы с бд и наследуемые от него классы по разным драйверам, не нужно привязывать проект к одному драйверу.

Ссылка на комментарий
Поделиться на другие сайты

Бред использовать функции mysql, переходи на PDO.

Пусть сделает классом, так лучше будет, можно будет для разных бд использовать, я у себя в cms делал — родительский класс работы с бд и наследуемые от него классы по разным драйверам, не нужно привязывать проект к одному драйверу.

Там и так используется класс, но не на PDO а на mysql_*

Сейчас там вообще все печально и много мусора.

Ссылка на комментарий
Поделиться на другие сайты

Там и так используется класс, но не на PDO а на mysql_*

Сейчас там вообще все печально и много мусора.

Не так, я предлагаю сделать родительский класс, а от него уже наследовать для каждой db. Пусть это старый mysql драйвер или новый или pdo или вообще другая db. Хоть noSQL или вообще работа с текстовиками.

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

Ну и в целом многого нехватает, если задумаешь писать новое, то с удовольствием помогу, опыт создания фреймворка и CMS к нему есть. Можно вполне сделать употребляемый продукт, правда, у меня условие — freeware.

Вкратце, я писал для своих коммерческих целей свой фреймворк+CMS под конкретные задачи, внутри это напоминает Joomla или Drupal, очень удобная конструкция внутри, работа с шаблонами плохо сделана, но это не было задачей, т.к. на каждый продукт натягивается один раз шаблон и непредусматривается наличие их смены. Сейчас у моего провайдера работает на этом биллинговая система и сам биллинг (админка и клиентская часть).

Ссылка на комментарий
Поделиться на другие сайты

Там и так используется класс, но не на PDO а на mysql_*

Сейчас там вообще все печально и много мусора.

Не так, я предлагаю сделать родительский класс, а от него уже наследовать для каждой db. Пусть это старый mysql драйвер или новый или pdo или вообще другая db. Хоть noSQL или вообще работа с текстовиками.

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

Ну и в целом многого нехватает, если задумаешь писать новое, то с удовольствием помогу, опыт создания фреймворка и CMS к нему есть. Можно вполне сделать употребляемый продукт, правда, у меня условие — freeware.

Вкратце, я писал для своих коммерческих целей свой фреймворк+CMS под конкретные задачи, внутри это напоминает Joomla или Drupal, очень удобная конструкция внутри, работа с шаблонами плохо сделана, но это не было задачей, т.к. на каждый продукт натягивается один раз шаблон и непредусматривается наличие их смены. Сейчас у моего провайдера работает на этом биллинговая система и сам биллинг (админка и клиентская часть).

Да времени особо нету даже привеси в порядок то что есть, не говоря уже о новом. + Есть идея(отдельная от PrototypeCP ,но связана с серверами в целом) одна которую хочется сделать, но время опять же...

2 сайта на yii сейчас надо сдать, а потом смогу чем-то левым заниматься.

Ссылка на комментарий
Поделиться на другие сайты

Бред использовать функции mysql, переходи на PDO.

https://github.com/S...aster/other.php

Что это?

https://github.com/S...aster/index.php


include("./classes/class.templating.php");
include("./classes/class.ragnarok.php");
include("./classes/class.site.php");
include("./classes/class.mysql.php");

Мне кажется проще __autoload поставить.

--


if(isset($_GET["p"]))
{
$page = $_GET["p"];
} else
{
$page = "home";
}

if(file_exists("modules/{$page}.php"))
{
include "modules/{$page}.php";
} else
{
include "modules/404.php";
}

Говно код черт возьми!

классик-! а что если я передам в переменную ?p=../../../../../../../etc/passwd%00 например?

Не так, я предлагаю сделать родительский класс, а от него уже наследовать для каждой db

NhBKJmG4T7o.jpg

Ржанул неплохо))) PDO вообще-то и дает абстрактный интерфейс над разными БД, не за что.

  • Upvote 2
  • Downvote 1
Ссылка на комментарий
Поделиться на другие сайты

Ржанул неплохо))) PDO вообще-то и дает абстрактный интерфейс над разными БД, не за что.

Подсоедините мне к pdo, пожалуйста, nosql и работу с .txt файлами, ах, ну и да, совместимо с 4.хх и 5.0, чтобы было. Спасибо.

upd

цепануло глаз «абстрактный интерфейс» — не путайте класс и интерфейс, я предлагал создавать класс. К PDO вы только средствами C++ сможете дописать драйвер работы с nosql или .txt. Мой способ даёт возможность без какой-либо переделки рабочего проекта менять db пользователю, а программист php без труда допишет отдельный драйвер работы с любой db средствами PHP. Да это не очень быстрый доступ к db по сравнение с PDO, но зато более универсальный и совместимый, поддающийся лёгкой доработке и изменениям.

Изменено пользователем wl.illusion
Ссылка на комментарий
Поделиться на другие сайты

1337

Охуеть. Школота меня начала учить ООП. Совсем страх потеряла. Сначала нацепи на афину nosql базу (тхт не считается), например монго, слышал заебись, потом подумай - нахуя ты это сделал, и верни все назад. Я напомню, что эта цп для афины и класс для работы со всякой парашей кроме mysql ну может еще postgres - нах не нужен. Я это предложил чисто из соображений безопасности, потому что скрипты санасола славятся отсутствием какой-либо сантитаризации входных данных, вот и все.

  • Downvote 3
Ссылка на комментарий
Поделиться на другие сайты

Охуеть. Школота меня начала учить ООП. Совсем страх потеряла. Сначала нацепи на афину nosql базу (тхт не считается), например монго, слышал заебись, потом подумай - нахуя ты это сделал, и верни все назад. Я напомню, что эта цп для афины и класс для работы со всякой парашей кроме mysql ну может еще postgres - нах не нужен. Я это предложил чисто из соображений безопасности, потому что скрипты санасола славятся отсутствием какой-либо сантитаризации входных данных, вот и все.

У меня даже ответ нет желания писать после фраз «школота», «учить». Горе вы программист, если утыкаетесь носом в свои личные предпочтения, что касается безопасности, то pdo далеко не самый безопасный и мозги никто не отменял, тем более хочется вам сказать пару ласковых, но сдержано опишу. Для начала, не вам учить кому и с какой бд работать, хотите написать узконаправленный тяжелодорабатываемый проект — пишите.

Что касается самой идеи классов, во-первых, афина умеет работать с txt, это не секрет, но вы вот тут о безопасности кричали, какая же безопасность всё держать на одной бд? Умные люди предпочитают разделять бд, и nosql для не критичных данных очень подходит, тем более, если сделать кеширование данных из основной базы, для говно-серверов такое не нужно, но если кто-то серьёзно что-то хочет делать, то это очень полезно, во-вторых, ваш pdo никто не запрещал, не отрицал и вообще ничего плохого о нём не сказал (пока не сказал). Никто не мешает наследовать родительский класс и написать драйвер работы с базой через pdo, более того, это очень правильно, потому что будет оставлена обратная совместимость, а так, добрые ребята возьмут и что-то поменяют в pdo и вам придётся менять кучу вызовов или какие-то дополнительные параметры дописывать. Редко такое встречаю в крупных проектах, но бывает. Итого, мы получаем ваш тут распиариный (как ваше чсв) pdo и удобный класс для создания драйверов работы с любой бд (и не только), которые не поддерживаются pdo и возможность создания совместимости со старыми версиями php. Более того, можно сделать обязательной санацию получаемых данных, лёгкое добавление префиксов и постфиксов для имён таблиц, а ещё, что не мало важно, даже работу с несколькими бд одновременно. И всё это без каких-то проблем. Где-то pdo для работы с mysql и прочим мусором, а где-то nosql для кеширования и считывание txt (для изысканных извращенцев).

Что касается кода Санасола, то ничего плохого сказать не могу, нет, вы правы, что там чёрный лес, но после многолетнего исправления говнокода различных компаний — меня напугать тяжело, а всякие флуксы и другие цп написаны чуть лучше, но там тоже есть много пёрлов, которые можно было бы повыдирать для нареканий.

Да, и не разбрасывались бы вы громкими фразами и оскорблениями, ваш интеллектуальный уровень как-то меркнет, если вы чего-то не принимаете или не воспринимаете, то грошь вам цена, как разработчику, тем более, как программисту. Не нравится? Не смотрите, хотите по-оскорблять? Я уже писал о таком отношение к человеку.

Резюме: не пишите чушь и оскорбления, шансов, что вас послушают — мало, что обидятся — много, что положат на вас прибор — 99.9%. Не нравится идея? Замечательно! Напишите спокойно и разумно почему ваша идея лучше, какие у неё преимущества над конкуретными. Хотите критиковать, как малолетний интригант? Вам к детям в песочницу, в любом другом виде — будьте взрослым адекватным человеком со прагматичным взглядом, а не упоротым наркоманом с чсв лошади.

Изменено пользователем wl.illusion
  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

Лучше бы выкладывали конкретный код, например для фильтрации. Зачем ругаться и оскроблять друг друга. Чуть ранее комментария про ../../../../ в $_GET я добавил фильтрацию в код. Коммитов не делал пока никаких просто.

Ссылка на комментарий
Поделиться на другие сайты

...

Мне реально пофиг на вас, школоту, и на ваше мнение. Просто лишний раз напомню, где ваше место.

Лучше бы выкладывали конкретный код, например для фильтрации. Зачем ругаться и оскроблять друг друга. Чуть ранее комментария про ../../../../ в $_GET я добавил фильтрацию в код. Коммитов не делал пока никаких просто.

mysql_real_escape_string

str_replace("..","",$target)

собственно все ручками, ручками. Лучше регуляркой проверять по ожидаемому формату, это самое надежное

  • Upvote 1
  • Downvote 2
Ссылка на комментарий
Поделиться на другие сайты

  • 3 месяца спустя...
  • 1 год спустя...

такая проблема - панень заработала норм, но проблема одна: при регистрации после ввода данных выдает такую ошибку:

Fatal error: Call to a member function Query() on a non-object in /var/www/8xcwy5s/data/www/test.ru/classes/class.site.php on line 25

кто сталкивался?

кстати, вот содержимое этой строки:

else if($db->Query("select count(*) from `login` where `userid`='{$user}'") >= 1)

Изменено пользователем Neero
Ссылка на комментарий
Поделиться на другие сайты

такая проблема - панень заработала норм, но проблема одна: при регистрации после ввода данных выдает такую ошибку:

Fatal error: Call to a member function Query() on a non-object in /var/www/8xcwy5s/data/www/test.ru/classes/class.site.php on line 25

кто сталкивался?

кстати, вот содержимое этой строки:

else if($db->Query("select count(*) from `login` where `userid`='{$user}'") >= 1)

да чет хер его знает почему

коннект к базе есть?

я починить это https://github.com/S-anasol/PrototypeCP/commit/fb5cc84f62078b0bfeb6410f2a2f712be2d799f2

  • Upvote 1
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...
Яндекс.Метрика