Ответы пользователя по тегу PHP
  • Как реализовать статусы пользователя online/offline - PHP?

    @rPman
    Пожалуйста, поднимите у себя websocket, ресурсов это много не займет, зато возможности у вас появятся огромные, вы сможете не только точно знать момент, когда пользователь закрыл страницу или отключил интернет, но и сможете со стороны сервера эффективно передавать сигналы клиентам (чат например)
    Ответ написан
    2 комментария
  • Как сделать бесконечно выполняющийся скрипт php?

    @rPman
    php-cli
    Это отдельный, хоть и виртуальный пакет в операционных системах, имеет свой каталог с настройками расширений в /etc/, запускается приложение как и все скриптовые php имя файла плюс можно добавить первой строчкой по стандарту #!/usr/bin/php и поставить бит x на файл, тогда он будет запускаться как обычное приложение.

    cron - это не порядок, он подходит наоборот для периодических задач, которые отработали и завершили работу.

    По правилам, если вам нужен демон, который постоянно будет работать, то для этого необходимо создать для него файл службы, читать документацию по операционной системе или в /etc/init.d этот список все операционки тянут для совместимости до сих пор (там простой bash который запускает и останавливает вашу программу по команде start|stop).

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

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

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

    Заранее считать - алгоритм проще чем последовательная генерация - проще проверить итоговое распределение.
    Ответ написан
    Комментировать
  • Как сделать что бы файл брался из предыдущего каталога?

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

    p.s. попробуйте это get-included-files чтобы узнать все используемые файлы и debug_backtrace чтобы узнать какой в каком порядке вызван (не подключен! момент подключения можно получить только добавляя специальные вызовы в каждый важный файл)
    Ответ написан
    Комментировать
  • Как отсылать PONG?

    @rPman
    Вам точно нужно работать с websocket на таком низком уровне и реализовывать его самому?
    Попробуйте https://github.com/ratchetphp/Pawl и вообще пользуйтесь react и асинхронный код - это действительно круто.
    Ответ написан
    4 комментария
  • Как в PHP цикле выделить первые элемент?

    @rPman
    завести переменную $isFirst=true; а в цикле в конце установить ее значение на false
    Ответ написан
    Комментировать
  • Как сделать CRUD приложение средствами php для управления несколькими таблицами?

    @rPman
    Если вам не подходят готовые решения, а хотите сделать свой велосипед, попробуйте посмотреть в сторону метапрограммирования.

    Когда вместо того, чтобы описывать в коде структуру вашего проекта, которая с помощью фреймворка во время выполнения разворачивается в необходимые sql-запросы и html/js интерфейс пользователя (делая это каждый раз плюс очень много лишнего). Вы делаете почти то же самое, но пишите генератор всего кода и sql запросов по вашему описанию. Когда то очень давно я делал такую систему, когда по описанной модели данных (очень близкой к ЕР) с небольшими добавлениями по описанию графического интерфейса (типы данных и способы/ограничения по их редактированию), генератор компилировал в десятки/сотни php файлов, без каких либо требований к фреймворку, и достаточно эффективного кода, но позволял создавать очень быстро большое количество сложных интерфейсов по работе сданными (в основном это был поиск, просмотр и редактирование).

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

    И еще, не про вашу задачу а вообще.
    Задумайтесь о React PHP, это целая парадигма в разработке асинхронных приложений, когда cli php приложение само является веб-сервером (в т.ч. и websocket), позволяет делать очень высокопроизводительные приложения.
    Ответ написан
    Комментировать
  • Как парсить сайты если сертификат битый?

    @rPman
    curl -k https://... что выдает?

    если выдает собственно контекст сайта - может грузить страницы с помощью функций curl_.., выставив опцию CURLOPT_SSL_VERIFYPEER = false

    file_get_conents будет посложнее заставить работать со сломанным сертификатом, у меня даже с не валидным не получилось (но там проблема уязвимости, новые версии php/openssl работать с ним отказывались), так же можно отключить проверку сертификата при использование socket_open...
    Ответ написан
  • Как разлогинить всех пользователей на сайте?

    @rPman
    На сервере у вас уже есть (должны) быть инструменты, для определения авторизации пользователя (не доверять же одним кукам), например сохраненный идентификатор сессии у пользователя в базе, вот эти данные и очищайте, одним запросом к базе на сервере.
    Ответ написан
    Комментировать
  • Возможно ли осуществить с сайта #2 вход на сайт #1 на простой форме входа?

    @rPman
    сайт #2, на котором проходит авторизация должен предоставлять механизмы (специальные запросы доступные только другим сайтам #1), сообщающие что вот такой то пользователь (идентификатор, создаваемый на старте авторизации еще в #1) ввел верные данные (и его роль админ/пользователь/гость...).
    Ответ написан
    Комментировать
  • Как сделать обработку формы без отправки?

    @rPman
    на onclick/onchange поля ввода (в зависимости, когда именно нужно делать запрос) ставите обработчик javascript которые используя ajax с помощью какой-либо библиотеки, тот же jquery (или более низкий уровень XMLHttpRequest без библиотек) а на сервере на этот запрос вы уже делаете sql запрос и возвращаете результат.

    Не рекомендую делать запрос на каждое событие, ставьте ограничение - не чаще чем раз в X секунд, например вместо прямого запроса делать его внутри setInterval, отменяя предыдущий.
    И помните что запросы ajax асинхронные, т.е. некоторые ответы могут прийти позже других (такие вы по логике не должны выводить, так как уже получили более новый)
    Ответ написан
  • Могут ли взломать сайт через форму отправки сообщений?

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

    p.s. проверьте, что произойдет, если данные формы отправить в виде GET запроса, а не POST.
    Ответ написан
  • Как вставить видео с автопроигрывание на фоне на сайт, но не через youtube?

    @rPman
    Положите свое видео в виде файла на свой сервер и заверните его в тег video

    Форматы и кодеки видеофайла смотреть тут:
    https://ru.wikipedia.org/wiki/HTML5_video
    https://developer.mozilla.org/ru/docs/Web/HTML/Под...

    p.s. легальность использования того или иного кодека, то еще развлечение, но в вашем случае скорее всего теоретическое
    Ответ написан
    Комментировать
  • Почему PHP Simple HTML DOM Parser прерывает вывод сразу после слова на русском языке?

    @rPman
    ни разу не было проблем с этой библиотекой и русским языком (utf8)
    Ответ написан
  • Замена файла без изменения URL, как реализовать?

    @rPman
    Использовать особенности почти всех файловых систем - символьные ссылки. Пусть file.jpeg будет ссылка на нужный файл, пересоздавайте его по мере надобности.
    Ответ написан
    Комментировать
  • Не запутает ли такой полиморфизм разработчика?

    @rPman
    Я не буду говорить про ООП, читаемость кода или его модифицируемость в будущем.

    Меня просто корежит использование строк для передачи управляющих команд в методы... тем более там где это совершенно не нужно. Вдумайтесь, исключительно для вашего синтаксического сахара, в базовые методы коммуникации вы вставляете сравнение строк! Ну что мешает завести численный дефайн или воспользоваться делегатами (передать сам метод в качестве параметра)?

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

    p.s. по теме, если параметр, который подставляют в вызов method() будет браться из-вне, например значение одного из параметров в GET, то я бы порекомендовал пропустить эти параметры через специальный метод-фильтр, конвертирующий строки во внутреннее представление (числовые дефайны или ссылки на методы), он же проверяет их валидность... вот это удобство для программиста, когда выделяется отдельная задача в отдельный метод/класс... ООП тут совершенно не требуется, так как нечего наследовать, хотя может быть использовано просто как синтаксический способ объединить код и данные в одном месте.
    Ответ написан
    3 комментария
  • Как сделать счетчик с автоматическим увеличением числа каждый день?

    @rPman
    Вам не нужно событие смены дня, вам нужно само число?
    Если вам нужно число, гарантированно уникальное, больше на единицу от предыдущего дня, то берете дату в формате unixtime, прибавляете смещение (когда вам нужно считать смену дня) и делите результат на (60*60*24) - целая часть результата - ваш индекс, можете вычесть какое то значение, соответствующее вашему первому запуску.
    Ответ написан
    Комментировать
  • Как запускать php на дата-контейнере Jelastic?

    @rPman
    вас не смущает путь до скрипта в ошибке?
    /mnt/www/html/info.php

    а монтируете
    /mnt/owncloud
    Ответ написан
  • Как подменять вкладки?

    @rPman
    Не знаю про все вкладки, но сайты, принадлежащие одному владельцу могут быть так специально закодированы (с использованием тех же websocket), что после открытия ссылки меня текущую страницу на другую (логика может быть любой), т.е. после загрузки открытой страницы по ссылки с главной, сервер информируется об этом и пересылает сообщение на главную (связывает по сессии, коды передает в ссылке), после этого главная перезагружается.

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

    @rPman
    Оформить php как сервис, в зависимости от того, какая система загрузки установлена читаnь документацию, upstart, systemd и т.п. во всех случаях это будет либо простейший скрипт (скопированный из примеров документации или из интернета) в котором вы укажете запуск своего php в виде запуска в цикле на том же bash - while(true);do php main.php;slep 1;done или на любом другом скриптовом языке, пусть и php.

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