Пишу движок, нужен обзор опытных КОДЕРОВ

1. Don (19.01.2015 / 16:42)
Для реализация маленького движка хватит 2 человека, идея в чем? - написать велосипед.
Делать нечего? Да, реально нечего. Год назад последний раз писал что то на пыхе, подзабыл немного его, щас нужно в ускоренном темпе освоить материал, поэтому для практики нужны добровольцы для попарного программированния.

Добавлено через 07:39 сек.
стратегия движка(cms) представлю визуально
CORE - по сути это слой библиотеки, для паттернов, системных плагинов и пр.
SERVICES - это слой службы для манипуляции над даннымиц и слоями core, app и ui. входит в состав системного слоя как и core
APP - модули, приложения
UI - интерфейс пользователя

2. Влад (20.01.2015 / 13:14)
MVC, в стиле какого нибудь cakephp (имею ввиду структуру) не катит?

3. Don (20.01.2015 / 15:44)
И так скажем немного о безопасности, решил сделать один класс который будет принимать на вход данные и фильтровать их по методам _POST, _GET, _COOKIE

но еще хотелось бы поговорить о тех функциях которые оптимально подошли бы для фильтра, вот magic_quotes_qpc в 5.4 уже не используется допустим, а раньше использовался для экранирования, а сейчас как предстоят дела?
class Secure{
/**
 * Класс фильтрует данные $_POST, $_GET, $_COOKIE
 */

	/**
	 * Фильтрация значении данных $_POST
	 */
	public function postSecure(){

	}

	/**
	 * Фильтрация значении данных $_GET
	 */
	public function getSecure(){

	}

	/**
	 * Фильтрация значении данных $_COOKIE
	 */
	public function cookieSecure(){

	}


}


4. Влад (20.01.2015 / 16:14)
полагаю лучше делать жесткую валидацию на уровне модели, т.к. модель одна знает в каком виде должны храниться данные.
если придерживаться модели активной записи, то каждому полю присваивается определенный вид фильтра, и перед записью / обновлением модели проводить валидацию.
Если данные не проходят валидацию - выбрасываем исключение.
Ну и минимальная валидация на фронт-энде (html тэг "pattern", проверка на jquery/js), дабы не заставлять юзера воодить данные каждый раз заново.
По крайней мере, я делаю так smile

5. Don (20.01.2015 / 16:54)
vlad6085 (20 Января 2015 / 16:14)
полагаю лучше делать жесткую валидацию на уровне модели, т.к. модель одна знает в каком виде должны храниться данные.
если придерживаться модели активной записи, то каждому полю присваивается определенный вид фильтра, и перед записью / обновлением модели проводить валидацию.
Если данные не проходят валидацию - выбрасываем исключение.
Ну и минимальная валидация на фронт-энде (html тэг "pattern", проверка на jquery/js), дабы не заставлять юзера воодить данные каждый раз заново.
По крайней мере, я делаю так smile
Согласен с тобой, декомпозицируй пожалуйста с подробным описанием, я может возьму себе в библиотеку - ну всё же для гибкости системы я создам класс для фильтрации данных

6. Владислав (20.01.2015 / 17:55)
лучше rotorcms помогай доделывать)

7. Shamsik (20.01.2015 / 17:58)
Для фильтрации не нужны классы, достаточно , filter_input(INPUT_POST,'name',FILTER_DEFAULT)

8. Shamsik (20.01.2015 / 18:09)
Основа. самописный MVC (controller,router ,views)

Добавлено через 01:57 сек.
Ого брат ты еще свой? Дагестанец ?))

Вот мой скрипт движка писал один SHCMS Engine (shcms.ru)

9. Don (20.01.2015 / 18:55)
Shamsik (20 Января 2015 / 18:09)
Основа. самописный MVC (controller,router ,views)

Добавлено через 01:57 сек.
Ого брат ты еще свой? Дагестанец ?))

Вот мой скрипт движка писал один SHCMS Engine (shcms.ru)

