{% else-1 %}
abler98 * 22.68
(12 фев 2017, 21:19) (0/0) [0]
Скажу честно, твой код для меня не сильно отличается от кода названных CMS. Дело здесь не в стиле и форматировании, а в логике (умнее выразиться не смог). У тебя всё также куча кода в одном месте (я уже говорил про разделение логики и представления).
abler98 * 22.68
(12 фев 2017, 21:14) (0/0) [0]
Я не о назначении класса. По-моему там можно было функцией обойтись. + Делать проверку для каждого запроса вручную - фигня, можно ведь для всех запросов (кроме GET и HEAD) выполнять эти действия где-то в подключаемых файлах.
abler98 * 22.68
(12 фев 2017, 20:45) (0/0) [0]
3KZO, формулировка Access Token больше подходит для ключей, которые используются в OAuth, он авторизует пользователя с некоторыми правами, а у тебя получается ключ авторизации (полный доступ).

Я как раз хотел, чтобы ты использовал какой-то архитектурный паттерн.

Не понимаю, как можно на автомате поставить лишний символ... Наверное в какой-то CMS так было и ты привык?! *

А вот записывать ответ в класс - это уже хорошо, главное сделать всё правильно. В идеале должен быть один базовый класс + view + redirect + json + ...

P.S. Зачем стараться для тех, кто даже готовую MVC использовать не может? Разобраться в этом можно довольно быстро, никаких сложностей не вижу, пусть потратят время на Google и практику.
abler98 * 22.68
(12 фев 2017, 16:29) (0/0) [0]
3KZO, возможно я придираюсь, но где всё это:
1. Одна точка входа (сейчас это почти как стандарт, так как с твоим подходом даже роутинг толком не сделать)
2. Шаблоны (я про разделение логики и представления)
3. Безопасность (для паролей уже даже дока по PHP не рекомендует использовать md5)
4. Могу ещё дополнить список, если интересно

Немного Code Review:

include __DIR__ . '/sys/start.php';
- Уже говорил про единую точку входа. Писать это на каждой странице не есть гуд.

[code]
if ($user !== null)
{
Удалён /');
exit;
}
[/code]

- Классика, так и остались на уровне DCMS... Пора уже понять, что поддерживать такой код - занятие для извращенцев. Прикажешь следить за тем, чтобы я не переопределил жизненно важные переменные у себя в коде?
- Какая нафиг ошибка может быть вызвана при установке заголовка?
- Предлагаешь делать подобную проверку в куче с остальным кодом, про middleware не слышал?

[code]
$doc = new document();

$doc->title = 'Вход';
[/code]

- Очень полезный класс, с таким же успехом можно вручную подключать все части представления... Есть же готовые шаблонные системы, которые можно легко интегрировать с свою систему, только для этого нужно саму систему переписать *

[code]$security = new Security();
$security->is_valid($_POST['anti_csrf'])[/code]

- Мне почему-то кажется, что от этого класса вообще нет толку, тебе просто захотелось создать новый класс
- А ещё стрёмно обрабатывать разные запросы в одном месте (я про отображение формы и её же обработку)
- isset($_POST['anti_csrf']) - почему именно так? Неужели нельзя проверить метод запроса?

[code]$bind = [];
$bind[] = $_POST['name'];
$stmt = $db->executeQuery('select * from `users` where `users`.`name` = ? limit 0, 1;', $bind);
if ($stmt->rowCount() != 0)
{

$row= $stmt->fetch();
if ($row['password'] == md5($row['id'] . md5($_POST['password'])))
{

$token = md5(rand());
$bind = [];
$bind[] = $token;
$bind[] = $row['id'];
$db->executeQuery('update `users` set `access_token` = ? where `users`.`id` = ?;', $bind);
$_SESSION['user'] = $token;

Удалён /');

}

}[/code]

- Где проверка на наличие ключа name у переменной $_POST ?
- $stmt->rowCount() - почему нельзя сделать просто fetch(), а потом проверить $result !== false, ты же два запроса таким образом делаешь
- Про md5 уже говорил, забудь про него, когда речь идёт о безопасности паролей
- Ну ток ладно, md5 сойдёт, но какой нафиг access_token? Ты хоть знаешь, что это такое? Назвал бы уже просто - token
- Надеюсь ты хоть добавил ключ UNIQUE для поля token в таблице users?
- Снова подавление ошибки в самом ненужном месте
- Желательно после установки заголовка Location убрать весь ненужный вывод (я про форму ниже), т.е. просто добавить exit

[code]
$form = new FormForm();
$form->action('/login.php');
$form->method('POST');
$form->input([
'type' => 'hidden',
'name' => 'anti_csrf',
'value' => $security->getToken()
]);
$form->label('Имя');
$form->input([
'name' => 'name'
]);
$form->label('Пароль');
$form->input([
'type' => 'password',
'name' => 'password'
]);
$form->submit('Войти');
$form->display();[/code]

- FormBuilder - дело вкуса, но если и создавать свой Builder, нужно хоть как-то упростить процесс создания формы... Как минимум, можно избавится от необходимости добавлять anti_csrf вручную. Про остальное говорить не стану, я бы вообще удалил это класс.

P.S. Я и сам раньше писал примерно такое, но это была просто практика, а не попытка написать свою CMS для общего доступа. Вот увидит твою CMS человек без опыта и будет также писать, это очень тормозит процесс развития. Пожалуйста, остановись, не нужно выкладывать это, лучше займись чем-то другим.
abler98 * 22.68
(10 фев 2017, 19:06) (0/0) [0]
3KZO, о, ясно, можно не ждать.
abler98 * 22.68
(8 фев 2017, 20:50) (0/0) [0]
Код, я обещаю вас не огорчит

Я запомню эти слова, мне будет интересно глянуть.
  • 1 из 1