PHP
РНР (читается как пи-эйч-пи) является интерпретируемым языком программирования.
Рабочие скрипты:
- PHP class DFunction и подборка функций и полезные функции
- Использование расширенного phpinfo vs PhpSysInfo и PhpSysInfo написанный на PHP скрипт предоставляющий информацию о системе.
Документация PHP:
- Composer - система управления пакетами для PHP.
- Общие стандарты кодирования PHP: правила наименования классов, PHP_CodeSniffer и т.д..
- protokolirovanie_oshibok_php. Как перенаправить вывод ошибок PHP в браузер непосредственно из скрипта?
- Сессии PHP вместо cookie - управление механизмом сессий в PHP
- XDebug - модуль для отладки PHP скриптов.
- Регулярные выражения в PHP - описание функций для использования регулярных выражений в PHP.
- Инициализации приложения. Автоматическая загрузка классов.
- otpravka_ehlektronnoj_pochty_pri_pomoschi_php: стандартная функция mail, Mail_Mime
- Шаблонизаторы для PHP. Изолирование от HTML (смешанный режим).
- phpDocumentor PHPDoc - система документирования исходных текстов на PHP. Альтернативой использованию phpDocumentor является Doxygen. ApiGen заменил PHPDocumentor как предпочитаемое средство работы с документацией для IDE Apache NetBeans IDE: Настройка, оптимизация и решение проблем.
- Базы данных:
- PDO PHP - библиотека унифицированных методов для доступа к различным базам данных.
- MySQLi или MySQL - взаимодействие PHP с Движок БД MySQL
- php-pgsql (php5-pgsql) - взаимодействие PHP с Использование и настройка PostgreSQL
- php-sqlite (php5-sqlite) - взаимодействие PHP c Как пользоваться SQLite
- PHP GD GD Graphics Library
- SOAP в PHP
- PHP - генерация отчетов - создание отчетов в виде файлов .xlsx
- Поддержка языков и кодировок: многобайтные строки, iconv.
- call_user_func - вызов callback функция. Прекрасно заменяет громоздкий switch.
- PHP - создание PDF:
- FPDF - нет встроенной поддержки Unicode, нужно патчить
- PDFlib - бесплатна только для некоммерческого использования
- Расширения, относящиеся к переменным и типам: Ctype — Функции определения типа символов, Filter — Фильтрация данных.
- Многопоточность PHP: PCNTL
- Встроенный web-сервер
- websrv_start.sh
#!/bin/bash /usr/bin/php -S localhost:8000 -t ~/Dropbox/php/
- GifCreator - класс PHP, который генерирует анимированные GIF из нескольких изображений.
Синтаксис
- Код на PHP начинается с открывающего дескриптора <?php, после которого следует исходный код PHP до конца файла. Как правило, они не завершаются закрывающим дескриптором ?>. Закрывающий дескриптор является необязательным и в файлах содержащих только код PHP рекомендуется его опускать.
- Для того чтобы объявить переменную в PHP, вначале имени переменной, ставиться знак $.
- Переменная создаётся в момент первого присваивания ей значения. Прежде чем использовать переменную настоятельно рекомендуется присвоить ей значение.
$isoalpha2='';
- Имена переменных чувствительны к регистру, а имена функций нет. Т.е. $Name и $name - это разные переменные, а Name() и name() - одинаковые функции.
- Специальное значение NULL представляет собой переменную без значения.
- Комментарии
// или # - однострочный комментарии. /**/ - многострочный комментарий.
- Строки заключённые в одинарные кавычки, трактуются как обычные литералы. При использовании одинарных кавычек следует экранировать только два специальных символа: обратную косую черту и саму одинарную кавычку, например
print 'Кот-д\'Ивуар - \изумительная\ страна.';
- Строки заключённые в двойные кавычки интерпретатор PHP будет пытаться вычислить.
- Символ тире и "больше" (→) обозначают вызов метода из класса.
- Двойное двоеточие (::) обознает вызов статического метода из класса.
- Символ точка и интерполяция. Строки в РНР объединяются при помощи символа точки (.), при этом все типы, отличные от строкового, приводятся К нему автоматически. Однако это не единственный способ формирования строки : можно прибегнуть к так называемой интерполяции, при которой переменная вставляется в строку, заключенную в двойные кавычки. Например, переменная $name = "Hello" , подставленная в строку "$name world!", при водит к формированию строки " Hello world!". Аналогично можно подставлять в строку значения членов класса. Однако конструкция $this→имя_члена достаточно сложна для интерпретации. Для того чтобы интерпретатор мог корректно различить обращение к члену класса из строки, необходимо заключить переменную в фигурные скобки, например
public function get_full_info() { return "{$this->get_info()} ({$this->get_age()})"; }
- Фигурные скобки {} обозначают начало и конец выполняемых конструкций, если их не использовать в операторах (if, for и т.д.) будет выполняться только одна конструкция. Например: Вывести все Веб корректные(безопасные) цвета (всего 216 цветов):
<?php for ($rr = 0; $rr <= 0xFF; $rr += 0x33) for ($gg = 0; $gg <= 0xFF; $gg += 0x33) for ($bb = 0; $bb <= 0xFF; $bb += 0x33) printf("%02X%02X%02X\n", $rr, $gg, $bb); ?>
Фигурные скобки {} можно применять для экранирования переменных, например
echo "Цена: ${Cost}UAH "; // или echo "Цена: {$Cost}UAH ";
- Альтернативный синтаксис управляющих структур: if, while, for, foreach и switch. В каждом случае основной формой альтернативного синтаксиса является изменение открывающей фигурной скобки на двоеточие (:), а закрывающей скобки на endif;, endwhile;, endfor;, endforeach; или endswitch; соответственно.
Операторы
- Цикл for. Синтаксис:
FOR (условие1; условие2; условие3)выражения
PHP поддерживает альтернативный синтаксис FOR:
FOR(усл1; уcл2; усл3;):операторы;...;ENDFOR;
- условие1 - Безусловно выполняется (вычисляется) в начале цикла
- условие2 - Проверяется в начале каждой итерации. Если оно равно TRUE, то цикл продолжается и выполняются вложенные операторы. Если оно равно FALSE, то цикл заканчивается.
- условие3 - Выполняется (вычисляется) в конце каждой итерации.
Каждое из этих условий может быть пустым.
Пример. Так как условие1 безусловно выполняется один раз в начале цикла - это можно использовать для записи более компактного кода.
- array1.php
$matches = array('Makap', true, 'false', 35); for ($i = 0, $cnt=count($matches); $i < $cnt; $i++) { echo "$matches[$i]\n"; }
- Конструкция foreach предоставляет простой способ перебора массивов. Когда оператор foreach начинает исполнение, внутренний указатель массива автоматически устанавливается на первый его элемент. Для того, чтобы напрямую изменять элементы массива внутри цикла, переменной $value должен предшествовать знак &. У цикла foreach существует альтернативный вариант записи:
<?php foreach ($array as $item): ?> <li><?=$item?></li> <?php endforeach; ?>
Вместо фигурных скобок используется закрывающее выражение endforeach, открывающая конструкция завершается двоеточием, а закрывающая – точкой с запятой.
Функции
Функция объявляется при помощи ключевого слова function, за которым следуют ее имя и какие либо параметры в скобках. Для вызова функции достаточно указать ее имя и задать значения аргументов для каждого ее параметра. Если функция возвращает значение, то можно присвоить результат функции переменной.
PHP анализирует весь файл до его выполнения, поэтому можно произвольно размещать объявления функций и их вызовы. Однако в PHP запрещено переопределение функций. Если PHP обнаруживает функцию с именем ранее найденной функции, то он выдает фатальную ошибку и «умирает».
Если не определено обратное, все значения передаются в функцию и из функции по значению, а не по ссылке. Это означает, что PHP создает копию значения и предоставляет эту копию для обработки. Поэтому любые изменения, происходящие с копией, не влияют на оригинальное значение. Во многих языках передача переменных по ссылке имеет еще одно преимущество – она значительно быстрее передачи по значению. И хотя для PHP это тоже справедливо, но разница в скорости минимальная. По этой причине прибегать к передаче по ссылке нужно только при реальной необходимости и никогда в целях улучшения производительности.
Для того чтобы функция принимала аргументы по ссылке, а не по значению, поставьте символ & перед именем параметра в прототипе функции:
function wrap_html_tag(&$string, $tag = 'b') { $string = "<$tag>$string</$tag>"; }
Теперь нет необходимости возвращать строку, поскольку изменяется сам оригинал.
- Вывести все подключенные функции PHP
print_r(get_defined_functions());
PHP и JavaScript
Суперглобальные переменные
Переменная $GLOBALS. Ассоциативный массив (array), содержащий ссылки на все переменные глобальной области видимости скрипта, определенные в данный момент. Имена переменных являются ключами массива.
<?php $conf['conf']['foo'] = 'this is foo'; $conf['conf']['bar'] = 'this is bar'; global $conf; // добавляем переменную в глобальный массив видимости скрипта $output = print_r($GLOBALS["conf"], true); echo "$output\n"; ?>
Для объявления глобальной переменной ее достаточно поместить в массив $GLOBALS
$GLOBALS['testkey2']='testvalue2';
Вывести на экран все значения переменных массива $GLOBALS можно при помощи print_r($GLOBALS); или так:
foreach ($GLOBALS as $key=>$value) echo 'GLOBALS['.$key.'] == '.$value.'<br>';
Переменная $_SERVER.
- $_SERVER['REMOTE_ADDR'] IP- адрес, с которого пользователь просматривает текущую страницу
- $_SERVER['HTTP_ACCEPT_LANGUAGE'] содержимое заголовка Accept-Language определение локали в браузере
- $_SERVER['HTTP_USER_AGENT'] содержимое заголовка User-Agent
- $_SERVER['HTTP_VIA'] если не пустая, значит используется proxy. Значение - адрес (или несколько адресов) proxy сервера.
- $_SERVER['HTTP_X_FORWARDED_FOR'] если не пустая, значит используется proxy, без анонимизатора (т.е. ваш реальный IP не скрывается). Значение - реальный ip адрес клиента.
- $_SERVER['REQUEST_METHOD'] какой метод был использован для запроса страницы 'GET', 'HEAD', 'POST', 'PUT' и тд., например проверим пришел ли запрос на нашу страницу методом POST
if ($_SERVER['REQUEST_METHOD']=='POST') { include_once 'your.inc.php'; }
- $_SERVER['HTTP_REFERER'] - Адрес страницы (если есть), которая привела браузер пользователя на эту страницу. Этот заголовок устанавливается веб-браузером пользователя. Не все браузеры устанавливают его и некоторые в качестве дополнительной возможности позволяют изменять содержимое заголовка HTTP_REFERER. Одним словом, в самом деле ему нельзя доверять.
Переменная $_GET.
Переменная $_POST.
- Вывести все переменные переданные методом POST
<?php echo '<br>'; var_dump($_POST); echo '<br>'; print_r($_POST); echo '<br>'; ?>
- Если массив POST пуст прервать выполнение скрипта
if (empty($_POST)) {exit();}
Переменная $_FILES - переменные файлов, загруженных по протоколу Коды состояния HTTP. Методы и структура протокола HTTP методом Метод HTTP POST. Пример PHP - загрузка файла на сервер.
Переменная $_REQUEST - ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE. Переменные в массиве $_REQUEST передаются в скрипт посредством методов GET, POST или COOKIE, поэтому им нельзя доверять, т.к. они могли быть изменены удаленным пользователем. Их наличие и порядок добавления данных в соответствующие массивы определяется директивой variables_order (по умолчанию установлено GPCS).
Переменная $_SESSION
Переменная $_ENV. Заполняется если скрипт был запущен из командной строки. Массив $_SERVER будет содержать все переменные из массива $_ENV.
Переменная $_COOKIE: Cookie.
Переменная $http_response_header
require и include
Операторы include, require, include_once и require_once работают аналогично серверным включениям (SSI). Операторы include и require являются языковыми конструкциями, а значит могут использоваться без круглых скобок.
include 'vars.php'; include_once './second.class.php';
В относительном виде путь может содержать специальные управляющие символы "." (точка) и ".." (две точки). Точка обозначает текущий каталог, а две точки - предыдущий вышележащий.
Тернарная операция
Тернарная операция в PHP записывается аналогично языку С. Синтаксис тернарного оператор "?":
$переменная = условие ? $переменная = если условие выполнено : $переменная = если условие не выполнено
- Пример.
echo (empty($_SERVER['HTTP_REFERER'])) ? 'Not referer' : $_SERVER['HTTP_REFERER'];
- Пример. Формирование SQL запроса.
#!/usr/bin/php <?php $nColumns = 'peer,valute'; for ($year = 2009; $year <= 2012; $year++) { // цикл перебирает года for ($month = 1; $month <= 12; $month++) { //вложенный цикл перебирает месяцы ($month < 10 ? $day = $year . "0" . $month . "%" : $day = $year . $month . "%"); // тернарный оператор $query = "select " . $nColumns . " from Cache where day like '" . $day . "'"; } } ?>
Справочник функций PHP
Функции запуска внешних программ
Функции для работы с файлами и сетью
- fgetss - прочитать строку из файла и отбросить HTML и PHP теги.
- fgets - построчное чтение из файла. Пример. Считываем построчно текстовый файл и каждую строку передаем на обработку функции TxtToSQL()
function TxtToSQL($line) { echo "$line"; } $filename = 'ARMY_utf8.txt'; $fhandle = fopen($filename, "r") or die("File $filename not found\n"); while (!feof($fhandle)) { TxtToSQL(fgets($fhandle)); } fclose($fhandle);
- file_get_contents - читает содержимое файла в строку. Функция использует технику отображения файла в память (memory mapping), если она поддерживается вашей операционной системой. Пример: запрос страницы с передачей логина и пароля
<?php $url = 'https://example.com/dbs/test.php'; $auth = base64_encode('user:password'); $header = array("Authorization: Basic $auth"); $opts = array('http' => array('method' => 'GET', // 'protocol_version' => 1.1, 'header' => $header)); // Создаем окружение с помощью установленных выше HTTP- заголовков $context = stream_context_create($opts); $file = file_get_contents($url . '?id=8300120011', false, $context); print_r($file); ?>
Пример: запрос страницы методом POST:
<?php $data = array( 'needle' => '38093' ); $postdata = http_build_query($data); // Генерирует URL-кодированную строку запроса $options = array('http' => array( 'method' => 'POST', 'header' => 'Content-type: application/x-www-form-urlencoded', 'content' => $postdata ) ); $context = stream_context_create($options); // Открываем файл с помощью установленных выше HTTP-заголовков $result = file_get_contents('https://example.com/response.php', false, $context); echo $result; ?>
Безопасность
Фильтрация(валидация) данных
- PHP class DFunction и подборка функций - класс для проверки пользовательских данных
- Валидация EMail, при помощи фильтра FILTER_SANITIZE_EMAIL (удаляет все символы, кроме букв, цифр и !#$%&'*+-/=?^_`{|}~@.[]. )
<?php # email $a = "dar(k)f ire@ex\amp/le.c om"; echo filter_var($a, FILTER_SANITIZE_EMAIL); echo "\n"; ?>
Маленькие советы
📌 Для тестирования скриптов, установщиков VPN, Python ботов рекомендуем использовать надежные VPS на короткий срок. Если вам нужна помощь с более сложными задачами, вы можете найти фрилансера, который поможет с настройкой. Узнайте больше о быстрой аренде VPS для экспериментов и о фриланс-бирже для настройки VPS, WordPress. 📌
💥 Подпишись в Телеграм 💥 и задай вопрос по сайтам и хостингам бесплатно!7 Самых Популярных Статей
- Как запустить скрипты и веб-приложения на Python
- Что такое страны TIER 1,2,3
- 7 способов сравнения файлов по содержимому в Windows или Linux
- Установка и тестирование веб-панели HestiaCP
- Китайский VPN Shadowsocks простая установка и настройка
- top, htop, atop определение загрузки ОС (Load average, LA)
- Использование rsync в примерах