Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
passshift

# a r t u r #

php, js, html5, css
  • 20
    вклад
  • 66
    вопросов
  • 78
    ответов
  • 18%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как поставить в phpstorm вкладки в 2 ряда?

    DevMan
    DevMan @DevMan
    настройки -> Editor -> General -> Editor Tabs -> Show tabs in one row
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Почему jetBrains не русифицирует свои продукты?

    gadfi
    Олег Гамега @gadfi
    https://gamega.org
    Ага.
    Пусть еще тему по мотивам хохломы сделают, с медведями и балалайками.

    с хохломой в следующем релизе )
    post-3-13143552679398.jpg

    А если серьезно, то это прост никому не нужно.
    Ответ написан более трёх лет назад
    4 комментария
    4 комментария
  • Как правильно хранить документы в открытом доступе?

    ThunderCat
    ThunderCat @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1) не лучший вариант, но просто реализовать - http авторизация.
    2) Вариант более верный - напрямую к папкам доступ не давать( в идеале папки вообще должны быть выше документ рут), по запросу документа через роутер/контроллер определять имеет ли пользователь права на чтение и тогда уже отдавать его средствами пхп через echo + file_get_content().
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как гарантировать списание денег с баланса?

    Олег @402d
    начинал с бейсика на УКНЦ в 1988
    Они Вам нужны 30(31) * число клиентов записей списаний.

    Дано :
    Баланс на начало месяца.
    Получено в этом месяце.
    Услуга 1 АКТИВНА: 300 рублей / месяц
    Услуга 2 АКТИВНА : 100 рублей / месяц
    Услуга 3 ЗАКОНЧЕНА (5 числа) : 100 рублей / месяц
    Услуга 4 ПОДКЛЮЧЕНА ( 20 числа): 300 рублей / месяц

    Прошло дней с начала месяца
    Дней в месяце

    Баланс = Баланс на начало месяца + Получено в этом месяце
    - 300 / Дней в месяце * Прошло дней с начала месяца
    - 100 / Дней в месяце * Прошло дней с начала месяца
    - 100 / Дней в месяце * min ( день завершения, Прошло дней с начала месяца)
    - 300 / Дней в месяце * max(0, ( Прошло дней с начала месяца - число подключения ))

    в результате нужно будет только раз в месяц обработку базы делать
    Ответ написан более трёх лет назад
    6 комментариев
    6 комментариев
  • Как гарантировать списание денег с баланса?

    paulfcdd
    Павел Новиков @paulfcdd
    PHP/Sf/WEB developer
    Вам нужен Cron для такого чего-то.
    что если крон выполнится несколько раз
    - это говорит о том, что вы не до конца понимаете, как работает крон, вам нужно почитать доки. Крон - это серверный демон, он выполняется сугубо по определенным датам/времени, вернее он вызываает команду, которая должна исполняться. нет возможности, чтобы крон выполнился 2 раза за день, если сконфигугрирован выполняться 1 раз в день.
    а что если сервер упадет
    - если у вас упадет сервер, то не важно, что вы будете использовать, крон или не крон, у вас просто все перестанет работать.
    Кроме того, можно в таблицу где у вас хранятся данные о списании, добавить дату списания, и сверяться по ней, что даст гарантию того, что если дата списания сегодняшняя, то не списывать и тд. Вообще, такс на самом деле очень простой, заключается в конфигурации крона и написании достаточно простой команды для него с не очень сложной логикой и логгированием каждого списания.
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • Как гарантировать списание денег с баланса?

    webinar
    Максим Тимофеев @webinar Куратор тега Веб-разработка
    Учим yii: https://youtu.be/-WRMlGHLgRg
    1. CRON

    а что если сервер упадет

    Другие решения при упавшем сервере по Вашему будут отлично работать?

    а что если крон выполнится несколько раз

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

    что можно мутить с историей списание (она полюбому нужна), и при списании сверяться, но это не дает гарантии от параллельного списания

    Почему это не дает гарантии? Если есть запись о списании в этом месяце - не списываем. Как это может не работать? Вижу только вариант с коллапсом вселенной или временной отменой "1+1=2".

    интересует сама логика и инструменты

    Инструменты: cron + php
    Логика: запустились, выбрали из базы кого списывать, списали, записали в БД что списали и сменили статус на оплачено. Опционально, ведем отдельный лог в txt файле, что когда и как.
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как написать движение объекта по случайной траектории?

    sitev_ru @sitev_ru
    sitev.ru - мой блог ...
    Алгоритм такой:

    1. Назначаешь машинке случайный угол 0 - 360 градусов
    2. С периодом, например, раз в 3 сек вызываешь функцию рандом, если она равна 0 - едишь дальше, если 1 - угол поворота уменьшает, например, на 15 градусов, если 2 - угол поворота увеличиваешь на 15 градусов.
    Ответ написан более трёх лет назад
    5 комментариев
    5 комментариев
  • Как правильно составить регулярку?

    Kaylos
    Константин Хаиров @Kaylos
    Да регулярные выражения нужная вещь . В принципе до меня уже дали хорошие ответы . А это вам в качестве шпаргалки , очень полезная картинка

    df2c9354b4ef4c1f8a14095a36169b47.png
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как правильно составить регулярку?

    rim89
    Виталий @rim89
    программист-велосипедист
    потратить полтора часа и вникнуть - https://www.youtube.com/watch?v=JbgvaQ_rM4I
    Ответ написан более трёх лет назад
    Комментировать
    Комментировать
  • Как правильно составить регулярку?

    BuriK666
    Андрей Буров @BuriK666
    Компьютерный псих
    explode('; ', 'слово; слово; слово')
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как парсить json с чужого сервера?

    PrAw @remzalp
    Программер чего попало на чем попало
    Просто по запросу ссылки отдаётся html страница, в ней JS код, который проверяет наличие куки c нужным именем и IP адресом, если нету - устанавливает её и перезагружает страницу
    Фрагмент установки: setCookie('Y...6', '1.2.3.4', 10);

    Для того, чтобы выяснить минимальный набор заголовков, который надо передавать - используйте Chrome, инструменты разработчика, вкладка Network, правым кликом на запросе - "Copy as Curl (cmd)".

    Для тестирования скачать curl for windows, крутить запрошенный текст в командной строке, по одному убирая параметры -H

    Еще будет полезен ключик -k, чтобы не ругалось на сертификаты:
    curl -k "https://...." .....

    Когда удалось вполне разумно руками получать результат, пишите то же самое на PHP. PHP cURL справляется на ура.

    Соответственно вся логика - запрашивается страница с нужными заголовками, если отдали html, то проанализировать значение куки, поправить в запросе и переслать заново. Для совсем первого запроса запрашивать без куки, для следующих - сохранять.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как вывести на страничку текст из многих файлов?

    Jony1337 @Jony1337 Автор вопроса
    Файл admin.php был не в папке с файлами .txt решил проблему переместив файлы !!!
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Где именно формировать сообщение?

    trevoga_su
    trevoga_su @trevoga_su
    Правильно ли так формировать уведомления?
    нет
    после любого post-запроса надо делать header: location

    как передать уведомления - www.phpinfo.su/articles/theory/peredacha_dannyx_po...
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • По какой схеме работают агрегаторы платежных систем и как реализовать такую схему для личного пользования?

    akubintsev
    Александр Кубинцев @akubintsev
    Опытный backend разработчик
    Вы упускаете вопросы по безопасности со стороны платежных систем. Очень часто они интересуются "а с какой страницы у вас происходит оплата", "а какой адрес у вашего интернет-магазина" и .т.п. Решалось на верхних уровнях, где объясняли нетипичность проекта. Надо просто к этому быть готовым.

    Технически я делал такую штуку на основе не взлетевшего проекта платежного агрегатора.

    По поводу технической реализации нужно api которое будет:
    1) создавать ордер с параметрами siteId, amount, email, externalOrderId, successUrl, declineUrl, callbackUrl и возвращая в ответ orderId
    2) принимать команду на платеж по orderId
    3) отстукивать siteId при получении колбеков от платежных систем по указанному callbackUrl с параметрами orderId, externalOrderId, amount и sign

    Можно реализовать и функционал для возвратов, добавив дополнительный параметр в api методе для колбека.

    Первые 2 пункта позволяют избавиться от задвоений при "плохом интернете", но нужно вешать лок через табличку типа [key, timestamp] при обработке 2-го пункта.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как сделать задержку на открытие ссылки?

    SilenceOfWinter
    Антон Шаманов @SilenceOfWinter
    та еще зажигалка...
    Решение на jquery:
    $('button').on('click', '.progress-button', function(e) {
    	e.preventDefault();
    	var url = $(this).data('src');
    	setInterval(function() {
    		window.location = url;
    	}, 3000);
    });
    Ответ написан более трёх лет назад
    3 комментария
    3 комментария
  • По какой схеме работают агрегаторы платежных систем и как реализовать такую схему для личного пользования?

    SilenceOfWinter
    Антон Шаманов @SilenceOfWinter Куратор тега PHP
    та еще зажигалка...
    Плюсы такого решения - третья сторона (сторонний агрегатор) ваши конфиденциальные данные + не нужно платить им комиссию, минусы - судя по вопросам их безопасность Вы вряд ли обеспечите + если не использовать агрегаторы совсем, то придется подключать каждую платежную систему самостоятельно, например, получать максимальный аттестат для webmoney\яд, что не так-то просто.

    По поводу реализации: возьмите описание к любому популярному агрегатору - оно содержит ответы на большинство возникших вопросов - просто сделайте по аналогии.
    Ответ написан более трёх лет назад
    2 комментария
    2 комментария
  • Как составить регулярку которая будет обрабатывать только первое вхождение?

    dasha_programmist
    Даша Циклаури @dasha_programmist
    ex Software Engineer at Reddit TS/React/GraphQL/Go
    убрать "g"
    name.replace(/%(\w+)/, '<strong>$1</strong>');
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как очистить строку для защиты от XSS и SQl-инъекции, но пропускать спец-символы?

    Андрей @AndryG
    Ваш вариант защиты от инъекций в корне неверный. Для защиты необходимо не строку "очищать", а правильно с ней работать, как описал выше Алексей Николаев.

    "Очисткой" вы защититесь лишь от примитивных попыток взлома и 100% будут случаи, когда вы будете "портить" содержимое строки. Бесят сайты, гд в коментарии нельзя нормально указать кусок html-кода (именно как текст). Их создатели тоже решили, что надежней "вырезать".

    Добавлено
    В итоге уточнений пришёл к выводу такому:
    <?php
      function my($text){
    #    return $text;
    #    return htmlspecialchars($text);
        return htmlspecialchars($text, null, null, false);
      }
      ?>
    <br>&#174;
    <br><?=my('&#174;')?>
    <br><?=my('<b>text-&#174;-text</b>')?>
    <br><?=my('<script>alert("XSS &#174;")</script>')?>
    Ответ написан более трёх лет назад
    12 комментариев
    12 комментариев
  • Как ограничить частоту запросов к бэкэнду?

    Григорий Есин @xotey83
    На выбор:
    * На стороне пыхи: сохранять в сессию microtime успешно обработанного запроса. В начале обработки запроса проверять: если текущий microtime меньше, чем сохранённый в сессию плюс 10, то вернуть код 403 и не обрабатывать запрос дальше.
    * В nginx'е можно настроить request rate.
    * Оптимизировать код (оптимизировать запросы, кеширование, оптимизация самого кода,..) с тем, чтобы не вводить искусственных ограничений на request rate.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
  • Как ограничить частоту запросов к бэкэнду?

    dom1n1k
    dom1n1k @dom1n1k
    Кэшировать результаты запроса к базе на ~5 секунд?
    А скорее даже не результат запроса, а прямо конечный xml/html/json, который потом отсылается на клиент.
    То есть в пределах 5 секунд сервер отдает один и тот же ответ.
    Ответ написан более трёх лет назад
    1 комментарий
    1 комментарий
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • Следующие →
Самые активные сегодня
  • vabka
    Василий Банников
    • 9 ответов
    • 0 вопросов
  • CityCat4
    CityCat4
    • 6 ответов
    • 0 вопросов
  • mayton2019
    • 5 ответов
    • 0 вопросов
  • borisserver
    Субару Помнеш
    • 5 ответов
    • 0 вопросов
  • AUser0
    • 4 ответа
    • 0 вопросов
  • saboteur_kiev
    Saboteur
    • 4 ответа
    • 0 вопросов
  • © Habr
  • О сервисе
  • Правила
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации