Задать вопрос
Ответы пользователя по тегу HTML
  • Почему php не отправляет письмо на телеграм?

    @rPman
    {$txt}
    текст в ссылках должен быть пропущен через urlencode, а еще у тебя там минус в идентификаторе

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

    fopen не самый лучший способ коммуникации по сети, проще было бы file_get_contents использовать, и у него есть context, который позволяет много что настроить в запросе) но лучше пользоваться встроенный curl_xxx
    Ответ написан
    2 комментария
  • Как для сайта сверстать защищенный режим браузера?

    @rPman
    Все правильно тебе говорят, все что видно в браузере клиенту - может видеть и программа.
    Но можно очень простым способом сделать эту задачу очень сложной для "атакующих":

    Сайт должен представлять из себя программу удаленного управления, а реальный сайт запускаться на кастомном браузере (без интерфейса, пишется в 10 строчек на любом языке программирования на основе готовых контролов браузерных webview - chromium/firefox/webkit).

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

    На сервере xvfb + libvnc (лучше реализовывать серверную часть а не брать готовый полнофункциональный, хотя главное ведь запретить отсылку команд закрытия приложения и xserver, кажется у x11vnc есть соответствующие опции), в браузере - что то типа noVNC

    Недостатки
    - очень высокие требования к серверу (на каждого клиента потребуется десятки мегабайт RAM советую использовать старые или кастрированные версии компонент браузера, можно даже старой версии, например 10-летней давности webkit требовал 5-10 мегабайт, а современный полторы сотни)
    - относительно высокий трафик для мультимедиа на сайте (не ваш вариант, у вас магазин)
    - потребуется с осторожностью настраивать сайт и окружение (например без доступа к интернету), чтобы уменьшить шансы клиентам обойти ограничения и к примеру серфить или даже ддосить через такой механизм другие сайты

    Достоинства:
    - на стороне клиента - просто изображение, все что может сделать злоумышленник, это смотреть эту картинку, без какого либо анализа, ни одна рекламная сеть не рассчитывает на такой способ использования
    - в некоторых случаях сетевой трафик может быть меньше чем если бы сайт открывается классическим способом (особо кривые реализации, когда html размером мегабайты, при этом без мультимедиа) и зависит не от сложности сайта а от количества действий, совершаемых с сайтом пользователем, а точнее скролинг и смена страниц), отзывчивость работы в таких случаях для пользователя может быть наилучшей, само собой эффективнее исправить сайт
    Ответ написан
    1 комментарий
  • Как скрыть backend своего сайта?

    @rPman
    В общем случае - никак

    Но можно сделать этот процесс на столько сложным, что смысла в этом уже никакого не будет. С помощью обфускации кода и использовании алгоритмов шифрования данных, передаваемых в браузер (не про https а когда данные, загружаемые браузером и передаваемые в скрипты/данные - зашифрованы). А чтобы конечный скрипт нельзя было вытащить через модификацию браузера (например логировать eval) то можно саму виртуальную машину, исполняющую скрипты, реализовать на js (wasm).

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

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

    p.s. есть еще гомоморфное шифрование, когда есть необходимость совершать какие то операции над данными, которые зашифрованы, без их расшифровки. Особо его применить в данной задаче сложно но бывают случаи когда можно выкрутиться. Если что это решение очень сложное (читай дорогое) в реализации, готовых решений нет (по крайней мере для браузера и javascript) а еще оно потребляет процессорные ресурсы.
    Ответ написан
    1 комментарий
  • Сайт полностью прогружает стили только в режиме инкогнито, как исправить?

    @rPman
    у тебя на стилях твоих сервер выдает хеадер
    cache-control max-age=31536000
    expires Mon, 25 Dec 2023 17:55:13 GMT
    логично что все закешировалось и отдает новую версию только на новых машинах или в приватном режиме (там кеш чистится по закрытию страницы, ибо это использовалось для деанонимизации)

    это классическая проблема и решается в простом виде добавлением к имени файла какого то идентификатора, определяемого версией файла (например дата или хеш файла) например так main.css?i=123123

    p.s. лучше меняй сразу имя файла на main.123123.css, так ошибки легче будет отловить (если где то забудешь изменить ссылку)

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

    @rPman
    Правильно - websocket

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

    Требуется на сервере установить (реализовать в коде) websocket server, благодаря готовым библиотекам это очень просто, гуглить к примеру ReactPHP websocket (реакт - асинхронный фреймворк, добавляет асинхронные фичи, за которые полюбили nodejs), на нем вообще можно реализовать полноценный веб сервер (но nginx все равно рекомендуется ставить на выходе в мир как прокси) которые и обычные http rest запросы примет и websocket соединения подержит, да еще и раз в 10000 быстрее будет (я про сравнение типовых подходов без особых оптимизаций и кешировании), ведь приложение в этом случае не закрывается на каждый запрос а значит многое можно держать в памяти как обычные переменные (а не 100500 прослоек вида мемкеш)

    p.s. есть еще устаревшая long pooling технология, когда вместо websocket открывается обычный http rest запрос, но на сервере он не закрывается сразу, периодически выдавая в поток допустим 1 символ пробела (крутя в цикле банальный sleep и проверку базы данных) чтобы по таймауту не закрылся, а по появлению на сервере нужных данных, отправлять их как обычно тем же json-ом. Клиент же сразу как этот запрос завершается должен тут же его снова отправить. Этот подход не потребует что то менять на сервере но считается быдлокодом.
    Ответ написан
    Комментировать
  • Нужен совет опытных WEB разработчиков?

    @rPman
    Самый неправильный способ обучения - с конца. Это очень неэффективно если не бессмысленно, изучать программирование непоследовательно.

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

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

    Советую изучать с низов, самостоятельно, чтобы было понимание каждого шага, всего что происходит.
    * операционные системы, процессор и многопоточность, сети,...
    глубоко изучать это не требуется но базовые понимания нужны чтобы не получать медленное приложение только потому что не знал что каждый твой запрос в tcp это 'туда-сюда', и это медленно (десятки миллисекунд), что одновременно два человека пытающиеся что то изменить на сайте нужно разруливать чтобы не было конфликтов и т.п.
    * бакэнд и фронтэнд
    буквально что значит запрос и генерация ответа, какие бывают способы организации этого бакэнда (http rest и к примеру websocket), не понимание разницы между бакэндом и фронтэндом у новичков рождает абсурдные вопросы как из javascript изменить переменную php (и наоборот)... в чем разница между генерацией страницы на сервере и в браузере.
    * html, css,..
    верстка и дизайн, отдельный мир браузерных стандартов, исторических наслоений,. когда стоит применять фреймы, почему шрифты по разному выглядят, разные устройства и размеры экранов, разные способы взаимодействия (сенсорный экран, мышь, клавиатура)...
    * базы данных
    еще более огромный мир атомарных транзакций, индексов, нормальных форм и прочего
    * девопс
    без умения выбрать инструмент, настроить тулчейны, среду разработки, среду исполнения (веб сервер), настроить бакапы и прочее пытаться что то разрабатывать это как в слепую гулять по лесу, будешь постоянно на ветки натыкаться
    ...
    это я еще про системную аналитику не сказал, обычно прежде чем что то создавать, нужно продумать как это все делать, что такое технический долг и т.п., а еще есть тестирование, обслуживание, работа с отказами (сервер сдох, база упала, как все восстановить), обновление на живую и прочие веселья

    без понимания всего этого, даже поверхностного, будешь натыкаться на огромные дыры в разработке.
    Ответ написан
    7 комментариев
  • Возможно ли открыть ссылку не в браузере instagram, а сразу в браузере смартфона?

    @rPman
    Сделать это обычно нельзя, так как является целью разработчиков таких приложений.
    для пользователей - осторожно!
    браузер в приложениях не настоящий браузер, приложение может иметь полный доступ к тому что открывается внутри, доступ к логинам паролям куки и т.п. Эта приватная информация и может быть целью разработчика приложений, как и другая, которую дает android, ради нее разработчики принудительно загоняют пользователей в мобильные приложения, уменьшая функционал web

    собственно сама эта возможность понижает надежность использования смартфонов на порядок

    Максимум можно найти что то типа поделиться, откроется системное меню выбора приложений, в которые отправить ссылку и там выбрать браузер.
    Ответ написан
    Комментировать
  • Как перейти в прошлую папку?

    @rPman
    В http протоколе нет ни папок/каталогов ни списков файлов, все на уровне того, реализован ли подобный функционал на веб сервере.

    Веб сервер может разделить папки другим разделителем, хоть |

    Nginx и apache реализуют подобное, если разрешено в настройках, в этом случае каталог выше должен быть доступен по ../
    Ответ написан
    Комментировать
  • Как нарисовать линии при помощи инспектора поверх iframe?

    @rPman
    в существующий нельзя (если он на твоем домене, то доступ есть), но поверх него можно, координаты iframe известны, рисуй поверх него прозрачный canvas или svg и на нем уже что хочешь рисуй
    Ответ написан
    Комментировать
  • Импорт из XML в HTML локально?

    @rPman
    одно слово - xslt (первый же результат запроса в гугл)
    нативно поддерживается всеми браузерами (это очень старая технология), позволяет строить красивые страницы на основе данных xml, формально не требует javascript (это отдельная технология, так как она формирует html дальше можно использовать javascript но не обязательно)

    работает локально, даже из файла file://
    Ответ написан
    1 комментарий
  • Как сделать задержку перед редериктом с полной загрузкой страницы?

    @rPman
    без javascript редирект делают с помощью тега meta
    <meta http-equiv="refresh" content="2;URL=https:/site.ru">


    тут 2 - количество секунд перед редиректом
    Ответ написан
    1 комментарий
  • Картинки не пропорциональны, когда запускаю проект на Windows. Как сделать так чтобы картинки отображались нормально?

    @rPman
    Проблема явно в процессе сборки чем именно и как она производиться?

    Скопируй рядом в разные каталоги разные сборки и сравни чем они отличаются,
    Ответ написан
    Комментировать
  • Как устроена технология, позволяющая смотреть видео вместе удаленно, вроде Watch2Gether или NotAlone?

    @rPman
    Практически любой видеоплеер на веб странице позволяет управлять собой из скриптов, в данном случае важны пауза, запуск и запрос текущей позиции и перевод ее на заданное значение

    Сервер устанавливает соединение между клиентами (websocket через сервер или webrtc p2p напрямую) и по нему дублирует все команды, которые отправляет любой (или ведущий) пользователь своему видеоплееру. В простой реализации интерфейс видеоплеера скрывается а пользователю выдается посреднический интерфейс, но если нужно пользоваться интерфейсом браузера, то тогда придется отслеживать оперативно состояние плеера, играет он или в паузе и в какой позиции находится.... синхронизация между пользователями у видео будет гулять, возможно даже на секунды,.. не думаю что для данной задачи это критично... но если что можно подстраивая скорость воспроизведения (многие плееры это тоже позволяют) периодически догонять отстающих или наоборот притормаживать торопыг.. так как изменения скорости будут кратковременными и незначительные доли процента, их никто не заметит
    Ответ написан
    2 комментария
  • Почему html не выводит картинку?

    @rPman
    браузеры правильно защищают от доступа к локальным ресурсам, запрещая смешивать ресурсы из разных протоколов https/http/file в любом порядке (например если ты открываешь страницу с веб сервера по https то тебе будут запрещены ajax запросы по http но разрешены вставки картинок, и все будет запрещено по file)

    пропиши каталог с файлами в веб сервере как статика и открывай нормально по http
    Ответ написан
    Комментировать
  • Как лучше и проще организовать на сайте RealTime notification?

    @rPman
    современное решение - websocket (позволяет серверу слать сообщения веб-клиентам)

    поддерживается всеми браузерами, есть огромное количество реализаций сервера, в т.ч. на php (рекомендую reactphp асинхронный, на нем же и сам http бакэнд делать нормально, а nginx снаружи проксирует запросы)
    Ответ написан
    Комментировать
  • Какой из текстовых редакторов Linux умеет работать по FTP?

    @rPman
    докину варианты, в linux есть проект fuse, позволяет монтировать файловые системы, описываемые простой библиотекой, работающей как обычное приложение в userspace, на основе его сделана поддержка всяких экзотических ситуаций, в т.ч. работа по ftp - ftpfs (идет штатно с любым линукс), так же есть sshfs для доступа по ssh, avfs для архивов (сюда же fuse-zip и archivemount) или экзотический winregfs для чтения файлов реестра windows как файлы и т.п. десятки библиотек идут по дефолту в репозитории.

    монтируешь в каталог без root и пользуешься как локальными файлами из любых программ
    Ответ написан
    4 комментария
  • Кроссбраузерность верстки на устройствах 2014 года должна ли быть в 2022 году?

    @rPman
    только при должной мотивации и явной необходимости (например это ЦА проекта)
    процент пользователей с такими устройствами недостаточно большой, чтобы делать это безусловно
    Ответ написан
  • Как передать содержимое в переменную PHP?

    @rPman
    Отвечу максимально полно

    Чтобы скрипт php что то 'получил', он должен быть как минимум запущен, подавляющее большинство стратегий создания приложений на php это когда клиент (браузер) либо чистый html либо javascript делает запрос на сервер, а сервер запускает на короткое время php скрипт чтобы тот вернул ответ (готовый html или данные в каком то виде, например json чтобы javascript обработал)

    Общение между браузером и сервером происходит по http короткими запросами вопрос-ответ, поэтому фраза 'установить переменную' немного некорректна в этом случае, ведь установив переменную в результате запроса, таковой она будет только тот короткий момент, пока этот запрос обрабатывается (например все что идет в http запросе как GET или POST параметры, веб сервер автоматически прописывает в глобальные переменные $_GET и $_POST соответственно, бери и читай). Для отправки запросов из браузера на сервер есть готовые библиотеки, гуглить ajax (на чистом javascript без библиотек для этого можно использовать XMLHttpRequest)

    Поэтому есть способ передачи данных через заголовки запроса, с помощью cookies, браузер устанавливает куки, которые автоматически в дальнейшем добавляются к любому запросу с данного домена на сервер. На сервере в php доступ к ним можно получить из переменной $_COOKIE. Так же есть способ установить куки со стороны сервера. С точки зрения эффективности это не самый лучший способ, так как данные получаются не сохраняются где то на сервере, а транслируются повторно с каждым запросом, поэтому большие объемы хранить там не рекомендуется.

    Существует подход, когда php приложение не короткоживущий скрипт а сам веб сервер, обработка запросов, чтение get/post параметров, куки и прочее, в этом случае обрабатывает это приложение (есть библиотеки, например асинхронный php react), но зато, так как приложение не завершает свою работу после запроса, прочитав переменную из запроса ее можно сохранить в памяти приложения. Этот подход на порядок ускоряет работу приложений по сравнению с классическим http-rest подходом (ведь скриптам не нужно на каждый запрос восстанавливать состояние серверного приложения, загружая нужные данные откуда-то, например из базы данных) т.е. из коробки более быстрый но сложнее к масштабированию.

    В качестве бонуса у этого подхода появляется удобная возможность использовать websocket, когда запросы отправляются не в виде отдельных а как пакет данных внутри уже открытого соединения (если что веб серверы и браузеры поддерживают и для типичного http rest незакрываемые соединения, но они заголовки так или иначе передаются, занимая время и ресурсы), и не только клиентское приложение сможет отправлять запросы от браузера на сервер но и сервер сможет слать сообщения клиенту
    Ответ написан
    Комментировать
  • Как найти текст в браузерной игре?

    @rPman
    Правая кнопка - инспектор/исследовать, смотри

    в играх с высокой вероятностью это будет canvas, а это значит текст выводится без использования dom и чтобы его получить придется заниматься распознаванием
    Ответ написан
    4 комментария
  • Как отправить post запрос из html формы?

    @rPman
    в action пропиши протокол http:// либо убирай адрес, браузеры по разному обрабатывают эту строчку и могут отправить на текущий сервер а не на указанный строку вида: http://127.0.0.1:3000/127.0.0.1:3000

    еще у тебя сервер точно ожидает запросы на '/' ?

    и вдогонку, если у input нет атрибута name, он не попадет в итоговый запрос (твоя форма отправит пустой POST)
    Ответ написан
    Комментировать