Задать вопрос
Пользователь пока ничего не рассказал о себе

Достижения

Все достижения (6)

Наибольший вклад в теги

Все теги (36)

Лучшие ответы пользователя

Все ответы (78)
  • Как снимают деньги с баланса при переходе на сайт?

    @MikUrrey
    Здравствуйте, с Праздником!
    Дело не в куках. Ваше соединение обрабатывается мобильным оператором, он списывает определенные суммы при переходах по определенным ссылкам.
    Если пройти по тем же ссылкам через кабельное соединение, они могут оказаться либо заблокированными, либо... бесплатными :)
    00-е годы, слава богу, закончились, но кое-кто с этим упорото не желает мириться.
    Ответ написан
    2 комментария
  • Как запретить срабатывание POST метода?

    @MikUrrey
    В upload.php в самом конце сделайте редирект на эту же страницу:
    //определяем протокол - HTTP/HTTPS
    $proto = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')? 'https': 'http';
    //шлем заголовок для "обновления" страницы без пересылки формы.
    //все последующие "ручные" обновления страницы будут происходить без отправки формы
    header('Location: ' . $proto . '://' . $_SERVER['HTTP_HOST'] . '/' . $_SERVER['REQUEST_URI']);
    exit;

    Вообще, это "best practice", перебрасывать редиректом после обработки формы, если не было ошибок при сохранении формы.
    Exit в конце прерывает выполнение остального кода.
    Ответ написан
    3 комментария
  • Инсталляции сайта на Javascript?

    @MikUrrey
    Там JS не нужен по большому счету. Минимум CSS, старый добрый HTML, и PHP, который составляет 95% функциональности подобной подсистемы.
    Конфигурация отправляется из полей POST-запросами и сохраняется обычно в файлы, реже в БД. Почему реже? Потому, что системы настройки обычно настраивают так же и сам доступ к БД.
    Так же из РНР обычно и генерируются input-поля с уже заполненными value.
    Чтобы с непривычки не мучаться с импортами-экспортами-инклюдами конфигурационных файлов, рекомендую использовать JSON - это дёшево и сердито:
    $config = json_decode(file_get_contents(__DIR__ . '/.config'), true); //читаем конфиги
    //...
    file_put_contents(json_encode($config), __DIR__ . '/.config'); //пишем конфиги

    В данном примере .config - с точкой вначале, чтобы конфиги нельзя было открыть и прочитать из браузера - ведь это конфиденциальные данные. `__DIR__` - это магическая константа, путь к папке скрипта, в котором она использована.
    Сохранять конфиги можно как угодно иначе, главное, чтобы они были недоступны из web.
    Так же вам нужно предусмотреть элементарную безопасность: фильтрацию данных, полученных от пользователя.
    Резюмируя, чтобы написать минимальный конфигуратор на РНР, нужно проштудировать информацию о:
    json_encode / json_decode
    file_get_contents / file_put_contents
    htmlspecialchars / strip_tags / preg_match / filter_input

    HTML и CSS, как я понимаю, вы уже и так успешно пользуетесь.
    Ответ написан
    2 комментария
  • Возможно ли иметь на одном сервере Flask и PHP?

    @MikUrrey
    Лучше всего, пожалуй, для этого использовать Docker. Flask в одном контейнере, PHP - в другом, база данных - в третьем. Запустить все через Docker compose, и пусть общаются между собой по внутренней сети.
    Можно и прямо как есть, в одном пространстве, но тогда задолбитесь настраивать порты и веб-серверы.

    Хотя еще можно попробовать заставить Flask слушать какой-то специфический порт, скажем, 82, и тогда сайт, теоретически, сможет к нему стучаться через 127.0.0.1:82. Но на практике без тонкой настройки могут элементы окружения подраться между собой.
    Ответ написан
    4 комментария
  • JS fetch(): как отличить ошибку CORS от других?

    @MikUrrey Автор вопроса
    Как выяснилось, из соображений безопасности браузеры не делятся с веб-разработчиками причинами блокировок запросов, но с низкой точностью и по косвенным признакам причину ошибки все же можно определить:
    const url = 'some url';
    try {
          const response = await fetch(url);
          //.....
    } catch {
          if (url.startsWith('http:')) {
            console.log(`It's may be a mixed content error`);
          } else {
            try {
              await fetch(url, {'mode':'no-cors'}); //если ресурс доступен, то ошибки не будет
              console.log(`It's may be a CORS error`);
            } catch {
              console.log('Other error');
            }
          }
    }

    Применяя это решение где-либо, имейте в виду, что этот способ не дает 100% точный ответ, является ли ошибка CORS или нет.
    Ответ написан
    2 комментария

Лучшие вопросы пользователя

Все вопросы (41)