За последние 24 часа нас посетили 22079 программистов и 1103 робота. Сейчас ищут 717 программистов ...

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

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

  1. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Книги надо читать. Там разбираются примеры кода. Ты этот код пишешь, смотришь как он работает, модифицируешь, набираешься опыта.Как вариант - создай тему мол пишу небольшие скрипты на php - парсеры всякие, средства для автоматизации того или иного действия.
     
  2. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Но зачем? Какой в этом смысл-то?:)
    Очень просто - не передавай его. Для поддержания сессии на клиенте должна быть только сессионная кука. Больше ничего другого не нужно. Каким образом ты безопасность-то повышаешь? Поделись соображениями на этот счет. :) Я вот вижу, что просто тебе хочется чего-то в куки записать, вот и все :)
    Юзай нормальную IDE. Саблиме, брекитс, нотепаде++ и тд и не будут ругаться. Они не умеют в анализ кода. Они не IDE. Они - блокноты с подсветкой синтаксиса, не более того. Хочешь функциональность IDE? Юзай IDE. phpStorm, netbeans, да хоть visual studio.
    Вполне возможно.
    --- Добавлено ---
    Не надо парсеры. Полон интернет этих парсеров. Давайте создавать что-то новое и уникальное, а не красть то, что создают другие. Мы же разработчики, а не шалупонь какая, а?
     
    SamyRed нравится это.
  3. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    Ну он же только начинает, так само как и я. С ходу он же шпарить код с головы не будет.
     
  4. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Вот и не надо начинать с парсеров. Все мы только начинали когда-то, но это не значит, что начинать надо с таких вещей. Парсеры, дорвеи, фишинги, это вот все, как по мне, одной гребенки мусор. Не надо "смолоду" руки об это марать.

    С ходу и не надо. Бумага, ручка. Рисуем, пишем. Пытаемся упаковать в алгоритм. Пишем код. Если сложно - проводим декомпозицию. Больше и не надо ничего. Не можешь держать и генерировать алгоритмы в голове - рисуй их кружочками, квадратиками, стрелочками (не обязательно прям блок-схемы, главное чтобы сам понимал, что это), на бумажке. Пусть пока будут вне головы, если так понятнее и легче.

    Это обычное дело. Я, когда только начинал кодить, еще до прихода в веб, тоже так делал. Ручаюсь, что так или иначе все так делали. И многие продолжают делать. Если я понимаю, что что-то упускаю, и если не могу уследить за сложными связями, я открываю paint или беру ручку и точно так же рисую. Как новичок, да. Только причины, по которым я это делаю сложнее, чем те, что у новичка. И то, что рисую, тоже сложнее.

    Во многих конторах у программистов всегда есть доступ к большой белой доске с маркерами. Ее задача та же. Плюс, так проще объяснять другим свою идею.
     
    kirroyal и Verico нравится это.
  5. Verico

    Verico Новичок

    С нами с:
    13 апр 2017
    Сообщения:
    39
    Симпатии:
    0
    И тут я задумался...)Спасибо, лично я многое вынес из вашего рассказа.
     
  6. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Плюсую про белую доску с маркерами и бумажку. Когда понимаешь, что в голове не умещается, берешь и пишешь. Можно рисунком, можно даже тупо своими словами, но в итоге очень быстро отсеиваются все откровенно левые варианты и выстраивается стройная схема алгоритма.
     
  7. kirroyal

    kirroyal Новичок

    С нами с:
    5 дек 2016
    Сообщения:
    12
    Симпатии:
    2
    Сейчас мне действительно просто хочется разобраться, как же безопасно хранить авторизацию в куке.
    В тот момент я размышлял так: Если я сохраню в куку хеш, то злоумышленник не сможет быстро подобрать токен.
    Тем более функция password_hash каждый раз генерит разный хеш.
    Время создания записал в бд, чтобы даже если злоумышленник скомпрометировал бд и имел возможность поперебирать варианты хешей( вот тут не знаю, насколько это быстро делается, в бд токен в открытом виде), он вылетал по истечении срока годности токена.

    На тот момент это показалось неплохим решением:D
    Тема безопасности прям заинтересовала, как изучу фреймворк, буду учиться хакать:)

    Кстати, может кто посоветует годную литературу по теме взлома-защиты?
     
  8. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    В куке хранится идентификатор сессии. Больше там хранить ничего не нужно :) Зачем там хеш? Защита от угона сессии - другой разговор. Сессию привязывают к IP или устройству, User-Agent и т.п. http://www.securityscripts.ru/articles/PHP/session-hijacking.html

    Если нужна галочка "оставаться в системе", то пишется кука с произвольной строкой, и эта же строка в базе. Если она пришла в куках - ищем в базе и авторизируем этого пользователя. Опять же, есть разные решения по безопасности. Контакт, к примеру, проверяет, не сменился ли регион IP, и если сменился, просит подтвердить номер телефона.
     
    kirroyal нравится это.
  9. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Никак. Не надо ее там хранить. Ты ответь на вопрос "зачем ее там хранить", а не "как".
     
  10. kirroyal

    kirroyal Новичок

    С нами с:
    5 дек 2016
    Сообщения:
    12
    Симпатии:
    2
    Затем, чтобы юзер мог уйти с сайта, закрыть браузер, потом вернуться и остаться авторизованным.
    Пока не знаю других способов кроме кук, как это можно реализовать.
    Понимаю, что в этой задаче просто нет такого пункта и я зря это приплел сюда, "чтобы было".
     
  11. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Ну это не через сессию делается. И уж тем более не через оставление данных для аутентификации на клиенте в открытом виде. Выше @mkramer написал общий принцип реализации галочки "запомнить меня".
     
  12. kirroyal

    kirroyal Новичок

    С нами с:
    5 дек 2016
    Сообщения:
    12
    Симпатии:
    2
    Да, взял на заметку, годная инфа.
     
  13. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    @Fell-x27 а можно вынести на обсуждение одно задание, которое я сам для себя когда то придумал и реализовал так. как умел, то-есть выложить уже готовый код. чем то схожее с обсуждаемым, но окно входа расположено не по центру, и нет проверки на возраст, зато присутствует цикл нажатия кнопки, и т.п. интересно мнение гуру к подходу решения данной задачи.
     
  14. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Ну..лучше будет, конечно, если допилишь его до ТЗ, предлагаемого в начале этого треда.
     
  15. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    тогда потеряется суть моего ТЗ так как центр окна занят, а проверку на возраст я сделаю. просто я сейчас лежу в больнице, но сегодня домой отпустили, завтра рано утром мне надо быть там, а доступ к ПК я имею только дома, поэтому и ... а дома бываю не часто и не долго, а успеть надо сегодня еще много. прошу сделать исключение!
     
  16. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
  17. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    в архиве www файлы и папки с кодом, и отдельно файл cql для создания таблиц, только в нем нужно имя БД. и в папке lib/ funkc.php проставить подходящие значения в функции конект
     

    Вложения:

    • www.zip
      Размер файла:
      328,2 КБ
      Просмотров:
      2
    • sql.zip
      Размер файла:
      891 байт
      Просмотров:
      0
  18. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Не, а вот архивы качать мало желающих найдётся. Выложи на халявный хостинг и гитхаб
     
  19. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    @mkramer ? то-есть закинуть на хостинг в виде готового сайта?
    --- Добавлено ---
    если да, то пару минут, и скину ссылку
    --- Добавлено ---
    если да, то пару минут, и
    --- Добавлено ---
    http://annutka.tk
     
    Fell-x27 нравится это.
  20. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    upload_2017-5-6_20-33-27.png
    Ну имя пользователя ещё ладно, а какая тебе разница, что я напишу в пароль? Всё равно его захешируешь. Кинь исходники на гитхаб, чтоб не качать.
    --- Добавлено ---
    Ещё и отбраковал мой замечательный ник hren. Что в нём плохого?
     
    Aleksanbr_77 и [vs] нравится это.
  21. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    @mkramer наверно пробел нашел, вообще проверка стоит только на символы, на словосочетания проверок нет, скорее всего пробел. блин, написано с грамматическими ошибками, вижу сейчас, я просто на химиотерапии сейчас, за руль нельзя садиться, и внимательность храмает тоже. грамматику исправлю
     
  22. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    1) Дизайн оставим за скобками. Он странен.
    2)
    Зачем? В чем смысл данных ограничений? :) Особенно по паролю. Они же ослабляют его.
    3)
    Про длину никто не предупреждал. Про несовпадение - ложь. Не было такого. Копипаста не может не совпадать.
    4)
    А почему бы автоматом не сделать логин пользователя после регистрации?
    5) Не хватает редиректов после отправки форм.
    6) Проверка загружаемых файлов хромает. Я тебе только что залил php-файл под видом png-шки.

    Код пока не глядел. Жду гитхаба.
     
  23. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    @Fell-x27 создал аккаут на гитхабе, просит
    URL-адрес старого репозитория. старого нет, а как с ПК туда закинуть
    архив?
    считал что так обезопашусь от нежелательных символов так как пароль шифрует устаревшая md5() и нет соли на пароль, тоже минус к которому я готов!
     
  24. Fell-x27

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

    С нами с:
    25 июл 2013
    Сообщения:
    12.155
    Симпатии:
    1.769
    Адрес:
    :сердА
    Не шифрует, а хэширует. И о каких нежелательных символах идет речь? Таких для хэширования нет. Хэш-функция принимает на вход пачку байт. Ей плевать, что они значат. Захэшировать можно любую последовательность данных, включая файлы.

    Далее. Для защиты от нежелательных символов, скажем, в логине, нужно не пользователя ограничивать, а правильно экранировать данные, вставляемые в БД. Знал бы ты, как бесит, что на ряде ресурсов мне приходится писать свой ник как Fell_x27, или, того хуже, Fellx27, просто вот потому, что по какой-то причине там решили ограничить набор символов. Хотя это, на деле, не имеет никакого смысла.
    --- Добавлено ---
    Всмысле готов? Услышать о нем? Или готов в плане каких-то мер безопасности? Если второе, то нет, не готов. Ты упростил жизнь злоумышленнику. Ты явно указал набор символов, используемый в пароле, чем нереально сократил диапазон перебора. К тому же, покуда соли нет, ты открыл доступ к перебору по радужным таблицам. Это плохо. И "нежелательные символы" тут не играют никакой роли.

    Сегодня, для таких вещей в PHP предусмотрен встроенный инструментарий. password_hash() и иже с ним. Почитай про это. И пользуйся наздоровье.
     
    Aleksanbr_77 нравится это.
  25. Aleksanbr_77

    Aleksanbr_77 Новичок

    С нами с:
    31 янв 2016
    Сообщения:
    115
    Симпатии:
    5
    @Fell-x27 понял, значит не готов, и еще вопрос про проверку на тип файла, как лучше реализовать?
    я делал
    PHP:
    1. if ($_FILES['name_downl_file']['type'] != 'image/jpeg')
    но видно что этого не достаточно