Различия
Показаны различия между двумя версиями страницы.
Предыдущая версия | |||
— | php [2025/07/06 12:39] (текущий) – внешнее изменение 127.0.0.1 | ||
---|---|---|---|
Строка 1: | Строка 1: | ||
+ | ====== PHP ====== | ||
+ | **РНР** (читается как пи-эйч-пи) является интерпретируемым языком программирования. | ||
+ | |||
+ | Рабочие скрипты: | ||
+ | * [[class DFunction]] и полезные функции | ||
+ | * [[mta# | ||
+ | * [[phpinfo]] и PhpSysInfo написанный на PHP скрипт предоставляющий информацию о системе. | ||
+ | * [[test_podkljuchenija_k_mysql_iz_php]] | ||
+ | * [[IonCube]] | ||
+ | * [[ustanovka_raznyx_versii_php]] | ||
+ | |||
+ | Документация PHP: | ||
+ | * [[php.ini]] | ||
+ | * [[cURL]] | ||
+ | * [[sessii]] | ||
+ | * [[xosting_php]] | ||
+ | * [[Массивы PHP]] | ||
+ | * [[PHP CLI в командной строке(command line)]] | ||
+ | * [[snmp# | ||
+ | * [[Composer]] - система управления пакетами для PHP. | ||
+ | * [[Стандарты кодирования]]: | ||
+ | * [[Протоколирование ошибок PHP]]. Как перенаправить вывод ошибок PHP в браузер непосредственно из скрипта? | ||
+ | * [[Сессии]] - управление механизмом сессий в PHP | ||
+ | * [[Xdebug]] - модуль для отладки PHP скриптов. | ||
+ | * [[RegExp PHP]] - описание функций для использования регулярных выражений в [[PHP]]. | ||
+ | * [[Парсинг сайтов на PHP]] | ||
+ | * ООП [[Классы и объекты]] | ||
+ | * [[Файл инициализации приложения]]. Автоматическая загрузка классов. | ||
+ | * [[Отправка электронной почты при помощи PHP]]: стандартная функция mail, Mail_Mime | ||
+ | * [[Шаблонизаторы для PHP]]. Изолирование от HTML (смешанный режим). | ||
+ | * [[HTTP-аутентификация]] в PHP, Apache | ||
+ | * [[wpru> | ||
+ | * Базы данных: | ||
+ | * [[PDO]] - библиотека унифицированных методов для доступа к различным базам данных. | ||
+ | * [[MySQLi или MySQL]] - взаимодействие PHP с [[MySQL]] | ||
+ | * [[php-pgsql]] (php5-pgsql) - взаимодействие PHP с [[PostgreSQL]] | ||
+ | * [[php-sqlite]] (php5-sqlite) - взаимодействие PHP c [[SQLite]] | ||
+ | * [[php5-gd]] GD Graphics Library | ||
+ | * [[XML]]: [[SimpleXML]] | ||
+ | * [[SOAP]] в PHP | ||
+ | * [[JSON]] | ||
+ | * [[PHP генерация отчетов]] - создание отчетов в виде файлов [[csv# | ||
+ | * [[PHP LDAP]] | ||
+ | * [[CSV]] | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * PHP - создание PDF: | ||
+ | - [[http:// | ||
+ | - PDFlib - бесплатна только для некоммерческого использования | ||
+ | - [[TCPDF]] | ||
+ | * [[http:// | ||
+ | * [[mnogopotochnost?&# | ||
+ | * [[http:// | ||
+ | #!/bin/bash | ||
+ | / | ||
+ | </ | ||
+ | * [[https:// | ||
+ | * [[redirect_output_file_to_client_browser._vernut_na_zapros_klienta_fajl]] | ||
+ | * [[redis# | ||
+ | * [[phpixie]] | ||
+ | ====== Синтаксис ====== | ||
+ | * **Код на PHP начинается** с открывающего дескриптора **<? | ||
+ | * Для того чтобы **объявить переменную в PHP**, вначале имени переменной, | ||
+ | * **Переменная** создаётся в момент первого присваивания ей значения. Прежде чем использовать переменную настоятельно рекомендуется присвоить ей значение. < | ||
+ | $isoalpha2=''; | ||
+ | </ | ||
+ | * **Имена переменных чувствительны к регистру, | ||
+ | * Специальное значение [[http:// | ||
+ | * Комментарии< | ||
+ | // или # - однострочный комментарии. /**/ - многострочный комментарий. | ||
+ | </ | ||
+ | * Строки заключённые в **одинарные кавычки**, | ||
+ | print ' | ||
+ | </ | ||
+ | * Строки заключённые в **двойные кавычки** интерпретатор PHP будет пытаться вычислить. | ||
+ | * **Символ тире и " | ||
+ | * **Двойное двоеточие (::)** обознает вызов статического метода из класса. | ||
+ | * **Символ точка и интерполяция**. Строки в РНР объединяются при помощи символа точки (.), при этом все типы, отличные от строкового, | ||
+ | public function get_full_info() | ||
+ | { | ||
+ | return " | ||
+ | } | ||
+ | </ | ||
+ | * **Фигурные скобки {}** обозначают начало и конец выполняемых конструкций, | ||
+ | <?php | ||
+ | for ($rr = 0; $rr <= 0xFF; $rr += 0x33) | ||
+ | for ($gg = 0; $gg <= 0xFF; $gg += 0x33) | ||
+ | for ($bb = 0; $bb <= 0xFF; $bb += 0x33) | ||
+ | | ||
+ | ?> | ||
+ | |||
+ | </ | ||
+ | echo " | ||
+ | // или | ||
+ | echo " | ||
+ | </ | ||
+ | * [[http:// | ||
+ | ===== Операторы ===== | ||
+ | * **Цикл for**. Синтаксис:< | ||
+ | FOR (условие1; | ||
+ | </ | ||
+ | |||
+ | * условие1 - Безусловно выполняется (вычисляется) в начале цикла | ||
+ | * условие2 - Проверяется в начале каждой итерации. Если оно равно TRUE, то цикл продолжается и выполняются вложенные операторы. Если оно равно FALSE, то цикл заканчивается. | ||
+ | * условие3 - Выполняется (вычисляется) в конце каждой итерации. | ||
+ | Каждое из этих условий может быть пустым. | ||
+ | |||
+ | **Пример**. Так как условие1 безусловно выполняется один раз в начале цикла - это можно использовать для записи более компактного кода.< | ||
+ | $matches = array(' | ||
+ | |||
+ | for ($i = 0, $cnt=count($matches); | ||
+ | echo " | ||
+ | } | ||
+ | </ | ||
+ | * [[http:// | ||
+ | <?php foreach ($array as $item): ?> | ||
+ | < | ||
+ | <?php endforeach; ?> | ||
+ | </ | ||
+ | Вместо фигурных скобок используется закрывающее выражение endforeach, открывающая конструкция завершается двоеточием, | ||
+ | |||
+ | <note tip>В альтернативном варианте можно записать также: for, while, if-else, switch-case.</ | ||
+ | ===== Функции ===== | ||
+ | Функция объявляется при помощи ключевого слова function, за которым следуют ее имя и какие либо параметры в скобках. Для вызова функции достаточно указать ее имя и задать значения аргументов для каждого ее параметра. Если функция возвращает значение, | ||
+ | |||
+ | PHP анализирует весь файл до его выполнения, | ||
+ | |||
+ | Если не определено обратное, | ||
+ | |||
+ | Для того чтобы **функция принимала аргументы по ссылке**, | ||
+ | function wrap_html_tag(& | ||
+ | | ||
+ | } | ||
+ | </ | ||
+ | * Вывести все подключенные функции PHP< | ||
+ | print_r(get_defined_functions()); | ||
+ | </ | ||
+ | < | ||
+ | |||
+ | ====== PHP и JavaScript ====== | ||
+ | **Взаимодействие PHP и [[JavaScript]]** | ||
+ | * [[http:// | ||
+ | - Внесение изменений в текст страницы, | ||
+ | echo ' | ||
+ | < | ||
+ | < | ||
+ | var fromDate="' | ||
+ | var toDate="' | ||
+ | </ | ||
+ | ...Your HTML here | ||
+ | '; | ||
+ | </ | ||
+ | - Использование [[Cookie]] | ||
+ | - Использование [[Ajax]] | ||
+ | ===== Суперглобальные переменные ===== | ||
+ | * [[http:// | ||
+ | |||
+ | **Переменная $GLOBALS**. Ассоциативный массив (array), содержащий ссылки на все переменные глобальной области видимости скрипта, | ||
+ | <?php | ||
+ | $conf[' | ||
+ | $conf[' | ||
+ | global $conf; // добавляем переменную в глобальный массив видимости скрипта | ||
+ | $output = print_r($GLOBALS[" | ||
+ | echo " | ||
+ | ?></ | ||
+ | $GLOBALS[' | ||
+ | </ | ||
+ | foreach ($GLOBALS as $key=> | ||
+ | echo ' | ||
+ | </ | ||
+ | |||
+ | **Переменная $_SERVER**. | ||
+ | * Переменная [[http:// | ||
+ | * $_SERVER[' | ||
+ | * $_SERVER[' | ||
+ | * $_SERVER[' | ||
+ | * $_SERVER[' | ||
+ | * $_SERVER[' | ||
+ | * $_SERVER[' | ||
+ | if ($_SERVER[' | ||
+ | include_once ' | ||
+ | } | ||
+ | </ | ||
+ | * $_SERVER[' | ||
+ | |||
+ | **Переменная $_GET**. | ||
+ | |||
+ | **Переменная $_POST**. | ||
+ | * Вывести все переменные переданные методом POST< | ||
+ | echo '< | ||
+ | var_dump($_POST); | ||
+ | echo '< | ||
+ | print_r($_POST); | ||
+ | echo '< | ||
+ | ?> | ||
+ | </ | ||
+ | * Если массив POST пуст прервать выполнение скрипта< | ||
+ | if (empty($_POST)) {exit();} | ||
+ | </ | ||
+ | **Переменная $_FILES** - переменные файлов, | ||
+ | |||
+ | **Переменная $_REQUEST** - ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE. Переменные в массиве $_REQUEST передаются в скрипт посредством методов GET, POST или COOKIE, поэтому им нельзя доверять, | ||
+ | |||
+ | **Переменная $_SESSION** | ||
+ | |||
+ | **Переменная $_ENV**. Заполняется если скрипт был запущен из командной строки. Массив $_SERVER будет содержать все переменные из массива $_ENV. | ||
+ | |||
+ | **Переменная $_COOKIE**: [[cookie]]. | ||
+ | |||
+ | **Переменная $http_response_header** | ||
+ | |||
+ | ===== require и include ===== | ||
+ | * [[http:// | ||
+ | Операторы include, require, include_once и require_once работают аналогично серверным включениям ([[SSI]]). Операторы include и require являются языковыми конструкциями, | ||
+ | include ' | ||
+ | </ | ||
+ | < | ||
+ | В относительном виде путь может содержать специальные управляющие символы " | ||
+ | <note important> | ||
+ | |||
+ | ===== Тернарная операция ===== | ||
+ | Тернарная операция в PHP записывается аналогично языку С. Синтаксис тернарного оператор "?":< | ||
+ | $переменная = условие ? $переменная = если условие выполнено : $переменная = если условие не выполнено | ||
+ | </ | ||
+ | * **Пример**.< | ||
+ | echo (empty($_SERVER[' | ||
+ | </ | ||
+ | * **Пример**. Формирование [[SQL]] запроса.< | ||
+ | # | ||
+ | <?php | ||
+ | $nColumns = ' | ||
+ | for ($year = 2009; $year <= 2012; $year++) { // цикл перебирает года | ||
+ | for ($month = 1; $month <= 12; $month++) { // | ||
+ | ($month < 10 ? $day = $year . " | ||
+ | $query = " | ||
+ | } | ||
+ | } | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | ====== Справочник функций PHP ====== | ||
+ | * [[http:// | ||
+ | var_dump(get_defined_vars()); | ||
+ | </ | ||
+ | [[http:// | ||
+ | * **[[http:// | ||
+ | * **print** - выводит строку. | ||
+ | * [[phpfn> | ||
+ | // | ||
+ | <a href=" | ||
+ | // | ||
+ | <a href=" | ||
+ | </ | ||
+ | |||
+ | [[http:// | ||
+ | |||
+ | * **print_r** - выводит информацию о переменной, | ||
+ | * **var_dump** - сходная с функцией print_r. Дополнительно выводит размер переменных, | ||
+ | * **var_export** - сходна с print_r и print_r. Различие состоит в том, что var_export выводит информацию о переменных в стиле PHP кода, т.е. вывод можно скопировать и вставить в свой PHP- скрипт. | ||
+ | |||
+ | * **empty()** возвращает true, если переменная не существует или пустая, | ||
+ | * **isset()** возвращает true, если переменная существует, | ||
+ | |||
+ | * nl2br — Вставляет [[HTML5|HTML]] -код разрыва строки перед каждым переводом строки | ||
+ | |||
+ | ====== Функции запуска внешних программ ====== | ||
+ | |||
+ | * **[[https:// | ||
+ | * **passthru** — выполняет внешнюю программу и отображает необработанный вывод. Эта функция должна быть использована вместо функции exec() или system(), когда вывод команды Unix представляет собой двоичные данные, | ||
+ | * **system** — выполняет внешнюю программу и отображает её вывод. | ||
+ | * **shell_exec** - выполняет команду через [[shell]] и возвращает полный вывод в виде строки. Функция аналогична оператору исполнения: | ||
+ | <?php | ||
+ | $output = shell_exec(' | ||
+ | echo "< | ||
+ | ?> | ||
+ | </ | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | ===== Функции для работы с файлами и сетью ===== | ||
+ | |||
+ | * **[[http:// | ||
+ | * [[http:// | ||
+ | |||
+ | |||
+ | * **fgetss** - прочитать строку из файла и отбросить HTML и PHP теги. | ||
+ | * **fgets** - построчное чтение из файла. Пример. Считываем построчно текстовый файл и каждую строку передаем на обработку функции TxtToSQL()< | ||
+ | function TxtToSQL($line) { | ||
+ | echo " | ||
+ | } | ||
+ | |||
+ | $filename = ' | ||
+ | |||
+ | $fhandle = fopen($filename, | ||
+ | while (!feof($fhandle)) { | ||
+ | TxtToSQL(fgets($fhandle)); | ||
+ | } | ||
+ | fclose($fhandle); | ||
+ | </ | ||
+ | * [[http:// | ||
+ | <?php | ||
+ | $url = ' | ||
+ | $auth = base64_encode(' | ||
+ | $header = array(" | ||
+ | $opts = array(' | ||
+ | // ' | ||
+ | ' | ||
+ | |||
+ | // Создаем окружение с помощью установленных выше HTTP- заголовков | ||
+ | $context = stream_context_create($opts); | ||
+ | $file = file_get_contents($url . '? | ||
+ | |||
+ | print_r($file); | ||
+ | ?></ | ||
+ | <?php | ||
+ | $data = array( | ||
+ | ' | ||
+ | ); | ||
+ | $postdata = http_build_query($data); | ||
+ | $options = array(' | ||
+ | array( | ||
+ | ' | ||
+ | ' | ||
+ | ' | ||
+ | ) | ||
+ | ); | ||
+ | $context = stream_context_create($options); | ||
+ | // Открываем файл с помощью установленных выше HTTP-заголовков | ||
+ | $result = file_get_contents(' | ||
+ | echo $result; | ||
+ | ?> | ||
+ | </ | ||
+ | |||
+ | |||
+ | ====== Безопасность ====== | ||
+ | Минимальная обработка на стороне сервера данных присланных пользователем: | ||
+ | * **Сервер ожидает от пользователя строку**. Минимальная защита достигается применением функций strip_tags и trim< | ||
+ | if ($_GET[' | ||
+ | $id = trim(strip_tags($_GET[' | ||
+ | } | ||
+ | </ | ||
+ | * **Сервер ожидает от пользователя целое положительное число**. Минимальная защита достигается явным применением к целому типу и использовании функции abs< | ||
+ | $age = abs((int) ($_POST[' | ||
+ | </ | ||
+ | ===== Фильтрация(валидация) данных ===== | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[class DFunction]] - класс для проверки пользовательских данных | ||
+ | * [[PHP. Проверка на число в GET и POST запросах.]] | ||
+ | |||
+ | |||
+ | * Валидация EMail, при помощи фильтра FILTER_SANITIZE_EMAIL (удаляет все символы, | ||
+ | |||
+ | $a = " | ||
+ | echo filter_var($a, | ||
+ | echo " | ||
+ | ?> | ||
+ | </ | ||
+ | ====== Маленькие советы ====== | ||
+ | * < | ||
+ | Hачинающий: | ||
+ | Пpофи: echo $var; | ||
+ | </ | ||
+ | * < | ||
+ | Начинающий: | ||
+ | Пpофи: print " | ||
+ | </ | ||
+ | * Краткая запись <?= для строки <?php echo. Спорный совет - требует включения [[http:// | ||
+ | 1 способ: | ||
+ | 2 способ: | ||
+ | </ | ||
+ | |||
+ | * < | ||
+ | Hачинающий: | ||
+ | Пpофи: $a = array(1, | ||
+ | </ | ||
+ | * < | ||
+ | Hачинающий: | ||
+ | Пpофи: $b = ($a>1) ? 2:3; | ||
+ | </ | ||
+ | * При написании собственных функций желательно чтобы они возвращали результат, | ||
+ | * **Конкатенация строк** — два способа:< | ||
+ | Hачинающий: | ||
+ | Пpофи: $a .= $b; // этот способ намного быстрее - использовать его | ||
+ | </ | ||
📌 Удобный подбор VPS по параметрам доступен на DIEGfinder.com - официальном инструменте проекта DIEG. Это часть единой экосистемы, созданной для того, чтобы помочь быстро найти подходящий VPS/VDS сервер для любых задач хостинга.
📌 Для тестирования скриптов, установщиков VPN и Python-ботов рекомендуем использовать надежные VPS на короткий срок. Подробнее о быстрой аренде VPS для экспериментов - читайте здесь.
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Nginx простые примеры конфигурации
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах
7 Самых Популярных Обзоров
- Хостинг для Python-скриптов и приложений
- ТОП 4 лучших антидетект браузеров (Бесплатные & Платные)
- Подборка купонов (промокоды) на хостинг, антидетект браузеры
- Обзор THE.Hosting (PQ Hosting): надежный хостинг с профессиональной поддержкой
- Хостинг в России
- Хостинг в Европе
- Обзор браузера Dolphin {anty} для мультиаккаунтинга