За последние 24 часа нас посетили 17572 программиста и 1711 роботов. Сейчас ищут 1767 программистов ...

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

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

  1. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    не встретил не в одном учебнике функцию eval(); Она есть в справочниках. Но в азах не видел. Сейчас прочту.
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Есть учебники для профессионалов, разные методологии, патерны, алгоритмы, тестирование, devops, CVS, deploy.
     
    askanim нравится это.
  3. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    что нибудь посоветуешь ?
     
  4. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    читай всё подряд, самые свежие обычно на английском
     
  5. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Проблема в том что половина учебников, не очень. Там тупо азы.
    Но нашёл интересную книгу, засяду походу на выходные, чтением в запой.
    Вот её название.
    php объекты шаблоны и методики программирования 4-е издание
    Автор Мэтт Зандстра

    Так а вот и сама книга:
    клац сюда
     
    human1 нравится это.
  6. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    и это хорошо. Тебе дают азы. А дальше либо у тебя мозг способен самостоятельно развиваться, искать нужную тебе информацию и технологии, либо ты должен признать себя аутистом и бросить программирование.
     
  7. askanim

    askanim Старожил

    С нами с:
    7 апр 2016
    Сообщения:
    2.201
    Симпатии:
    166
    Адрес:
    GABRIEL
    Я иногда, себя считаю таковым, до тех пор пока не познаю в чём суть проблемы, но при этом, почему то желание бросать программирования нету. А смысл, уйти работать дворничком ? А толку проработать дворником и просто потом сдохнуть ? Как то звучит удручающе, люди вам так не кажется?).... Мне интересно развитие, надо же после себя хоть что-то в жизни оставить, отсюда и желание развиваться. Но знаешь все дураки смотря от какой точки умности отходить и с чем сравнивать. :) Даже самый умный полный дурак, и он сам это подтвердит через год своего развития, что год назад был дураком, даже если и сейчас не признает себя дураком, но зато через год в цикле повторится тоже самое. Мне порой кажется, что теория матрицы(Имею введу фильм) вполне реальна :) Самая умная фраза которую я слышал в жизни это фраза Сократа.
    Я знаю, что ничего не знаю

    И честно скажу, я не собираюсь останавливаться даже если мой мозг не способен это переворить, я это переварю обязательно и время покажет :) Я обязательно сделаю то что оставит свой след в истории, ну надеюсь оставить после себя что нибудь умное, но пока не чего кроме глупости, но время покажет жил я просто так или всё таки нет :) :)

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

    Литературы полно, но вопрос в том нужная ли она и актуальная ли, а определить это может только тот кто уже знает :)

    И пофигу что пишу безграмотно, зато мыслю правильно, и это меня греет :L Ну надеюсь, я не ошибаюсь. Не хочу ошибится с путём жизни, а то потом будет горестно.
     
    #157 askanim, 1 июл 2016
    Последнее редактирование: 1 июл 2016
    aleks85 нравится это.
  8. bikerlex

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

    С нами с:
    2 дек 2014
    Сообщения:
    344
    Симпатии:
    40
    +100500
    Бесит когда какой-то сайт, на котором я регаюсь только для того, чтобы один раз чем-то воспользоваться, решает за меня сколько мне символов и какие символы вводить. Я больше на него не собираюсь возвращаться и скрывать мне там нечего, пароля "1" достаточно.
    --- Добавлено ---
    А если ещё и с простым паролем типа "1111111" не дает зарегится это ваще жесть.
     
    denis01 нравится это.
  9. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Как-то так: http://surikat-project.kl.com.ua/
    Всего 3 файла. styles.css, index.php, db.php.
    db.php не выкладываю. Там всего 11 строк. Подключение и проверка. Стили можно найти в исходном коде.
    --- Добавлено ---
    Потратил примерно 2,5 часа
     

    Вложения:

    • index.txt
      Размер файла:
      6,8 КБ
      Просмотров:
      12
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    1) выкладывай уж и db :)
    2) Выложи плз в виде листинга, чтобы удобно было читать прямо с браузера. Можно тут, оформив через кнопку </>, можно как-то еще. Но, желательно, с подсветкой синтаксиса, да.
     
  11. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    @SamyRed
    залей на гитхаб!
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Когда пробую регаться с заведомо кривыми данными, вижу вот такое
    upload_2017-1-23_12-36-28.png
    Число не всегда равно 0. Первый раз оно было равно 10.
    --- Добавлено ---
    upload_2017-1-23_12-38-29.png
    --- Добавлено ---
    Далее. Использование инпут тайп date - сомнительная затея. Они до сих пор не стандартизированы и везде ведут себя по-разному, а на некоторых мобильных браузерах просто конвертируются в text. И у Хьюстона начинаются проблемы. Три выпадающих списка - день, месяц, год. Проверено, работает. Юзается монстрами от IT повсеместно.
    --- Добавлено ---
    Ну и формочка висит чуть выше центра, а не прям по центру, но это третично. В код пока не смотрел, нет времени. Если не считать вылезающие числа и использование date, то заказчик почти принял работу и готов передать ее на ревью.
     
  13. acho

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

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    @Fell-x27, а ты специально нижнее значение на -150 взял, да? :D
     
  14. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    По коду:
    1) Обработка ошибок. Ты заводишь кучу переменных, каждая отвечает за свою ошибку.
    А потом у тебя
    PHP:
    1.  if (isset ($loginEmpty) && $loginEmpty == true) {
    2.         echo '<div class="alert alert-danger">Логин не должен быть короче 4-х символов!</div>';
    3.     } else if (isset ($loginErr) && $loginErr == true) {
    4.         echo '<div class="alert alert-danger">Логин занят!</div>';
    5.     }
    6.     if (isset ($passEmpty) && $passEmpty == true) {
    7.         echo '<div class="alert alert-danger">Пароль не может быть короче 4-х символов!</div>';
    8.     }
    9.     if (isset ($repassEmpty) && $repassEmpty == true) {
    10.         echo '<div class="alert alert-danger">Вы не повторили пароль!</div>';
    11.     } else if (isset ($repassErr) && $repassErr == true) {
    12.         echo '<div class="alert alert-danger">Пароли не совпадают!</div>';
    13.     }
    14.     if (isset ($dateEmpty) && $dateEmpty == true) {
    15.         echo '<div class="alert alert-danger">Вы не указали дату</div>';
    16.     } else if (isset ($dateYong) && $dateYong == true) {
    17.         echo '<div class="alert alert-danger">Вам нет 5-ти лет!</div>';
    18.     } else if (isset ($dateOld) && $dateOld == true) {
    19.         echo '<div class="alert alert-danger">Вам не может быть больше 150-ти лет!</div>';
    20.     }
    21.     if (isset ($regErr) && $regErr == true) {
    22.         echo '<div class="alert alert-danger">Ошибка записи в БД! Обратитесь к администратору</div>';
    23.     }
    Можно сделать лучше. Можно вместо кучи переменных завести один-единственный массив $errors.
    В него, при возникновении ошибки, класть в значение текст ошибки, а в ключ - некий идентификатор ошибки. Либо завести два массива. В одном перечислены все возможные ошибки с заготовленными сообщениями и кодами в качестве ключей. А второй массив - это сборщик возникающих ошибок, собирающий только коды.

    В конце мы циклом пробегаемся по массиву, собравшему ошибки и, в замисимости от выбранного решения, либо просто выводим сразу значения по ключам, либо выводим значения по ключам из массива с прописанными ранее ошибками.

    Меньше кода, меньше хардкода, больше гибкости, больше расширяемости, легче поддержка.

    2) Проверка занятости логина
    PHP:
    1. $q = $db->query ("SELECT * FROM `users` WHERE `login` = '$login'");
    2.         if ($q->num_rows) {
    3.             $loginErr = true;
    4.         }
    Эту проверку можно вообще вынести на уровень логики БД, объявив поле с логинами уникальным. Итого, вместо двух запросов, получаем всего один, который либо вернет успех, либо ошибку нарушения уникальности значения.


    3) Проверка на наличие ошибок в ходе работы.
    У тебя сейчас это
    PHP:
    1. if (!$loginErr && !$loginEmpty && !$passEmpty && !$repassErr && !$repassEmpty && !$dateYong && !$dateOld && !$dateEmpty)
    Если же сделаешь как я описал в пункте 1, твоя проверка сократится до проверки на пустоту массива-сборщика. Код станет красивее, проще, бла бла бла, все счастливы.
    4) Хранение паролей
    Код (Text):
    1. ("INSERT INTO `users` VALUES (NULL, '$login', '".md5(md5($pass))."', '$date', '0')")
    md5(md5( никуда не годится. В PHP давно есть нативные инструменты для хэширования паролей. Если не хочешь их использовать, то, тогда, хотя бы пользуйся более крепкими хэш-функциями типа whirpool и, обязательно, соли пароли. Почитай, что такое соль, зачем она нужна. Это капец как важно. Вот тебе исчерпывающий материал по этой теме.
    5) Верстка. Ты забыл про доктайп. Аяяй. Он нужен даже сегодня. Пусть он всего лишь html, но он нужен.
    6) Так писать не обязательно:
    HTML:
    1. <link rel="stylesheet" href="./styles.css">
    Можно просто так
    HTML:
    1. <link rel="stylesheet" href="styles.css">
    ресурс, указанный "как есть" автоматом считается лежащим на одном уровне со страницей.
    7)Хедер на странице обычно всего один, по этому запись
    HTML:
    1. <div class="header">
    несколько избыточна. В HTML5 у нас есть новый тег <header></header> для таких нужд.

    Как-то так.
    --- Добавлено ---
    Да, пункт ТЗ отдельный:

    Кстати, спасибо за напоминание. Надписи должны быть именно такие, @SamyRed.
     
  15. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    В общем, приду домой - буду всем отвечать. Щас, увы, не могу
     
  16. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Если не сложно - объясни ,зачем он нужен? Я, просто, не пойму совсем.
    --- Добавлено ---
    Привычка. Так я более уверен в том что все будет работать правильно.
     
  17. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Потому что это нужно для облегчения жизни браузеру и для гарантии корректной обработки твоей верстки, а не по принципу "прокатит или не прокатит". Вникай.
     
  18. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Тоже дело привычки. Мне, например, проще использовать класс.
    --- Добавлено ---
    Если это принципиально - ищменю когда буду дома. Была у меня в час ночи идея что это принципиально, но я подумал сделать красивее))
     
  19. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Есть как привык, а есть как правильно. В данном случае правильно использовать либо тег, либо ID. Но не класс.
     
  20. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Ну к заданию это никак не относится) мог вообще без хеширования сделать)
    --- Добавлено ---
    А вот за это спасибо. Учту. Я тоже думал, что это не совсем красиво, создавать дофига переменных.
     
  21. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Я писал ранее, что безопасность и качество исполнения - это дефолтные ожидания от кода. Заказчик не должен в ТЗ прописывать, что код должен быть закрыт от инъекций, а пароли грамотно захешированы с использованием соли. Это подразумевается само собой. ТыжспециалистЪ.

    Тут как бы два этапа - сначала принятие функциональности, от лица "заказчика", а потом уже ревью кода - от лица любого, кто решил заглянуть в код. Без условностей, как есть. Не принимай это как нападки или оскорбления в свой адрес. Принимай как дружеские советы. Их цель - не чтобы у тебя бомбило, а чтоб ты сделал выводы и, быть может, вырос над собой же, но не наступая на такие грабли в реальном мире. В реальном мире такие грабли бьют по лбу стократно больнее, чем форумная критика.
     
  22. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Эта штука выводится, на сколько я помню, постом, или ошибкой БД. Приду домой - посмотрю
    --- Добавлено ---
    Ниумею:(
    --- Добавлено ---
    Посмотреть вложение 1010
    --- Добавлено ---
    Далее. Использование инпут тайп date - сомнительная затея. Они до сих пор не стандартизированы и везде ведут себя по-разному, а на некоторых мобильных браузерах просто конвертируются в text. И у Хьюстона начинаются проблемы. Три выпадающих списка - день, месяц, год. Проверено, работает. Юзается монстрами от IT повсеместно.
    --- Добавлено ---
    Ну и формочка висит чуть выше центра, а не прям по центру, но это третично. В код пока не смотрел, нет времени. Если не считать вылезающие числа и использование date, то заказчик почти принял работу и готов передать ее на ревью.[/QUOTE]
    Тоже учту. А насчет вертикального позиционирования - низнаю:(
    Точнее, не нашел красивый способ. Нашел какую-то фигню.
    --- Добавлено ---
    Посмотреть вложение 1010
    --- Добавлено ---
    Далее. Использование инпут тайп date - сомнительная затея. Они до сих пор не стандартизированы и везде ведут себя по-разному, а на некоторых мобильных браузерах просто конвертируются в text. И у Хьюстона начинаются проблемы. Три выпадающих списка - день, месяц, год. Проверено, работает. Юзается монстрами от IT повсеместно.
    --- Добавлено ---
    Ну и формочка висит чуть выше центра, а не прям по центру, но это третично. В код пока не смотрел, нет времени. Если не считать вылезающие числа и использование date, то заказчик почти принял работу и готов передать ее на ревью.[/QUOTE]
    Тоже учту. А насчет вертикального позиционирования - низнаю:(
    Точнее, не нашел красивый способ. Нашел какую-то фигню.
    ни в коем случае. Критику воспринимаю всегда адекватно ,тем более, ты знаешь по более меня.
     
  23. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    https://github.com/SamyRed/surikat-project/
    --- Добавлено ---
    Отображение цифры в начале убрал (Это был вывод длины reg-date, для дебага).
    --- Добавлено ---
    Способ вывода ошибок тоже изменил на массив.
     
    igordata нравится это.
  24. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Дату тоже изменил на 3 селекта. Не учёл только високосные года, и в каждом месяце у меня 31 день. Но если помучаться, то можно исправить.
     
  25. SamyRed

    SamyRed Старожил

    С нами с:
    23 июл 2015
    Сообщения:
    1.196
    Симпатии:
    111
    Адрес:
    Украина
    Добавил соль к паролю. Не знаю, правильно ли. Проверьте.