• Как понять такое описание?

    @QNA-1976 Автор вопроса
    Дмитрий, просто в моём понятии исключение - это ошибка, поэтому я для удачной обработки как-то не думал их использовать: просто сообщения выводил в таком случае, ок попробую
    Написано
  • Как понять такое описание?

    @QNA-1976 Автор вопроса
    Дмитрий, без try-catch у меня исключения улетают в логи еррор-хендлером, мне нужно сообщение об удаче вывести: мне внутри try выбросить и дополнительным SuccessException обработать?

    или просто вывести сообщение об удаче и где оно должно идти: внутри try после кода или после try-catch
    Написано
  • Как понять такое описание?

    @QNA-1976 Автор вопроса
    вот у меня метод внутри try и он в случае ошибки выбрасывает исключение
    а если он не выбросил исключение и мне теперь нужно сообщение об удаче, мне где его расположить отдельно после try-catch или выбросить внутри try и дополнительным catch обработать?
    Написано
  • Как понять такое описание?

    @QNA-1976 Автор вопроса
    вот у меня метод внутри try и он в случае ошибки выбрасывает исключение
    а если он не выбросил исключение и мне теперь нужно сообщение об удаче, мне где его расположить отдельно после try-catch или выбросить внутри try и дополнительным catch обработать?
    Написано
  • Как понять такое описание?

    @QNA-1976 Автор вопроса
    Располагать на одном уровне абсолютно нормально

    ну вот у меня метод внутри try и он в случае ошибки выбрасывает исключение
    а если он не выбросил исключение и мне теперь нужно сообщение об удаче, мне где его расположить отдельно после try-catch или выбросить внутри try и дополнительным catch обработать?
    Написано
  • Как понять такое описание?

    @QNA-1976 Автор вопроса
    код после него исполняться не будет

    finally
    Написано
  • Как понять такое описание?

    @QNA-1976 Автор вопроса
    а if как работает в исключениях?
    Не надо располагать try/catch и throw на одном уровне — в этом случае проще написать if
    Написано
  • Где можно найти нормальную реализацию контроля авторизованного?

    @QNA-1976 Автор вопроса
    Антон Шаманов, хорошо, тогда поясните

    class AuthController extends AppController {}
    class PageController extends AppController {}
    class BackendPageController extends AuthController {}


    где тут контроль авторизованного на странице PageController?
    Написано
  • Где можно найти нормальную реализацию контроля авторизованного?

    @QNA-1976 Автор вопроса
    Антон Шаманов, я понял схему Вашу: проверку авторизованного прикрутили, как я понимаю к странице логина-регистрации-забыл пароль (стартовая)

    теперь кидаем юзера на сайт, если авторизован

    теперь юзер очистил браузер и обновляет страницу, он неавторизован, как его универсально заредиректить с любой страницы на на стартовую?

    типа NoAuthController запилить? )))

    ну так мы с Вами вернулись к моему способу, который я в вопросе описал

    практически вроде то же самое

    private function authRedirect()
        {
            if ($this->controller == 'Main') {
                $this->alertRedirect('success', 'Добро пожаловать', '/menu');
            }
        }
    
        private function noAuthRedirect()
        {
            if ($this->controller != 'Main') {
                $this->alertRedirect('danger', 'Всего доброго', '/');
            }
        }
    
    if ($this->checkSessionId()) {
                $this->authRedirect();
            } else {
                $this->noAuthRedirect();
            }
    Написано
  • Где можно найти нормальную реализацию контроля авторизованного?

    @QNA-1976 Автор вопроса
    Антон Шаманов, ну я тут разницы не вижу

    if ($user['role'] == 'admin') echo 'Админ';
    if ($user['id'] == 1) echo 'Админ'; // естественно владелец регается первый зная о том, что админ - это id = 1
    Написано
  • Где можно найти нормальную реализацию контроля авторизованного?

    @QNA-1976 Автор вопроса
    Антон Шаманов,
    если у Вас не 2 роли, то и сбивает с толку - куда отправлять 'logged' пользователя если он не 'admin'

    у меня нет ролей, у меня админ - первый, кто зарегался, то есть id = 1 и будет админ, какая разница буду я проверять что админ - это юзер с записью admin в БД или я проверю, что админ - это юзер с записью id = 1 в БД
    Написано
  • Где можно найти нормальную реализацию контроля авторизованного?

    @QNA-1976 Автор вопроса
    Антон Шаманов,
    abstract class AuthController extends Controller


    у меня вот так

    abstract class AppController extends Controller

    и дальше

    class ЛюбойController extends AppController

    не очень понял куда мне AuthController прописывать, ведь у меня от AppController наследуются контроллеры не только для авторизованных, а все, так как в нём общий функционал
    Написано
  • Где можно найти нормальную реализацию контроля авторизованного?

    @QNA-1976 Автор вопроса
    Антон Шаманов, ну вот я неавторизован и делаю проверку

    if (! $auth->getUser()) {
                throw new HttpException(null, 401);
            }

    ну и что дальше, я вечно в 401 ошибке буду находиться?
    Написано
  • Где можно найти нормальную реализацию контроля авторизованного?

    @QNA-1976 Автор вопроса
    Антон Шаманов, ну я понял: Вы пользователя просто ошибками закидываете, если он не там, где нужно, а на страницах ошибок я так понимаю ссылки ведущие куда-то в зависимости от того, авторизован ли пользователь )))

    или Вы в зависимости от кода ошибки редиректы ещё где-то производите?
    Написано
  • Где можно найти нормальную реализацию контроля авторизованного?

    @QNA-1976 Автор вопроса
    а есть, где по простому посмотреть, как реализовано: юзер авторизован, но почему-то хочет перейти на страницу авторизации, как проверки производятся

    или юзер неавторизован, а прётся в личный кабинет, например
    или юзер закрыл браузер и открыл, а он авторизован
    или очистил браузер и обновил страницу

    вот такое посмотреть, есть ли общепринятые методы или мне тупо писать

    if (!$this->user and $this->controller != 'Main') $this->redirect('/'); // Main у нас пустая страница, то есть /
    Написано
  • Как сделать цикл в классе?

    @QNA-1976
    возраст параметром передать в метод и использовать в условии выборки
    Написано
  • Почему не срабатывает выбор подсказки клавишей enter в Sublime text 3?

    @QNA-1976
    Посмотрите, что происходит, если жать Enter на основной клавиатуре и что, если на цифровом блоке, замечалось, что по разному ведут себя.
    Написано
  • Отчего возникает ошибка SMTP?

    @QNA-1976
    Тут написано, что Yahoo не будет больше обрабатывать рассылку сраного спама с данного айпишника.
    Написано
  • Насколько надёжен такой способ контроля?

    @QNA-1976 Автор вопроса
    Дмитрий, мне в логи нужно вернуть данные вставленного id элемента ))) я юзеру показываю во всплывающей модалке, что ему прилетело
    5e36a4994387d250908732.png
    если я жоско джоин инсерт по условию сделаю то вернуть нечего, да и запрос же вроде всё-равно произойдёт, мне выборка с инсертом нужна только при совпадении :(

    я похоже первый вариант оставлю
    Написано
  • Насколько надёжен такой способ контроля?

    @QNA-1976 Автор вопроса
    Дмитрий,
    private function setLevel()
        {
            if ($this->user->exp >= $this->user->exp_max) {
                $this->user->lvl += 1;
                $this->user->exp -= $this->user->exp_max;
                $this->user->exp_max *= 1.25;
                $this->pdo('update users set lvl = ?, exp = ?, exp_max = ?, points = points + 5 where id = ? limit 1', [
                    $this->user->lvl,
                    $this->user->exp,
                    (int)$this->user->exp_max,
                    $this->user->id
                ]);
                return true; // получили уровень
            }
            return false;
        }
    
    $this->user->log_level = $this->setLevel();
    $this->user->log_unit = $this->setProperty('unit');
    $this->user->log_building = $this->setProperty('building');
    $this->user->log_operation = $this->setProperty('operation');
    $this->user->log_mission = $this->setProperty('mission');

    теперь я хочу избавится от лишнего запроса на проверку соответствия тут
    private function setProperty($property)
        {
            if ($this->user->log_level) {
                $data = $this->pdo('select * from ' . $property . 's where lvl = ? limit 1', [
                    $this->user->lvl
                ])->fetch(); // тут может не быть элемента, соответствующего уровню, но запрос-то мы произвели всё-равно, так как получен уровень и нужно проверить, есть ли у этот элемент на этом уровне
                if ($data) {
                    $this->pdo('insert into users_' . $property . 's set id = ?, id_' . $property . ' = ?', [
                        $this->user->id,
                        $data->{'id_' . $property}
                    ]);
                    return $data;
                }
            }
            return false;
        }
    Написано