За последние 24 часа нас посетили 22028 программистов и 1128 роботов. Сейчас ищут 873 программиста ...

не работает банальный код

Тема в разделе "Yii", создана пользователем riaron, 4 янв 2019.

  1. riaron

    riaron Активный пользователь

    С нами с:
    1 окт 2014
    Сообщения:
    247
    Симпатии:
    4
    код из вижета не выводит хелло ворлд
    PHP:
    1. $submiti = filter_input(INPUT_POST, 'submiti');
    2.  
    3.         if (isset($submiti)) {
    4.             $logini = filter_input(INPUT_POST, 'login');
    5.             $passwordi = filter_input(INPUT_POST, 'password');
    6.  
    7.  
    8.             if ($logini and $passwordi) {
    9.                 global $mod;
    10.                 $model = new Users();
    11.                 $mod = $model::find()->where(['user_login' => $logini])->one();
    12.  
    13.                 if ($mod) {
    14.                     $pass = $mod->user_password;
    15.  
    16.                 } else {
    17.                     $pass = generateCode(15);
    18.                 }
    19.                 $a=md5(md5($passwordi));
    20.                 $a=(string)$a;
    21.                 $pass=(string)$pass;
    22.                 echo "1:$a and 2:$pass";
    23.                 echo "1:".gettype($a)."2:".gettype($pass);
    24.                 if($a==$pass){
    25.                     echo 'hello world';
    26.                 }
    27.  
    28.             }
    29.  
    30.  
    31.         }
     
  2. Artur_hopf

    Artur_hopf Активный пользователь

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @riaron посмотри чему равно $a и чему равен $pass. Мне кажется $pass = generateCode(15)
     
  3. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    А почему так странно работаешь с вводом, если у тебя Yii? Есть же специализированные средства Yii2 для работы с пользовательскими данными. И для хеширования пароля тоже есть готовые функции в Yii2, не надо самодеятельности с двойным md5, Ну а так тебе сказали, отлаживай свой бред. Находится ли модель, правильно ли ты записал предварительно пароль в базу и т.п.
     
  4. riaron

    riaron Активный пользователь

    С нами с:
    1 окт 2014
    Сообщения:
    247
    Симпатии:
    4
    Насчёт сравнения, $a и $pass равны другие другу, насчёт модели все правильно работает(я новичок и не знаю как в без виджетов сделать так чтобы yii sidebar left на каждой странице форму авторизации показывал)
     
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.555
    Симпатии:
    1.754
    Ну если они равны друг другу, то должен срабатывать соответствующий if, тем более у тебя там вообще нестрогое сравнение (которое, кстати, нельзя применять при сравнении хешей, хеши сравниваются только ===)

    Показывать в виджете - это правильно, обрабатывать в видежете POST-запрос - в корне неверно. Для этого нужен контроллер, который проведёт аутентификацию и сделает редирект. Или ты не в курсе схемы обработки POST-запросов:
    1. Форма посылает POST-запрос
    2. PHP-код на него реагирует, делает необходимое действие - добавляет запись в базу или проводит аутентификацию (т.е. записывает в куку или сессиию флаг авторизации)
    3. После чего, не выводя никакой информации, в обязательном порядке следует редирект, даже на ту же страницу, но обязательно редирект. Исключение - AJAX-запросы