• Что такое aria и role атрибуты?

    @cy6eria
    ARIA - это стандарт разработанный для людей с ограниченными возможностями. Эти атрибуты ничего не делают, но позволяют специальным программам (например, экранному диктору) ориентироваться на странице. Подробнее можно почитать тут
    Ответ написан
    1 комментарий
  • Post и Get запросы, какая между ними разница и что лучше и для каких целей?

    socengel
    @socengel
    7 лет native php в продакшене, онлайн 20000+,
    Общего между ними то что они работают одинаково. Разницы между ними технически никакой. А вот идеологические различия есть.

    Я расскажу о них в контексте PHP. Прошу заметить что протокол HTTP к PHP имеет косвенное отношение потому что он создавался для обмена html страницами а PHP просто расширяет возможности и того и другого.

    GET запрос используется чтобы получить данные а POST чтобы отправить. (Напоминаю что технически они работают одинаково).

    Поэтому в контексте PHP опираясь на эту идеологию сделали следующим образом:
    1. При каждом запуске PHP по умолчанию создаются суперглобальные массивы ($_GET, $_POST).
    2. Если в строке запроса есть вопросительный знак(?). То все что после него считается параметрами GET запроса они представлены в формате 'ключ'='значение' и в качестве разделителя используется знак амперсанда (&)
    Пример:
    GET /index.php?name=Андрей&surname=Галкин
    это строка запроса, тут 2 параметра. эти параметры попадут в массив $_GET.
    3. $_POST заполняется другим способом. содержимое этого массива заполняется из "заголовков запроса". То есть из места, скрытого от глаз в явном виде. Всю рутину по созданию таких заголовков берет на себя браузер. Хотя иногда и что-то редактируется в заголовках в ручную.

    Чаще всего пост запрос используется в формах (для отправки данных).

    Например у нас есть форма для входа 2 поля логин и пароль.

    Представим что мы используем GET метод. Тогда при отправке формы мы перейдем на следующий адрес /login.php?login=Андрей&password=123 согласитесь что так передавать такую информацию совсем не безопасно. Любой может открыть ваш браузер и начиная вводить адрес сайта он из истории может увидеть ваши пароли и логины.

    А вот если бы мы указали методом POST то мы бы получили следующий запрос:
    POST /login.php (login=Андрей&password=123) то что в скобочках было бы скрыто и никак не сохранено в браузере.

    Теперь другая ситуация например форма поиска. Мы вводим текст и получаем страницу с результатами. Вот тут уместнее GET форма. потому что нам было бы удобно сразу иметь ссылку на результат поиска, то есть добавить в строку запроса можно выразится "Публичные параметры", которыми можно поделиться. И как результат в строке браузера будет конкретная ссылка на текущую страницу. Мы можем ее скопировать, и разместить где-нибудь, или например скинуть другу. И получить при переходе одну и ту же страницу. А не просить других людей зайти на сайт и в поиск вбить определенную фразу чтобы получить необходимую страницу.

    В общем подводя итог:
    GET - это чтобы получить определенную страницу в определенном виде ( сортировка, текущая страница в блоге, строка поиска и т.п. ).
    POST - для оправки данных которые не влияют на отображение страницы, в том плане что эти данные влияют только на результат выполнения скрипта ( логины, пароли, номера кредиток, сообщения и т.п. ).

    И еще одна хорошая новость их можно комбинировать, например
    POST /index.php?page=login (login=Андрей&password=123) Думаю я уже достаточно объяснил что из этого получится и какие параметры в какой массив попадут.
    Ответ написан
    2 комментария
  • Как правильно использовать CSRF токены?

    @egorinsk
    Токен достаточно иметь один на сессию. При несовпадении токена надо показать сообщение «Произошла ошибка. Пожалуйста, проверьте введенные данные, и отправьте форму еще раз».

    Естественно, сообщение надо показать вместе с формой с заполненными данными, а не на пустой стрнаице.

    GET-формы, не вносящие изменений в базу данных, вроде формы поиска, не надо защищать.
    Ответ написан
    Комментировать
  • Чем отличаются Request от Query?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    В мире программирования - это синонимы.

    В жизни Request подразумевает формализованный запрос, например официальный запрос информации о каком-то предмете, который подразумевает заполнение некоторой формы (формуляра).

    Query - это просто вопрос.

    Например, вы приходите в банк, вам нужно открыть кредит. Когда вы спрашиваете, в какое окошко вам обратиться, это query, когда заполняете форму это fill in application, когда отправляете форму на рассмотрение - это и есть request.
    Ответ написан
    Комментировать
  • Чем куки отличаются от сессии в PHP?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Нууу давайте разбираться.

    Для начала почитайте про HTTP на той же вики. Досканально знать не нужно, но стоит минимально понимать структуру запросов/ответов, понимать что у запроса и ответа есть заголовки и тело (тела может и не быть, зависит от типа запроса/ответа).

    Так вот. Куки. Куки живут на стороне браузера. Они передаются HTTP заголовком на каждый запрос на сервер (даже если вы за картинками полезли). Есть просто куки, есть http-only куки. Куки могут быть разграничены по хосту и пути. Все это дает нам гибкость и помогает с секьюрностью. В PHP содержимое $_COOKIE предоставляет нам SAPI. Когда PHP получает на обработку запрос, SAPI используемое (php-fpm, cgi, mod_php имеют свои реализации SAPI) в данный момент берет заголовки и тело запроса, парсит их и заполняет все эти суперглобальные массивы типа $_SERVER, $_GET и в том числе и $_COOKIE. Все что прислал нам клиент (что-то что делает запросы это клиент, что-то что их обрабатывает - сервер), а куки шлет нам браузер только те что можно исходя из того куда шлется запрос. Устанавливаются куки заголовком Set-Cookie в ответе, то есть тут больше нужно читать в принципе про HTTP а не про PHP. PHP просто позволяет вам работать с этим добром. Вы можете сэтить куки напрямую работая с заголовками ответа при помощи функции header. Более того, если выставить время жизни куки в 0, то как раз таки они а не сессия будет сбрасываться при закрытии браузера так как тот будет забывать все такие куки.

    Вот... сессии... В PHP сессия обычно это файл. Просто какой-то файл с рандомным именем. Если скажем в php.ini указано session.autostart или делается вызов session_start то создается файл под сессию пользователя (можно переместить в рэдис или мемкэш, свое хранилище и т.д в зависимости от нужд. Так же данные можно шифровать, что по умолчанию и происходит). Этот файл имеет ID, просто какая-то рандомная строка. И если при обработке запроса не нашлась сессия с предыдущего запроса - создается новая.

    И вот мы подошли к самому интересному - как PHP связывает сессию с предыдущего запроса с текущей. И тут все довольно просто - куки. Когда пользователю присваивается сессия, автоматически сэтится http-only (что бы нехорошие люди не могли из js увести нашу сессию) кука, в которую записан идентификатор сессии. В дебагере браузера можете посмотреть есть ли у вас кука PHPSESSID (название можно менять в настройках, да и вообще сессии можно не только через куки связывать, но это уже загоны по секьюрности) когда будете эксперементировать с сессиями.

    Когда запрос обрабатывается SAPI, при наличии session.autostart, перед тем как начинать создавать новую сессию, пых все же смотрит а есть ли у нас кука с идентификатором сессии, проверяет есть ли у него такая, и если есть успокаивается и не создает новую. Поскольку сессия привязывается через куки, то можно выставить время жизни этой самой куки (в php.ini) и таким образом регулировать время жизни сессии.

    Вот... когда использовать куки а когда сессии? Желательно понимать, что чем больше данных в куках (а у них есть лимит к слову) - тем больше данных мы передаем на каждый запрос. То есть это не круто когда что бы получить 1 килобайт данных мы должны в заголовках передать пару килобайт кук. Люди, повернутые на оптимизации, даже картинки хранят на отдельных cookie-less доменах что бы уменьшить количество трафика и пакетов (обычно простенький HTTP запрос влазит в размеры одного TCP пакета). Если вам нужно работать с этими данными из JS на любой странице, например локаль выбранноую пользователем для того что бы применять переводы еще и в JS, то стоит использовать куки. Для всео остального лучше конечно же использовать сессии. Во всяком случае на начальных этапах когда что-то сильно сложное вам делать не придется.
    Ответ написан
    2 комментария
  • WebStorm или PhpStorm от JetBrains: в чем разница?

    TekVanDo
    @TekVanDo
    Javascript Developer
    Выбирай PhpStorm, в нем практически все тоже самое что и в WebStorm + собственно поддержка php, фреймворков и некоторых cms на нем написанных.
    Ответ написан
    Комментировать
  • WebStorm или PhpStorm от JetBrains: в чем разница?

    ollazarev
    @ollazarev
    Web-программист
    PhpStorm = WebStorm + PHP + Database support
    (stackoverflow.com/questions/25647004/difference-be...
    Ответ написан
    Комментировать
  • Как решить проблему с окончанием строк Git + phpStorm?

    nazarpc
    @nazarpc
    Open Source enthusiast
    В настройках PhpStorm есть опция опция окончания строки, а также её проверки перед коммитом (он может сам привести всё к нужному виду).
    Settings->Project Settings->Code Style->General->Line separator (for new files)
    Settings->Project Settings->Version Control->Git->Line Separators Conversion
    Ответ написан
    2 комментария
  • Как сделать веб-сервис и не утонуть в процессе?

    gobananas
    @gobananas
    finishhim.ru
    1. Выделить одну главную функцию сервиса
    2. Сделать её, сверстать и выкатить, это будет MVP
    3. Не заморачиваться с вёрсткой
    4. Не заморачиваться с методами авторизации
    5. Не думать про нагрузку, не заниматься оптимизацией кода и БД
    6. Если поймали себя на мысли что вы думаете какой паттерн тут применить вы в Ж, просто пишите код, который работает!!
    7. Не совмещать написание сервиса, который вы РЕАЛЬНО хотите запустить с изучением чего-то нового (языка, БД). Утоните в учёбе и никогда не запустите.

    Это всё на своём опыте написания проекта говорю вам а не голословно ))
    Ответ написан
    10 комментариев
  • Как прижать Footer к низу в Grid?

    vadimkot
    @vadimkot Куратор тега CSS
    Примерно также как и на флексбоксе делается - для начала сделать высоту body в 100%
    https://codepen.io/anon/pen/QQwYav
    Ответ написан
    Комментировать
  • Когда в PHP использовать интерфейсы, а когда абстрактные классы?

    try4tune
    @try4tune
    С точки зрения архитектуры:

    Интерфейс описывает свойства. Обратите внимание на классические названия интерфейсов: Throwable, Countable, Comparable, Iterable и т.д. Возьмем, к примеру, интерфейс Rollable (катящийся), и Foldable (складывающийся).

    Абстрактный класс же описывает сущность. Например, стол: Table_Abstract. Стол может быть деревянным, тогда будет Table_Wood extends Table_Abstract. Также стол может быть хирургическим: Table_Surgical extends Table_Abstract. В таком случае Table_Abstract объединяет общий свойства всех столов (скажем, площадь поверхности, наличие ножек и т.п.). А конкретный класс описывает сущность определенного типа столов.

    Связью же интерфейсов и классов Вы описываете свойства. Например, стол можно катить: Table_Abstract implements Rollable. Деревянный стол, например, можно сложить: Table_Wood implements Foldable.
    Ответ написан
    5 комментариев
  • Защита экрана Macbook Pro 13 Retina 2015 от Staingate?

    BVadim
    @BVadim
    Потёртости могли появиться, если ноутбук носили одной рукой, держа его как папку, т.е. по сути прижимая экран к клавиатуре. Многие любят так носить ноутбуки. При нормальном ношении, в том числе в сумке, экран не соприкасается с клавиатурой. Давление пальцами, которое необходимо для того, чтобы удержать ноутбук одной рукой - довольно сильное и оно продавливает экран, так что он прижимается к клавиатуре.

    У самого был Pro Retina 13", пользовался аккуратно полтора года. Когда продавал, экран был в идеале, как из коробки. Протирал микрофиброй для оптики, никакие средства не использовал. Плёнка - это извращение, только портить изображение.
    Ответ написан
    1 комментарий
  • За что отвечает language injections в phpstorm?

    BOOMER_74
    @BOOMER_74
    Full-Stack разработчик
    Это встраиваемые языки, т.е. если у Вас в строковой переменной находится HTML, то для него будут работать и подсветка, и все проверки.
    Ответ написан
    Комментировать
  • Как отключить cleartype в mac os?

    try4tune
    @try4tune
    Не отключайте, мой Вам совет. Через неделю-две не сможете смотреть на виндовые шрифты без отвращения.
    Ответ написан
    Комментировать
  • Как взять случайную запись из таблицы, но чтобы ID записи этой, не встречалось в другой таблице?

    @kirill-93
    SELECT * FROM `table1` WHERE `id` NOT IN(
        SELECT `id` FROM `table2`
    ) ORDER BY RAND() LIMIT 1
    Ответ написан
    Комментировать