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