За последние 24 часа нас посетили 20157 программистов и 1078 роботов. Сейчас ищут 760 программистов ...

Как быстро освоить PHP

Тема в разделе "PHP для новичков", создана пользователем fenix_63, 16 мар 2015.

  1. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Надо было тоже валидатор поставить, которым форму регистрации проверяю (если код мой смотрел), но это всё на скорую руку было.
     
  2. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    нет, еще не смотрел код, потерял где в каком месте наткнулся, я полностью этот пост не читал, только начало, ну и когда сам стал принимать участие. сейчас ищу, пока не нашел, а посмотреть код интересно!
     
  3. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
  4. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Лучше isset(...), чтоб не было нотиса, пока юзверь ещё не вошёл
    --- Добавлено ---
    https://github.com/77Alleksandr77/Adjustment_task/blob/master/handler.php#L33

    Не, вот так не надо делать :) 0 - нормальный пароль, несмотря на то, что php считает его empty(). Просто написать свою функцию проверки, что-то типа
    PHP:
    1. function fulled($str)
    2. {
    3.      return $str !== null && $str !== "";
    4. }
    5.  
    6. if (!fulled($_POST["password"] ?? "") {
    7.      echo "Вы не ввели пароль";
    8. }
    Если только вы не пишите что-то действительно сверхсекретное, типа webmoney, то пароль должен пропускаться любой
     
    Aleksanbr_77 нравится это.
  5. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    согласен, какой пароль
    пожелает, такой пусть и вводит, и ника это тоже касается. хочет быть 0, пусть будет нулём, и к этому надо быть готовым, что кто то решит назвать себя "0" ;)
    --- Добавлено ---
    например? я просто не все моменты еще понимаю, а какой "нотис" может быть?
     
    romach нравится это.
  6. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Нотис может быть, что неопределённый индекс, если в сессии не будет user_id
     
  7. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    авторизация == тру если есть user_id, а иначе она == false
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Ты не проверяешь есть или нет, ты проверяешь истина записана в $_SESSION["user_id"] или ложь. Если в $_SESSION не будет user_id, то условие сработает, но будет нотис. Поэтому делается проверка
    PHP:
    1. if (isset($_SESSION["user_id"]))
     
    Aleksanbr_77 нравится это.
  9. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    исправил, проверил, работает! из БД удалю, чтобы не занимать "уникальный" ник.
    тоже разберусь, исправлю. !
     
  10. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    за авторизацию отвечает эта функция
    PHP:
    1. function enterance( $user_name, $user_password, $connect) /* вход в аккаунт */
    2.     {
    3.         $table = 'counter';
    4.         $user_name = mysqli_real_escape_string($connect, $user_name);
    5.         $result_set = mysqli_query ($connect, " SELECT `id`, `pass` FROM `$table`
    6.        WHERE `name`='$user_name' ");      
    7.         if( $received_pass_array = $result_set->fetch_assoc() ) {          
    8.             $pass = $received_pass_array ['pass'];          
    9.             if (password_verify($user_password, $pass)) {
    10.                 return $received_pass_array ['id'];
    11.             } else {
    12.                 return false;
    13.             }
    14.         } else {
    15.             return false;
    16.         }
    17.     }
    мое мнение, что она вернет либо false либо user_id я обычный человек и могу ошибаться, как и каждый из нас, и готов услышать, что мое мнение не верно так как не учтено ..., она может вернуть не user_id ? и в каком случае такое может произойти?
     
  11. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Я же указал строчку
     
  12. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    заменить строку на
    PHP:
    1. if (isset($_SESSION["user_id"]))
    это проще простого! Взял, да и заменил, а вот разобраться в причинах возникновения этого "нотиса" когда вроде все выполнено что бы он не возник! И где, на каком участке кода он "Нотис" может возникнуть! То что в этой строке может произойти "Нотис" я услышал, а на каком участке кода в переменную $user_id может попасть не user_id ? Или так делается просто для перестраховки, так, на всякий случай, вдруг что то в коде упустил из виду,! Это в данном задании кода не так и много, а бывает и больше!
    или для перестраховки добавить строки в
    PHP:
    1.            if (password_verify($user_password, $pass))  {
    2.                 $id = $received_pass_array ['id']; //
    3.                      if ( $id )  {
    4.                                 return $id;
    5.                        }  else {
    6.                                return false;
    7.                        } else {
    8.                  return false;
    9.             }
    ? :eek::confused:
    --- Добавлено ---
    --- Добавлено ---
    Может я зануда? но фраза "надо заменить на..." и аргументированная тем, что может возникнуть "нотис" меня :eek:...! Так как я не специалист, то это для меня еще это не аргумент, можно довериться авторитету и просто заменить без лишних вопросов, но тогда я и не научусь ничему! если не разобравшись возьму и просто поменяю o_O
     
    #537 Aleksanbr_77, 21 май 2017
    Последнее редактирование: 21 май 2017
  13. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Ну если ты на 100 процентов уверен, что при заходе к этой точке у тебя будет заполнен элемент $_SESSION["user_id"], то да, можешь и так оставить :) Я настолько в код не вникал
     
    Aleksanbr_77 нравится это.
  14. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    другими словами : "да ну тебя, как хочешь, так и делай"!;)
     
  15. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    @mkramer и @Fell-x27 благодарю за конструктивную критику! она была мне только на пользу,!
    --- Добавлено ---
    ;)
    не одно замечание не было мною проигнорировано! всем :)! добра !
     
    #540 Aleksanbr_77, 21 май 2017
    Последнее редактирование: 21 май 2017
  16. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    Привет всем)) я начал общаться и не представился даже))
    В общем зовут меня Алексей, работаю в сфере ИТ можно сказать всю жизнь, работал и сервисе, и в продажах, последние лет 5-7 являюсь вебмастером, есть несколько своих проектов. В связи с этим начал что то писать на пхп, до этого что то писал на FoxPro (еще в школе), как все что то мастерил на бейсике, паскале, чуть чуть работал с C++ очень давно.. и реально чуть чуть))
    Последние два года активно занимаюсь поддержкой движка simplemachines.. в общем все подряд делаю)) моды, обновления, шаблоны перерабатываю, в общем кастомизирую)
    Последние несколько месяцев задумываюсь немного расширить сферу деятельности.. очень хочется поработать в команде, набраться опыта..

    Выкладываю свой проект)) сначала начал мастерить MVC каркаc.. сейчас потихоньку разбираюсь с YII2 да и вообще хочу вникнуть в ООП поглубже.. но потом посмотрел что для такой задачи вроде слишком избыточно будет использовать ООП ради ООП))
    поэтому сделал так как мне привычно))

    https://github.com/kak2z7702/test_php_ru

    кидайте тапками))
    --- Добавлено ---
    и да)) еще)) для работы с базой я последнее время использую только функции движка с которым работаю.. так что это мой первый опыт работы с mysqli )) так то с мускулом я дружу)) а вот mysqli не использовал.. как то PDO почему то показалось мне удобнее чем mysqli
     
  17. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    https://github.com/kak2z7702/test_php_ru/blob/master/func.php#L34 - надо не отдавать другую страницу, а редирект делать на другой URL. Это для SEO имеет значение, да и вообще нехорошо, когда один и тот же урл отдаёт разное
    https://github.com/kak2z7702/test_php_ru/blob/master/func.php#L67 - зачем?

    Проверки корректности даты нету, только проверка возраста. А если 31 февраля 2011 года выберут?

    empty не пропустит вполне себе нормальные логин и пароль 0. Хотя меня тоже, несмотря на опыт, на этом подловили

    https://github.com/kak2z7702/test_php_ru/blob/master/func.php#L201 - тоже самое. Лучше создать отдельный маршрут для логина. Это, правда, лично моё мнение.

    Ну пока у меня всё. MVC на функциях мне понравился :)
     
  18. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    для СЕО - поисковики видят только как гости.. а так то да.. редирект лучше поставить)) согласен))

    думал про это.. но потом как то не сделал.. согласен.. надо будет сделать проверку..

    да.. в этом случае надо было isset.. спасибо))

    в задаче стояло что на главной должен быть логин)) поэтому я сделал так)) изначально у меня была отдельная страница аутентификации))

    ну а как вообще код?? я просто впервые показал свой код кому то)) всегда как то было неудобно)) казалось что совсем по колхозному пишу))
     
  19. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.548
    Симпатии:
    1.754
    Мне понравилось. Всё логично. Ну я так, бегло просмотрел
     
    Алекс8 нравится это.
  20. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    ну вроде как лучше когда для логина ограничены символы.. мне так нравится))
    --- Добавлено ---
    сделал правки некоторые)
    исправил проблему с паролем ноль и сделал проверку даты..
     
  21. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    скажите еще кто то что то))) ):rolleyes:
     
  22. Moss

    Moss Новичок

    С нами с:
    6 июн 2017
    Сообщения:
    4
    Симпатии:
    2
    Автор привет, надеюсь ты еще тут, специально зарегился я для того чтобы тебе написать.
    Хочу заниматься программированием, и найти фриланс, опыта почти нет, создал сайт с РЕГИСТРАЦИЕЙ (PHP), хочу чтобы мастер заценил (близко к твоему заданию) и посоветовал как найти работодателя и куда двигаться вообще. Если дождусь ответа, скину сайт в личку. Заранее спасибо. Надеюсь, не обидел, перейдя на ТЫ.


     
    igordata нравится это.
  23. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    сюда кидай, не ссы.
    кроме мастера Шифу у нас тут ещё есть любители объективной разжеванной критики.
     
    Aleksanbr_77 и Moss нравится это.
  24. Moss

    Moss Новичок

    С нами с:
    6 июн 2017
    Сообщения:
    4
    Симпатии:
    2
    ))) переживал, вдруг мастера сайт завалят инекциями или админ забанит.
    Вот оно детище - http://mostop.ru


    @Fell-x27
     
  25. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.410
    Симпатии:
    1.768
    для этого надо давать ссылку на тестовый или делать бэкапы регулярно