php скрипт для сервера
PHP скрипты
Многофункциональный файловый менеджер «Responsive FileManager» для WYSIWYG редакторов tinyMCE 4, CKEditor и CLEditor. Можно также установить как автономный или кросс-доменный файловый менеджер. Использует адаптивный дизайн.
Этот PHP скрипт может запрашивать и кэшировать результаты запроса к MySQL.
Этот PHP скрипт используется для сокращения URL, используя сайт bit.ly, либо поиска исходного URL.
PHP скрипт для управления учетными записями и организации платежей виртуальной валюты Bitcoin.
PHP класс для сокращения URL адресов используя API популярного веб-сервиса bit.ly.
Этот PHP скрипт организует систему обслуживания файлов для последующего скачивания их пользователями. Скрипт скрывает путь к исходному файлу.
PHP скрипт для отображения календарного месяца на HTML страницах.
PHP скрипт для снятия скриншота страницы (сайта) с помощью API WebThumbnail.
PHP класс для подключения к базе данных MySQL и выполнения произвольных SQL запросов к ней.
PHP скрипт для получения содержимого удаленной веб-страницы с заголовками и cookie. Скрипт может посылать ответный запрос с любыми значениями cookie.
PHP скрипт для отправки email сообщений с прикрепленными файлами.
Этот PHP скрипт тестирует производительность PHP кода.
PHP скрипт для анализа текста, содержащего BB теги и замены их на соответствующие HTML сущности.
PHP скрипт для обновления элементов страницы динамически без перезагрузки с использованием библиотеки MooTools.
PHP скрипт для обнаружения и предотвращения атак удаленного включения файлов (RFI).
PHP скрипт для создания изображений штрих-кодов с использованием TTF шрифта Barcode.
PHP скрипт для переименования множества файлов в соответствии с заданными правилами.
PHP пакет для организации и управления гостевой книгой или простым блогом используя базу данных MySQL.
Этот PHP скрипт проверяет заполнение элементов веб формы по правилами, определенными в шаблоне формы.
Этот PHP класс может кодировать и декодировать строки Unicode с SCSU (стандартная схема сжатия юникода).
Этот PHP скрипт может генерировать карту сайта из указанных списков URL адресов.
PHP класс для создания штрих-кодов в изображениях или PDF-файлах.
Пакет PHP классов для реализации общих TCP/IP-клиентов и серверов.
PHP PDF генератор без использования библиотеки PDFlib.
PHP скрипт для установки клиентских сетевых соединений c поддержкой Unix домена, UDP и TCP-соединений.
PHP скрипт для преобразования GIF, JPEG и PNG изображений в BMP формат.
PHP скрипт для резервного копирования конфигурации маршрутизатора Cisco используя SNMP.
PHP скрипт для установки разрешений (chmod) файлов и папок рекурсивно (в подкаталогах).
PHP скрипт для проверки значений электронной почты, IP-адресов, имен пользователей, значений RGB цветов и чисел с помощью регулярных выражений.
PHP скрипт проверки email адреса регулярным выражением.
PHP скрипт для выполнения программ на удаленных компьютерах с помощью Secure Shell (SSH).
PHP скрипт для установки и получения значений параметров конфигурации из INI файлов.
PHP скрипт парсер INI файлов на PHP в стиле XPath.
Этот php скрипт используется для конвертации текста в изображение.
PHP скрипт для управления и получения информации из YouTube, используя его API.
Калькулятор на PHP для выполнения простых математических операций.
PHP скрипт для вычисления разницы во времени между двумя заданными датами.
PHP конвертер заданного количества байтов в КБ, МБ, ГБ, ТБ, и т.д..
Слой абстракции на PHP для баз данных MySQL, MySQLi, PostgreSQL, Oracle, Firebird, Microsoft SQL Server и Interbase.
Скрипт конвертер цветов на PHP между моделями RGB, HEX, HSL, HSV.
Разработка сервера на php и системных скриптов
На stackoverflow очень много вопросов типа «какой сервер поставить для разработки на php». Многие советуют apache2 и nginx+php-fpm. Но сегодняшняя статья о такой возможности, как встроенный сервер php.
Встроенный сервер в php появился начиная с версии 5.4.0, и запускается командой:
-S — запустить сервер
localhost — хост(ip address) на котором будет сервер
8000 — порт сервера
index.php — файл обработки запросов
Роутинг сервера осуществляется с помощью php-файла, выполняющего данные функции, так вот, если этот файл возвращает `false`, то будет запрошен файл напрямую; если же это не так, то будет обрабатываться файл, который мы указали как роутер.
К примеру, если в файл index.php добавить следующее условие:
То при запросе файлов статики они будут отданы напрямую сервером, а любой другой запрос будет обработан через index.php…
Часть 2. Пишем системный скрипт и сервер на php
И так как же написать системный скрипт для linux? Ответ довольно прост — первым делом мы должны указать интерпретатор, который будет выполнять этот скрипт. Так как мы пишем скрипт на php, то и укажем его интерпретатором в первой строке:
Далее опишем те параметры, которые принимает скрипт из консоли:
Два простых if’а, которые проверяют 1 и 2 аргумент, которые будут host и port соответственно, и если это не так, то выводит функцию help().
И, наконец, дописываем инструкцию, запускающую сервер.
После того как скрипт готов, изменяем его права и закидываем в папку /usr/bin/server.
Ну вот и всё, теперь нам остаёться только зайти в папку с проектом и запустить сервер командой.
Для доступа к веб части сервера, вводим в адресную строку localhost:8080 и переходим.
Вывод: Встроенный сервер php предназначен только для разработки, и это намного экономичнее apache2 и nginx+php-fpm…
Php скрипт для сервера
БлогNot. Самые маленькие полезные скрипты на PHP
Самые маленькие полезные скрипты на PHP
сейчас в списке: 55 скриптов Удивительно, что такие «базовые» вопросы вообще задают, уже якобы изучив весь PHP вплоть до классов и шаблонов. но ведь задают 🙂
Вероятно, эта заметка ещё будет пополняться примерами очень маленьких, но полезных скриптов на PHP. Об установке программного обеспечения, нужного для работы с PHP, написано в этой статье (Denwer) или лучше вот в этой, более новой (XAMPP).
Скрипты проверялись на локальном хосте в актуальных на момент добавления того или иного примера версиях PHP 5, а позднее 7 или 8.
Для поиска на странице нужных слов нажмите в браузере комбинацию клавиш Ctrl+F и введите или вставьте слова в окно поиска.
1. Как посмотреть все настройки PHP на моём сервере?
Выполнить на нём следующий файл:
2. А как посмотреть все серверные переменные?
Выполните на сервере этот скрипт:
3. Можно ли не писать отдельно обработку для данных формы, переданных методами GET и POST?
4. Как вывести сегодняшний день недели по-русски, стандартная функция date не понимает локали?
5. Как показать текущие дату и время на сервере?
6. Как определить IP-адрес посетителя?
7. Как генерировать случайные числа?
Если целые в заданных пределах, например, от 1 до 100 включительно, то
8. А если нужны вещественные случайные числа?
Получим вещественные равномерно распределённые числа от 0 до 1. Ну а масштабировать в любой другой диапазон легко, например, в [-5;5] :
9. Как отсканировать папку на сервере?
10. Как узнать имя файла скрипта? Как узнать размер файла?
2 ответа в одной строке 🙂
11. Как скачать файл скриптом?
12. Как отобразить чужой сайт/документ?
А если нужно загрузить чужой сайт в отдельный фрейм?
(здесь предполагается, что документ загружен по протоколу http:// и применяется кодировка Юникода UTF-8).
13. Как показать пользователю адрес своего сайта?
Если нужен полный URL выполняемого скрипта, то можно так:
14. Как случайно «перемешать» элементы массива?
Для этой цели, как и для многих других типовых действий с массивами, в PHP есть готовые функции.
15. Как получить/изменить время доступа или модификации файла?
Существенно, что touch создаст файл, если он не существует.
16. Как сделать замену (модификацию) строк во множестве текстовых файлов?
Если файлы лежат в папке, которую можно задать указанием пути и маски, удобна preg_replace_callback:
Здесь мы делаем большими все латинские буквы в файлах *.txt из текущей папки скрипта.
17. Как прочитать содержимое файла построчно?
Здесь файл выводит в браузер сам себя, а можно, конечно, и другой файл:
При этом выводе мы дополнительно игнорируем пустые строки.
18. Как переименовать файл?
Ну и другие типовые файловые операции похожи на C/C++.
19. Как безопасно создать временный файл с уникальным именем?
20. Как избавиться от лишних пустых строк в тексте?
В этом и следующем примере регулярное выражение предполагает, что для скрипта использована кодировка Юникода UTF-8.
21. А как удалить из строки или текста все лишние разделители, в том числе, между словами?
Обратите внимание, что этот код также «вытянет» изначально многострочный текст в одну строку, иногда это удобно.
22. Как выбрать из массива случайный элемент?
23. Как оставить от строки только буквы (латинские и русские)?
Здесь также предполагается, что мы работаем с кодировкой Юникода UTF-8.
24. Как оставить в массиве только элементы, отвечающие какому-либо условию?
25. Как отобразить и отформатировать текущие дату и время, учитывая нужный часовой пояс?
Основные ответы даёт вот этот маленький скрипт, проверенный на XAMPP с PHP 7.
26. Как сделать из строки PHP строку JavaScript, сохраняя переводы строк?
27. Как сжать на PHP содержимое HTML, убрав лишние разделители и комментарии?
28. Как реализовать авторизацию с функцией «оставаться в системе»?
В блоге есть другие материалы по теме! Здесь показано типовое решение с помощью сессии и cookie-файла. Предполагаем, что используется база данных MySQLi. Предполагается, что пароль хранится зашифрованным стандартной функцией md5. Таблица users может быть устроена как в этой заметке.
29. Как определить, использует ли клиент мобильный браузер?
31. Как определить страну и регион посетителя по IP?
Если не использовать собственных баз данных, поможет ресурс geoPlugin:
На локальном хосте localhost функция get_ip вернёт значение ::1
Чтобы получить публичный IP-адрес компьютера, этот скрипт нужно выполнять на удалённом хосте.
32. Как сгенерировать QR-код для строки?
33. Как простым способом проверить, существует ли URL-адрес?
34. Как получить MAC-адрес клиента?
35. Есть ли в PHP структуры данных?
А зачем? Там array правильный 🙂 Впрочем, если хотите возиться с расширениями, для PHP7 есть php-ds
Вывод этого примера:
36. Как проверить валидность (корректность) адреса E-mail?
В современных версиях PHP лучше не составлять регулярные выражения, а воспользоваться методом filter_var.
При этом нужно понимать, что кириллические и другие не-латинские домены метод воспринимать не будет, если они нужны, то помогут как раз регулярные выражения.
37. Как на PHP сравнить две даты?
Вопрос необъятен и зависит от того, как именно представлены даты. Вот несколько подходов к решению задачи при условии, что даты представляют собой строки формата «ГГГГ-ММ-ДД» или «ГГ-ММ-ДД»:
Обратите внимание, что если форматы исходных дат различны, разные способы сравнения могут давать разные результаты:
38. Есть ли в PHP перечисления (enumerations)?
В чистом виде нет, но легко эмулировать константами класса:
40. Как обрабатывать исключения на PHP?
Примерно так же, как на C++, конструкцией try-throw-catch :
Наконец, можно написать свой класс для обработки исключений.
41. Как прервать скрипт с сообщением об ошибке в браузер?
Если нужно при этом отключить вывод встроенного сообщения, поместите перед именем функции символ » @ «.
В последнем случае нужно обрабатывать ошибку самим! Примеры:
42. Как динамически изменить имя вызываемой функции?
43. Как проверить, является ли массив ассоциативным (то есть, не «си-подобным», имеет ключи, заданные не по умолчанию)?
44. Как получить информацию о DNS хоста?
В примере показаны только IPv4 и IPv6-адреса DNS для выбранного хоста.
45. Как побайтово обработать бинарный файл на PHP?
В этом примере мы преобразуем русские алфавитные символы кодировки Юникода UTF-8 в их однобайтовые аналоги из кодировки Windows-1251, а другие байты файла не трогаем.
И сам листинг (PHP 5.5 и выше):
46. Как получить и обработать части строки, разделённые какими-либо символами?
Также в примере показано, как регистронезависимо сортировать массив с кириллицей в кодировке Юникода UTF-8.
Возможна и любая другая «ручная» обработка элементов полученного массива слов.
В обратном порядке:
После сортировки слов:
Результат работы этого примера:
Генерируем на создаваемой картинке цветные прямоугольники, добавляем случайную строку, выведенную поверх них шрифтом стандартного формата TTF.
Случайный вывод этого примера:
48. Как клонировать составной объект, то есть, создать копию всех его свойств и методов?
В PHP есть готовый метод для этого.
49. Как получить имя файла с кириллицей и пробелами на локалхосте Windows?
Функция проверена в актуальной сборке Windows 10 на локалхосте XAMPP.
50. Как в callback или вложенной функции использовать переменную, определённую во внешней функции?
51. Как на PHP сгенерировать текстовый файл нужного размера со случайным текстовым содержимым?
Если не нужны очень большие объёмы, то проще всего так:
52. Как найти разницу между двумя значениями «дата-время», полученными из формы HTML?
53. Как округлить число до десятков, полусотен, сотен и т.п. в меньшую или большую сторону?
54. Как узнать, где находится активный файл php.ini?
Выполните скрипт из ответа 1 и проверьте в его выдаче путь к файлу в строке Loaded Configuration File. Директивы, не помеченные в первой позиции строки файла символом » ; » (точка с запятой), являются активными. После изменения настроек обычно нужно перезапустить локальный хост.
55. Как получить дату и время с удалённого хоста?
Не привлекая достаточно сложных решений, связанных с протоколом NTP, это можно сделать так:
Применение PHP: Методы на стороне сервера, которые помогут вам в разработке интерфейсов
Я обнаружил, что включение элементов PHP в мой процесс разработки интерфейсов делает код более продуктивным и ускоряет процесс развития проектов.
Это не отнимет много времени или сил. Вы легко сможете разобраться с азами PHP и ввести новые элементы в свой инструментарий. Давайте начнем с рассмотрения того, насколько введение в разработку интерфейса некоторых скриптов на стороне сервера может быть одновременно и простым, и полезным.
Приступая к работе с основами PHP
Эхо-функция выводит все, что следует в разметке непосредственно за ней. В нашем случае « echo » будет выводить строку со словами « Привет Мир «. В PHP окончание оператора запятой является обязательным; пропущенная запятая являются еще одним распространенным источником ошибки в скриптах.
С помощью переменных мы могли бы написать приведенный выше код следующим образом:
Цикл for используется, чтобы повторять выполнение набора кодов, пока не будет выполнено некоторое условие:
Создание простых шаблонов PHP
В определенный момент времени вы можете обнаружить, что постоянно создаете разметку, которая повторяется для каждой страницы вашего проекта. Наиболее часто повторяющиеся части веб-проекта — это заголовок ( шапка ) сайта и подвал ( футер ).
Обычно если бы у нас что-то изменилось в заголовке сайта, мы должны были бы вручную отредактировать заголовок в каждом файле нашего проекта. Вот где PHP может существенно облегчить нам жизнь.
Естественно, мы можем сделать то же самое с элементом подвала и любым другим фрагментом, который вы, возможно, захотите использовать на нескольких страницах:
В этом примере header.php и footer.php хранятся в папке « includes «, и на каждый из них ссылается основной файл. Представьте себе, сколько времени это может сэкономить разработчику.
Обслуживание различных файлов в зависимости от страницы
Недостаток в обслуживании заголовка и подвала на каждой странице, заключается в том, что это ограничивает наши возможности гибкой настройки каждой страницы.
Например, если у нас есть файл JavaScript со слайдером изображений, который мы хотим размещать только на главной или скрипт проверки формы на странице контактов. К счастью, существует еще один простой прием, который может помочь нам в этом.
Для выполнения этого приема мне сперва нужно получить имя текущего файла и отбросить его расширение:
В первой строке мы получаем с сервера имя файла, а во второй отделяем расширение файла ( вторая строка имеет скорее косметическое значение, чтобы сделать код немного чище, но я все равно рекомендую это ).
Я, как правило, размещаю эту строку кода в самом начале своих файлов еще до открытия тега ; это позволяет мне использовать эти данные для различных элементов, например, для имен генерируемых классов.
Вторая часть этого приема заключается в том, чтобы включить в подвал страницы перед закрывающимся тегом body определение того, какие скрипты какие страницы должны обслуживать.
С RESS мы можем пойти еще дальше
RESS или Responsive Design with Server Side Components ( Адаптивный дизайн с использованием компонентов на стороне сервера ) означает, что вы добавляете немного логики на стороне сервера в ваш набор инструментов адаптивного дизайна, с целью создания таких удивительных вещей, как уменьшение объема некоторых страниц.
ПРИМЕЧАНИЕ: Поскольку Mobile Detect рассматривает планшеты как мобильные устройства, я также проверяю, является ли устройство планшетом:
Шаблоны автоматической разметки
Так же у вас могут быть определенные шаблоны разметки, которые не выводят одинаковый контент, однако выглядят очень похожими друг на друга. Стандартная ситуация — отображение группы изображений, которые принадлежат к тому же объекту галереи.
К счастью, Лара Шенк недавно показала замечательное решение для подобных случаев:
Первая функция printGalleryItem() принимает путь к изображению и текст для тега alt и выводит тег изображения с контейнером
Функция foreach оказывается очень полезной, когда вам нужно перебрать массив переменных и сверить что-то со значением каждой из них.
Существует намного больше продвинутых концепций, которые касаются примеров, приведенных мною сегодня. Однако для понимания того, что эти функции делают и как они могут помочь в процессе разработки, этого должно быть достаточно.
Это только верхушка айсберга
Добавление логики на стороне сервера перед отправкой страницы в браузер может сэкономить вам время в процессе разработки, повысит надежность веб-приложений и даже улучшит сами веб-страницы.
Методы, описанные в этой статье, должны послужить для вас отличной отправной точкой, независимо от того являетесь ли вы новичком в PHP в принципе или просто новичком в использовании PHP именно в этом направлении.
Использование преимуществ встроенного PHP сервера
Используем встроенный сервер
Итак, для использования сервера нам необходим php 5.4 или выше. Для проверки версии PHP, выполните:
Так же вы можете определить доступен ли сервер в вашей сборке выполнив:
и найдите там описание параметров «-S» и «-t», которые используются только для сервера.
Для проверки сервера вы можете создать в текущей директории файл index.php, который будет содержать в себе вызов функции phpinfo() и затем запустить сервер:
И теперь вы можете увидеть содержимое отданной встроенным web-сервером:
В консоль же будет писаться каждый запрос клиента:
Возвращаясь назад, разберем параметр командной строки «-S», который используется для указания адреса, с которого сервер будет доступен. Возможные значения:
localhost — сервер будет доступен только с локальной машины,
0.0.0.0 — на любому интерфейсе машины,
Любой внешний или серый IP — только на указанном IP
Параметр «-t» устанавливает указанную директорию «directory root». Например:
Кроме того,. вы может указать имя конкретного файла-роутера. Например:
Вывод этого роутера будет парситься и выполняться сервером. Простой пример:
Если скрипт вернет FALSE, тогда запрашиваемый URI будет обрабатываться сервером, который будет выдавать запрошенный ресурс, либо вернет 404 ошибку. Если скрипт возвращает что-либо ещё, вывод скрипта передастся клиенту.
Хотя данный подход даёт нам больше контроля, есть несколько вещей, которые вы должны знать. Во-первых, PHP сервер отдаёт только минимальный набор HTTP заголовков:
D
Сравним это с заголовками, возвращаемыми сервером Apache:
Если ваше приложение использует заголовки, то оно должно учитывать разницу в development-среде и в production.
Во-вторых, встроенный сервер имеет другое SAPI (Server API). Таким образом выполняя маршрутизацию в index,php вы можете определить на тестовом или боевом сервер происходит обращение к скрипту. php_sapi_name() вернет «cli-server» на встроенном сервере:
Существует одна специальная INI директива — «cli_server.color». Данная директива возвращает раскрашенный вывод в консоли. Создайте пустой файл с именем cli-server.ini и вставьте эту строку:
Вы можете создать уникальную конфигурацию окружения для вашего сервера, указав в вашем INI файле необходимые директивы. Не объявленные директивы примут значения по-умолчанию. Сейчас мы объявили только одну директиву — cli_server.color.
Запустить сервер с параметром «-c» с указанием INI файла:
Если ваш терминал поддерживает цвета, то вы сможете увидеть «цветной» вывод в консоли. 200 статус будет выделен зеленым, 404 — оранжевым, а ошибки сценария будут выделены красным цветом.
Создаём персональный сервер
Теперь, когда вы знаете всё, что необходимо знать о встроенном сервере, давайте сделаем что-нибудь крутое. Создадим собственный портативный сервер!
Я начну со следующей структуры нашего приложения:
Папка «library» содержит код приложения, «public» — корневая директория, содержит index.php и несколько статичных файлов. Особое внимание в этом руководстве будет уделено папке «server», и поэтому наше приложение будет состоять из простого «Hello Word!» и нескольких картинок и css.
Наша цель — получить возможность запускать сервер из директории приложения одной командой, а наш сервер будет заботиться о роутинге, HTTP заголовках и ошибках.
Давайте рассмотрим сценарий запуска:
Продолжим, папка «errors» содержит файлы для сообщений об HTTP ошибках. Вот пример о 403 ошибке: хотя я и использовал только HTML, скрипт будет подключен, использую include, поэтому вы можете использовать любой php код:
Теперь посмотрим на router.php. Задача данного файла в получении и управлении всеми запросами и передавать их серверу, только если данный файл существует. Все страницы ошибку отображаются путём подключения шаблона.
В первых строках я определяю некоторые глобальные параметры, такие как DIRECTORY_INDEX, директория с шаблонами ошибок. Параметр date_default_timezone_set() должен совпадать с настройками ОС, иначе будут несоответствия между записями в логе и на сервере. Так же я добавил список разрешенных IP адресов, для повышения безопасности.
Функция logAccess() необходима, потому что когда скрипт роутинга принимает запрос лог сервера по-умолчанию игнорируется. Функция принимает только код статуса, а формат вывода полностью соответствует формату сервера.
Наша первая задача — проверка безопасности. Если IP клиента не находится в массиве разрешенных IP, выводим сообщение об ошибке и завершаем работу скрипта. Нам необходимо отдавать код статуса отличный от 200 и функция header() не будет работать в здесь, поэтому мы используем новую функцию — http_response_code.
Если IP клиента находится в массиве разрешенных IP, то следующий наш шаг — получение запрашиваемого пути и расширения файла. Если расширение пустое, считаем, что пользователь запрашивает папку и строим получаем путь, используя определенный сначала DIRECTORY_INDEX.
В завершении, если запрашиваемый файл существует, возвращаем FALSE, и позволяем серверу обратиться к файлу. Если же нет, то отображается сообщение о 404 ошибке.
Резюме
Это всё. Как видите, php сервер просто в использовании. Наш персональный сервер очень прост. Код можно оптимизировать и включать в более сложные и функциональные классы. Happy coding!