Земляк)

Просматриваю, исходник на github.com имеется?

Добавлено через 07:14 сек.
Shamsik (20 Января 2015 / 17:58)
Для фильтрации не нужны классы, достаточно , filter_input(INPUT_POST,'name',FILTER_DEFAULT)
Это понятно, делаю удобную библиотеку, которую в дальнейшем можно будет расширять и переносить как слой абстрактного уровня, поэтому все надо будет в классах)

10. Ant0ha (20.01.2015 / 19:05)
> щас нужно в ускоренном темпе освоить материал

ну, написание велосипеда не решает этой проблемы, пиши что нибудь на симфе, если хочешь действительно научиться

11. Shamsik (20.01.2015 / 19:23)
К середине февраля выйдет обновление полностью ядро пере пишется , очень много функций расширение)

Добавлено через 00:51 сек.
На гит хапе нету

12. Don (20.01.2015 / 19:35)
Ant0ha (20 Января 2015 / 19:05)
> щас нужно в ускоренном темпе освоить материал

ну, написание велосипеда не решает этой проблемы, пиши что нибудь на симфе, если хочешь действительно научиться
Что за симфа?

13. Shamsik (20.01.2015 / 19:46)
Simfony framework кстати отличный фраимворк . И исходники грамотно сделаны .

14. JustZero (20.01.2015 / 19:58)
13. Shamsik, Symfony. Мне вот Laravel понравился, еще phalcon тоже не плох.

15. Shamsik (20.01.2015 / 20:14)
Phaicon просто гениален -там на си языке

16. Don (20.01.2015 / 20:19)
по SQL инъекции какую защиту предложите?
У PDO к счастью есть встроенные фильтры

17. KpuTuK (20.01.2015 / 20:22)
14. alexandr.sytnyk, И чо Вы в нем (laravel) находите

18. JustZero (20.01.2015 / 20:23)
17. KpuTuK, для меня он как игрушка.

19. Don (20.01.2015 / 20:39)
Раньше для экранировании использовал функцию mysql_escape_string(), сейчас читаю что этой функцией 5.4 уже нет, а что получается тогда? как фильтрует?
mysql_query("SELECT * FROM `table` WHERE `test`=".mysql_escape_string($_GET['var']));


20. JustZero (20.01.2015 / 20:55)
19. БИТ,
<?php

$string = 'sdasdsdsad';

$db = new mysqli('localhost', 'user', 'password', 'db');
$db->query('SELECT * FROM blablabla WHERE id = '. $db->escape_string($string));
$db->close();

$db = mysqli_connect('host', 'user', 'password', 'db');
mysqli_query($db, 'SELECT * FROM blablabla WHERE id = ' . mysqli_escape_string($db, $string));
mysqli_close($db);


21. Don (21.01.2015 / 08:58)
alexandr.sytnyk (20 Января 2015 / 20:55)
19. БИТ,
<?php

$string = 'sdasdsdsad';

$db = new mysqli('localhost', 'user', 'password', 'db');
$db->query('SELECT * FROM blablabla WHERE id = '. $db->escape_string($string));
$db->close();

$db = mysqli_connect('host', 'user', 'password', 'db');
mysqli_query($db, 'SELECT * FROM blablabla WHERE id = ' . mysqli_escape_string($db, $string));
mysqli_close($db);
получается что на уровне системы php.ini magec_quotes_gpc не существует? - а замена ему как ты расписал mysqli_escape_string на уровне MySQLi

22. Влад (21.01.2015 / 09:10)
5. БИТ, как нибудь потом, ок?
до 25 времени вообще в обрез.

Добавлено через 01:39 сек.
21. БИТ, ну или подготовленные выражения, забудь про магические ковычки, с ними и раньше было довольно много проблем

23. Александр (21.01.2015 / 09:26)
19, mysql_escape_string убрали потому что mysql_* устаревшие функции и использовать их не рекомендуется.

URL: https://visavi.net/topics/41879