WEB start

Компьютеры. Интернет. Заочное профессиональное обучение. 055-966-10-17

hit 
counter

Обучение

Широкий спектр программ и различных форм обучения

Возможность заочного, дистанционного обучения 055-966-10-17
  • Программирование. Современные языки и технологии.
  • Обслуживание персональных компьютеров.
  • Компьютерные сети. Защита информации.
  • Интернет. Планирование, создание WEB-сайтов. Дизайн, программирование. CEO, продвижение сайтов в интернет.
  • Основы современных IT - технологий.

Наши преимущества

  • Наши программы обучения ориентированы на конкретного слушателя. Вы можете обучаться по одной из предложенных Вам программ, а можете самостоятельно составить, откорректировать, откорректировать свою персональную программу обучения. Преподаватель, консультант помогают Вам сориентироваться в материале курса при выборе программы обучения.
  • Обучение индивидуальное. Преподаватель проводит занятие только для Вас, ориентируясь на Ваши возможности, предыдущие знания и опыт, скорость восприятия нового материала.
  • Вы учитесь в удобное для Вас время, в удобной для Вас форме, может быть выбран гибкий график занятий, в соответствии с Вашими возможностями и пожеланиями.
  • Обучение проводится дистанционно. Вы можете обучаться, сидя за Вашим компьютером дома или на работе, не тратя время на поездки к месту обучения.


Регистрация на сайте

PHP

  • JavaScript - AJAX

    Технология AJAX (Asynchronous JavaScript and XML)  - это способ создания быстрых и динамичных веб-страниц. AJAX позволяет обновлять веб-страницы асинхронно, обмениваясь небольшими объемами данных с сервером в фоновом режиме. Это означает, что можно обновлять части веб-страницы без перезагрузки всей страницы.

    AJAX используется для решения следующих задач: 

    • Чтение данных с веб-сервера - после загрузки страницы
    • Обновление веб-страницы без перезагрузки страницы
    • Отправка данных на веб-сервер - в фоновом режиме

    Ключевым элементом AJAX является объект DOM - XMLHttpRequest.

    Все современные браузеры поддерживают этот объект.

    Этот бъект (XMLHttpRequest)  использоваться для обмена данными с веб-сервером в фоновом режиме. 

    Создать объект XMLHttpRequest

    var xhttp = new XMLHttpRequest();
    В старых версиях Internet Explorer (5/6) вместо объекта XMLHttpRequest используется объект ActiveX:

    Пример:

    if (window.XMLHttpRequest) { // Для современных браузеров xmlhttp = new XMLHttpRequest(); } else{ // Для старых версий IE xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");

    Доступ из разных доменов

    По соображениям безопасности современные браузеры не разрешают доступ из разных доменов.

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

    XMLHttpRequest - методы

    abort()

    Отменяет текущий запрос.

    getAllResponseHeaders()

    Возвращает полный набор заголовков HTTP в виде строки.

    getResponseHeader( headerName )

    Возвращает значение указанного HTTP-заголовка.

    open( method, URL )

    open( method, URL, async )

    open( method, URL, async, userName )

    open( method, URL, async, userName, password )

    Указывает метод, URL и другие необязательные атрибуты запроса.

    Параметр method может иметь значение «GET», «POST» или «HEAD». Могут быть и другие HTTP-методы, такие как «PUT» и «DELETE» (в основном используемые в приложениях REST).

    Параметр «async» указывает, следует ли обрабатывать запрос асинхронно или нет. «true» означает, что обработка сценария продолжается после метода send (), не дожидаясь ответа, а «false» означает, что скрипт ожидает ответа до продолжения обработки скрипта.

    send( content )

    Отправляет запрос.

    setRequestHeader( label, value )

    Добавляет пару label / value в HTTP-заголовок, который нужно отправить.

    XMLHttpRequest - свойства

    Свойство XMLHttpRequest.readyState возвращает состояние, в котором находится клиент XMLHttpRequest. Клиент существует в одном из следующих состояний:

    Значение  Состояние Описание
    0 UNSENT Клиент создан. open () еще не вызыван.
    1 OPENED open() вызван.
    2 HEADERS_RECEIVED send () был вызван, заголовки и статус доступны.
    3 LOADING Загрузка; responseText содержит частичные данные.
    4 DONE Операция завершена.
    UNSENT
    Клиент XMLHttpRequest был создан, но метод open () еще не был вызван.
    OPENED
    Вызывается метод open(). Во время этого состояния заголовки запросов могут быть установлены с использованием метода setRequestHeader(), и может быть вызван метод send(), который инициирует выборку.
    HEADERS_RECEIVED
    send () был вызван, и заголовки ответов были получены.
    LOADING
    Текст ответа принимается. Если responseType - это «текст» или пустая строка, responseText будет иметь частичный текстовый ответ при загрузке.
    DONE
    Операция выборки завершена. Это может означать, что передача данных была успешно завершена или не выполнена.

    Имена состояний в Internet Explorer различны. Вместо UNSENT, OPENED, HEADERS_RECEIVED, LOADING и DONE используются имена READYSTATE_UNINITIALIZED (0), READYSTATE_LOADING (1), READYSTATE_LOADED (2), READYSTATE_INTERACTIVE (3) и READYSTATE_COMPLETE (4).

    onreadystatechange

    Обработчик событий который срабатывает при любом изменении состояния. 

    responseText

    Возвращает ответ как текстовую строку.

    responseXML

    Возвращает ответ как XML. Это свойство возвращает DOM - объект XML, который может быть проанализирован и проанализирован с использованием методов и свойств W3C DOM.

    status

    Возвращает статус как число (например, 404 для «Не найдено» и 200 для «ОК»).

    statusText

    Возвращает статус как строку (например, «Не найдено» или «ОК»).

    AJAX - отправка запроса на сервер

    Чтобы отправить запрос на сервер, используются  методы open () и send () объекта XMLHttpRequest:

    xhttp.open ("GET", "ajax_info.txt", true);

    xhttp.send ();

    Метод Описание
    open(method, url, async) Создаёт запрос
    method: тип запроса: GET или POST
    url: расположение сервера (файла)
    async: true (асинхронный) или false (синхронный)
    send() Отправляет запрос на сервер (используется для GET)
    send(string) Отправляет запрос на сервер (используется для POST)

    GET или POST?

    GET проще и быстрее, чем POST, и может использоваться в большинстве случаев.

    POST-запросы используются, если:

    • Не может быть использован эшированный файл (нужно обновлять файл или базу данных на сервере).
    • Отправка большого количества данных на сервер (POST не имеет ограничений по размеру).
    • Отправка пользовательского ввода (который может содержать неизвестные символы), POST более надежный и безопасный, чем GET.

    Примеры использования

    Чтение файла с сервера

    • Создаём объект типа XMLHttpRequest (в переменной httpRequest)
    • Задаём функцию, которая запускается при любых изменениях состояния этого объекта (привязываем её к событию onreadystatechange созданного объекта). Эта функция при каждом изменении состояния:

    проверяет, завершена ли передача данных (XMLHttpRequest.DONE) и завершена успешно (status === 200)

    если - да, то свойство responseText прописывается в DIV с ID="outdiv"

    если - нет, то в этот DIV прописывается сообщение об ошибке

    • Вызываем метод open() объекта XMLHttpRequest, который создали в переменной httpRequest (httpRequest.open('GET', 'AjaxTest.txt', true)). Этот метод создаёт асинхронный запрос на сервер, по методу GET, для получения с сервера файла с именем AjaxTest.txt
    • Методом send() отправляем запрос на сервер. 
    • Наша функция постоянно анализирует состояние запроса, и в случае его успешного завершения, содержимое текстового файла будет находиться в переменной httpRequest.responseText


    // Create XMLHttpRequest object // Old compatibility code, no longer needed. if (window.XMLHttpRequest) { // Mozilla, Safari, IE7+... httpRequest = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE 6 and older httpRequest = new ActiveXObject("Microsoft.XMLHTTP"); } httpRequest.onreadystatechange = function() { // process the server response if (httpRequest.readyState === XMLHttpRequest.DONE) { if (httpRequest.status === 200) { document.getElementById("outdiv").innerHTML=httpRequest.responseText; } else { document.getElementById("outdiv").innerHTML = 'A problem encountered processing HTTP request.'; } } }; httpRequest.open('GET', 'AjaxTest.txt', true); httpRequest.send(null);



  • Joomla. Компонент Sourcerer

    Компонент sourcerer позволяет удобно размещать коды программ на PHP, JavaScript, стили CSS внутри статей, модулей сайта Joomla.

    Синтаксис тмрлдбзования довольно прост. Нужно разместить теги {source} и {/ source} в текстовой области, в которой должен появиться код (например, статья или пользовательский HTML-модуль), код программы размещается между тегами.

    Пример вставки HTML кода

    {source}<span style="color:red">This text should be red!</span>{/source}

    HTML-теги (с двойными квадратными скобками)

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

    Нужно использовать [[tag]] вместо <tag>

    Пример:

    {source}[[span style="color:red"]]This text should be red![[/span]]{/source}

    Вставка программы на JavaScript

     {source} <script > alert('This text is placed through <strong>JavaScript</strong>!'); </script> {/source}

    Вставка программы на PHP

    {source} <?php echo ('This text is placed through <strong>PHP</strong>!'); ?> {/source}

    Комбинированный код (HTML, JavaScript и PHP)

    {source} <span style="color:red">This text should be red!</span> <br /> <script> document.write('This text is placed through <strong>JavaScript</strong>!'); </script> <?php echo ('<p>'); echo ('This text is placed through <strong>PHP</strong>!'); echo ('</p>'); ?> {/source}

    Вставка php из отдельного файла

    Пример файла PHP:
    www.yourdomain.com/myfiles/file.php

    {source file=myfiles/file.php}{/source}

    Или:

    {source file=myfiles/file.php}<?php echo '<div class="mydiv">' . $var_from_file . '</div>'; ?>{/source}


    Или:

    {source}<?php require_once JPATH_SITE.'/myfiles/file.php'; ?>{/source}


    Вставка текстового или HTML файла 

    {source}<?php echo file_get_contents( JPATH_SITE.'/myfiles/file.txt' ); ?>{/source}


    Использование Joomla framework

    Программа PHP, вставленная через sourcerer, может использовать объекты Joomla framework.

    Например:

    подключиться к базе данных

    {source}<?php $query = "SELECT something from #__mydatabasetable WHERE this = 'that'"; $database->setQuery($query); $result = $database->loadResult(); ?>{/source}

    подключиться к внешней базе данных

    {source}<?php $option = array( 'driver' => 'mysql', // Database driver name 'host' => 'db.myhost.com', // Database host name 'user' => 'fredbloggs', // User for database authentication 'password' => 's9(39s£h[%dkFd', // Password for database authentication 'database' => 'bigdatabase', // Database name 'prefix' => 'abc_', // Database prefix (may be empty) ); $db = JDatabase::getInstance( $option ); ?>{/source}

    добавить Javascript в начало страницы html

    {source}<?php $script = " alert('this is javasript'); "; $doc->addScriptDeclaration( $script ); ?>{/source}

    Чтобы добавить файл js в HEAD, используется:

    {source}<?php $doc->addScript( JURI::root( true ).'/path/to/your/file.js' ); ?>{/source}

    Чтобы добавить несколько таблиц стилей и javascript программ, можно использовать php-код:

    {source}<?php $css = " body { color: red; } "; $doc->addStyleDeclaration( $css ); $doc->addStyleSheet( JURI::root( true ).'/path/to/your/file.css' ); $doc->addStyleSheet( JURI::root( true ).'/path/to/your/file2.css' ); $script = " alert('this is javasript'); "; $doc->addScriptDeclaration( $script ); $doc->addScript( JURI::root( true ).'/path/to/your/file.js' ); $doc->addScript( JURI::root( true ).'/path/to/your/file2.js' ); ?>{/source}




    Глобальные переменные sourcerer

    Компонент sourcerer создаёт и позволяет использовать свои переменные:

    $mainframe или $app

    $document или $doc (не может использоваться в коде Sourcerer в модулях)

    $database или $db

    $user - объект user, содержащий сведения о пользователе guest или текущем пользователе

    $Itemid Идентификатор меню страницы

    $article Объект article (доступен только при использовании кода внутри статей)






  • Работа с формами в PHP

    При передаче данных форма может использовать методы: post или get.

    Соответственно, в теге fom атрибут method может принимать значение post или get. При переддаче по методу post значения переменных формы передаются через массив: $_POST, при методе get - через $_GET.

    Переменные HTTP-запроса

    Глобальные переменные - $_GET,  $_POST,  $_REQUEST.

    • $_REQUEST -ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE
    • $_POST - ассоциативный массив переменных, переданных скрипту через HTTP метод POST в (случае использования в запросе метода post)
    • $_GET - ассоциативный массив переменных, переданных скрипту через HTTP метод GET в (случае использования в запросе метода get)


    Вызов программы из отдельного файла

    Пример HTML - странички, котораяй рисует форму:

    <html> <head> <meta charset="utf-8"> </head> <body> <h1>Введите данные</h1> <form action="PHP_16-1Form.php" method="post" target="out"> Имя: <input type="text" name="name" value="Введите Ваше имя"><br> E-mail: <input type="text" name="email"><br> <input type="submit" value="Ввод"> <input type="reset" value="Очистить форму"> </form> <iframe name="out" style="border:none"></iframe> </body> </html>


    Пример файла, который эта страничка вызывает для обработки данных формы (вывод полученных данных).


    <?php var_dump($_POST); ?>


    Размещение программы в том же файле, что и сама форма

    Пример:

    <!DOCTYPE HTML> <html> <meta charset="utf-8"> <head> </style> </head> <body> <h1>Форма ввода</h1> <table> <form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>"> <tr><td>Имя: </td><td><input type="text" name="name"></td></tr> <tr><td>Возраст:</td><td> <input type="age" name="name"></td></tr> <tr><td colspan=2><input type="submit" value="Ввод"> </td></tr> </form> </table> <?php echo "<h1>Введено:</h1>"; var_dump ($_REQUEST); ?> </body> </html>




    Проверка введённых данных

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

      Для этих целей используются разные методы, например:

    • задание типа поля ввода
    • использование проверки данных до отправки на сервер (JavaScript)
    • использование PHP - фильтров (filter_var() )
    • использование шаблонов ввода - регулярных выражений (RegularExpressions )





  • PHP cookies

    PHP поддерживает HTTP cookies. Это механизм хранения небольших объёмов данных браузером на компьютере клиента.

    Для записи cookies используются функции setcookie() или setrawcookie(). 

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

    Любые cookies, отправленные серверу браузером клиента, автоматически включаются в суперглобальный массив $_COOKIE.

    Параметры браузера клиента управляют режимом работы клиента с cookies. Можно разрешить cookie, удалить или  запретить в параметрах браузера. Например, в браузере chrome: chrome://settings/cookies

    Синтаксис setcookie()

    setcookie(name, value, expire, path, domain, secure, httponly);

    Функция setcookie() записывает в cookie переменную с именем "name", значение которой: "value". Эта переменная передаётся клиенту вместе с другими HTTP заголовками. Как и любой другой заголовок, cookie должны передаваться до того, как будут выведены какие-либо другие данные скрипта (это ограничение протокола). Это значит, что в скрипте вызовы этой функции должны располагаться до любого другого вывода, включая вывод HTML тэгов.

    После передачи клиенту переменные cookie  доступны через глобальный массив $_COOKIE. Эти данные будут доступны при следующей загрузке страницы, пока не закончится срок годности (expire). Значения cookie также доступно через  $_REQUEST.

    name - единственный необходимый параметр: имя переменной, которая запишется в cookie

    value - значение переменной, это значение будет сохранено на клиентском компьютере значение переменной cookie c именем , будет доступно через $_COOKIE['cookiename'].

    expire - срок годности cookie, по истечении срока годности cookie автоматически удаляются, если задать 0 или пропустить этот параметр, срок действия cookie истечет с окончанием сессии (при закрытии броузера)

    path - путь к директории на сервере, из которой будут доступны cookie, если установлено значение «/», файл cookie будет доступен во всем домене

    domain - домен, которому доступны cookie, задание домена делает cookie доступными в нем и во всех его поддоменах

    secure - cookie должны передаваться от клиента по защищенному HTTPS соединению

    httponly - если задано TRUE, cookie будут доступны только через HTTP протокол, то есть cookie в этом случае не будут доступны скриптовым языкам, вроде JavaScript

    Функция setcookie() возвращает значение true или false в зависимости от того, удалось или нет  установить cookie. Это можно использовать для того, чтобы проверить, разрешены ли cookie в браузере клиента.

    Пример:

    Записать cookie

    <?php setcookie("name", "John", time()+3600, "/","", 0); setcookie("age", "36", time()+3600, "/", "", 0); ?>


    Прочесть cookie

    <?php var_dump ($_COOKIE); ?>


    Удалить cookie


    <?php setcookie( "name", "", time()- 60, "/","", 0); setcookie( "age", "", time()- 60, "/","", 0); ?>







  • Что такое SQL (ANSI стандарт)

    RDBMS (Relational Database Management System - MS SQL Server, IBM DB2, Oracle, MySQL, and Microsoft Access)

    Структура данных:

    Таблица

    Запись (строка)

    Колонка

    Контроль данных:

    NOT NULL
    DEFAULT
    UNIQUE
    PRIMARY Key
    FOREIGN Key
    CHECK Constraint
    INDEX

    WEB интерфейс. PHPMyAdmin.

    Основные команды. SQL запрос (query).

    SELECT - выборка данных из БД

    UPDATE - изменения данных в БД

    DELETE - удаление

    INSERT INTO - вставка

    CREATE DATABASE - создание БД

    CREATE DATABASE dbname;

    ALTER DATABASE - изменение БД

    CREATE TABLE - создание новой таблицы

    ALTER TABLE - изменение таблицы

    DROP TABLE - удаление таблицы

    CREATE INDEX - создание поискового индекса

    DROP INDEX - удаление индекса

    Выборка данных: оператор Select, сортировка, объединение, условие выборки

    Вставка, удаление, обновление

    Средства PHP для работы с MySQL.

  • PHP sessions

    Сессия (session) создает файл во временном каталоге на сервере, где могут храниться переменные и их значения. Эти данные доступны для всех страниц сайта, но только во время этого сеанса связи с сервером.

    Расположение временного файла определяется настройкой в файле php.ini, называемой session.save_path. 

    Когда сессия инициируется, происходит ряд событий

    • Сначала PHP создает уникальный идентификатор для этого конкретного сеанса, который представляет собой строку из 32 случайных шестнадцатеричных чисел
    • Cookie с именем: PHPSESSID автоматически отправляется на компьютер пользователя для хранения уникальной строки идентификации сеанса
    • на сервере в указанном временном каталоге автоматически создаётся файл, который содержит имя уникального идентификатора с префиксом sess_ ie

    Когда PHP-скрипт хочет получить значение переменной сеанса, PHP автоматически получает  идентификатор сеанса из cookie PHPSESSID,  затем ищет временную директорию для файла с этим именем, проверка производится путем сравнения обоих значений.

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

    Открытие сеанса

    Функция session_start() стартует сеанс связи (session). Эта функция сначала проверяет, запущен ли сеанс, и если ни один не запущен, она запускает его. Рекомендуется размещать вызов session_start () в начале страницы.

    Переменные сеанса хранятся в ассоциативном массиве с именем $ _SESSION []. Эти переменные могут быть доступны во время жизни сеанса.

    В следующем примере открывается сессия (сеанс), затем регистрируется переменная с именем counter, которая увеличивается каждый раз, когда страница посещается во время этого сеанса.

    Функция isset() используется для проверки, установлена уже переменная сессии или нет.


    <?php session_start(); if( isset( $_SESSION['counter'] ) ) { $_SESSION['counter'] += 1; }else { $_SESSION['counter'] = 1; } $msg = "You have visited this page ". $_SESSION['counter']; $msg .= "in this session."; ?> <html> <head> <title>Setting up a PHP session</title> </head> <body> <?php echo ( $msg ); ?> </body> </html>

    Результат:

    You have visited this page 1in this session.

    Закрытие сеанса

    Сеанс PHP может закрывается функцией session_destroy (). Эта функция не требует никаких аргументов, и один вызов может уничтожить все переменные сеанса. Если нужно уничтожить только одну переменную сеанса, можно использовать функцию unset () для одной переменной сеанса.

    Пример:

    <?php session_destroy(); ?>
    Или

    <?php unset($_SESSION['counter']); ?>


    Автоматический старт sessions

    Можно не вызывать функцию start_session (), чтобы начать сеанс, когда пользователь посещает сайт, если в файле php.ini переменная session.auto_start установлена равной 1.




  • Что такое PHP-файл?

    • PHP-файлы могут содержать текст, HTML, CSS, JavaScript и PHP-код
    • PHP-код выполняется на сервере, и результат возвращается браузеру в виде простого HTML-кода
    • Файлы PHP имеют расширение «.php»

    Что может сделать PHP?

    • PHP может генерировать динамическое содержимое страницы
    • PHP может создавать, открывать, читать, записывать, удалять и закрывать файлы на сервере
    • PHP может собирать данные формы
    • PHP может отправлять и получать файлы cookie
    • PHP может добавлять, удалять и изменять данные в вашей базе данных
    • PHP может использоваться для управления доступом пользователей
    • PHP может шифровать данные
    • С PHP вы не ограничены выводом HTML. Вы можете выводить изображения, PDF-файлы и даже флеш-ролики.
    • Вы также можете выводить любой текст, такой как XHTML и XML.

    Почему PHP?

    • PHP работает на различных платформах (Windows, Linux, Unix, Mac OS X и т. Д.).
    • PHP совместим практически со всеми используемыми сегодня серверами (Apache, IIS и т. Д.)
    • PHP поддерживает широкий спектр баз данных
    • PHP является бесплатным.
    • PHP легко изучается и эффективно работает на сервере

     

     

  • Константы в языке PHP

    Константы (constants) в PHP похожи, по сути, на переменные (variables). Это - идентификатор, который может содержать некоторое значение. Константа, в отличие от переменной, не допускает изменения своего значения в процессе выполнения программы.

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

    В РНР константы определяются функцией define(), которая имеет следующий формат:

    define($name, $value, $case_sen)

    $name - имя константы;
    $valu - значение константы;
    $case_sen - необязательный параметр логического типа, указывающий, следует ли учитывать регистр букв (true) или нет (false).

    Пример определения и использования констант в PHP:

    <?php define("pi",3.14,true); echo pi; // Выводит 3.14
    ?>

    Фунция define() возвращает значение true или false в зависимости от того, прошло ли успешно определение константы.

    Если параметр $case_sen равен true, то интерпретатор будет учитывать регистр символов при работе с константой. Обратите внимание, что константы используются без предваряющего знака $.

    Различия между константами и переменными:

    • У констант нет приставки в виде знака доллара ($)
    • Константы можно определить только с помощью функции define(), а не присваиванием значения
    • Константы могут быть определены и доступны в любом месте без учета области видимости
    • Константы не могут быть определены или аннулированы после первоначального объявления
    • Константы в PHP версиях до 7.0 могут иметь только скалярные значения. Сверсии 7 - также массив (array)

    Для проверки существования константы можно использовать функцию defined($name). Она возвращает значение true, если константа определена.

    <?php // Проверяем , существует ли в нашей программе константа Pi if (defined("Pi") == true ){ echo "В программе уже есть константа Pi "; } else { define("Pi",3.14159,true); echo "Определили константу Pi = 3.14159 !"; } ?>

    PHP - расширение runkit предоставляет возможности переопределить константы (runkit_constant_redefine(), runkit_constant_remove()).

    Стандартные константы PHP

    В языке PHP, наряду с задаваемые пользователем,  существуют предопределенные константы.

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

    Есть пять предопределенных констант, которые меняют свое значение в зависимости от контекста, в котором они используются. Например, константа __LINE__ зависит от строки в скрипте, на которой эта константа указана. Специальные константы нечувствительны к регистру.

    Например:

    Имя
    Описание
    __LINE__
    Текущая строка в файле.
    __FILE__
    Полный путь и имя текущего файла.
    __DIR__
    Папка, в которой расположен файл. Эквивалент - dirname(__FILE__).
    __FUNCTION__
    Имя функции. 
    __CLASS__
    Имя класса. 
    __TRAIT__
    Имя трейта 
    __METHOD__
    Имя метода класса. 
    __NAMESPACE__
    Текущее пространство имён




  • PHP - массивы

    Инициализация массива

    Массив может быть инициализирован до его использования в программе.

    Например, используя ключевое слово - array

    $myFirstArray = array (1,2,3,4,5);

    Используя разделители - []

    $ar2 = [1,"test",33];

    Используя функцию list()

    list($a, $b) = array('Alice', 'Bob');

    Или динамически, во время выполнения программы. При этом назначение индексов элементов может производиться автоматически (в примере ниже индексы присвоятся от 0 до 3):

    $paperType[] = "Copier"; $paperTyper[] = "Inkjet"; $paperType[] = "Laser"; $paperType[] = "Photo";

    или - явно, вручную:

    $paperType[1] = "Copier"; $paperTyper[2] = "Inkjet"; $paperType[3] = "Laser"; $paperType[4] = "Photo";

    Для распечатки массива удобно использовать PHP - функции:

    var_dump(); print_r()

    Например:

    var_dump($paperType);

    Массивы с цифровыми индексами (Numerically Indexed Arrays)

    В таком массиве индекс каждого элемента - цифровой. По-умолчанию PHP нумерует элементы массивов, начиная с 0. То есть: индексы масива, состоящего из элементов - 0,1,2 .

    $year = ["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь",12];

    Распечатать значение третьего элементв массива можно, например, используя синтаксис:

    echo $year [2];

    Результат - Март.

     

    Ассоциативные массивы (Associative Arrays)

    В ассоциативном массиве - индексами являются имена.

    $students = [["Piter,22"],["Sandy",24]]; $ages = ["Peter"=>"35","Ben"=>"37","Joe"=>"43","Harry1"=>"50","Harry2"=>"50"];

    Команда:

    echo $ages ['Joe'];

    выводит на печать - 43

    Многомерные массивы (Multidimensional Arrays)

    Это массив, каждый эдемент которого является также массивом.

    Например - массив:

    $students = array ( array ("Ivan",25, "Software development", 300), ["Steve",35, "WEB", 200], ["Nikolay",28, "PC Support", 150], ["Lisa",25, "Photoshop", 100] , ["Bobby",25, "Photoshop", 100] );

    Команда:

    echo $students[0][0];

    выводит на печать - Ivan

     

    Цикл foreach...as

    Для обработки элементов массива часто используюися циклы (loops ).

    Например:

    <?php $paper = array("Copier", "Inkjet", "Laser", "Photo"); $j = 0; foreach ($paper as $item) { echo "$j: $item<br>"; ++$j; } ?>

     

    <?php $cars = array("Volvo", "BMW", "Toyota"); $arrlength = count($cars); for($x = 0; $x < $arrlength;="" $x++)="" {="" echo="" $cars[$x];="" echo="">
    "; } ?>

     

     

    PHP функции для работы с массивами

    Функция Описание
    array() Создать массив$cars = array("Volvo", "BMW", "Toyota");
    array_change_key_case() Изменить регистр ключей массива
    $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
    print_r(array_change_key_case($age,CASE_UPPER));
    array_chunk() Делит массив на куски
    $cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");
    print_r(array_chunk($cars,2));
    array_column() Создаёт массив - колонку исходного массива
    // An array that represents a possible record set returned from a database
    $a = array(
    array(
    'id' => 5698,
    'first_name' => 'Peter',
    'last_name' => 'Griffin',
    ),
    array(
    'id' => 4767,
    'first_name' => 'Ben',
    'last_name' => 'Smith',
    ),
    array(
    'id' => 3809,
    'first_name' => 'Joe',
    'last_name' => 'Doe',
    )
    );

    $last_names = array_column($a, 'last_name');
    print_r($last_names);
    ?>
    Результат:

    Array
    (
    [0] => Griffin
    [1] => Smith
    [2] => Doe
    )

    array_combine() Создаёт новый массив, используя элементы первого массива в качестве индексов, второго - в качестве значений
    $fname=array("Peter","Ben","Joe");
    $age=array("35","37","43");

    $c=array_combine($fname,$age);
    print_r($c);
    ?>
    Результат:
    Array ( [Peter] => 35 [Ben] => 37 [Joe] => 43 )
    array_count_values() Считает количество элементов массива
    array_diff() Сравнивает значения элементов массивов, возвращает результат сравнения - разницу между ними
    $a1=array("a"=>"red","b"=>"green","c"=>"blue","d"=>"yellow");
    $a2=array("e"=>"red","f"=>"green","g"=>"blue");

    $result=array_diff($a1,$a2);
    print_r($result);
    ?>
    Результат:
    Array ( [d] => yellow )
    array_diff_assoc() Сравнивает значения и элементов и индексов массивов, возвращает результат сравнения - разницу между ними
    array_diff_key() Compare arrays, and returns the differences (compare keys only)
    array_diff_uassoc() Compare arrays, and returns the differences (compare keys and values, using a user-defined key comparison function)
    array_diff_ukey() Compare arrays, and returns the differences (compare keys only, using a user-defined key comparison function)
    array_fill() В примере: создаёт массив (4 элемента, первый индекс - 3) и всем элементам присваивает значение blue
    $a1=array_fill(3,4,"blue");
    array_fill_keys() Fills an array with values, specifying keys
    array_filter() Фильтр массива с использованием call_back функции. Перебираются все элементы массива, каждый последовательно передаётся в call_llback-функцию. Если функция возвращает true, то данное значение из array возвращается в результирующий массив. Ключи массива сохраняются.
    function test_num($var)
    {
    return (gettype($var) == "integer");
    }

    $a1=array("a","b",2,3,4);
    var_dump(array_filter($a1,"test_num"));
    ?>
    Результат:
    array (size=3)
    2 => int 2
    3 => int 3
    4 => int 4
    array_flip() Flips/Exchanges all keys with their associated values in an array
    array_intersect() Сравнивает массивы, возвращает их пересечение (те элементы, значения которых одинаковы)
    array_intersect_assoc() Сравнивает массивы, возвращает их пересечение (те элементы, значения и индексы которых одинаковы)
    array_intersect_key() Сравнивает массивы, возвращает их пересечение (те элементы, индексы которых одинаковы)
    array_intersect_uassoc() Сравнивает ключи и значения двух массивов и возвратите совпадения (для спавнения используется callback-функция)
    function myfunction($a,$b)
    {
    if ($a===$b)
    {
    return 0;
    }
    return ($a>$b)?1:-1;
    }

    $a1=array("a"=>"red","b"=>"green","c"=>"blue");
    $a2=array("d"=>"red","b"=>"green","e"=>"blue");

    $result=array_intersect_uassoc($a1,$a2,"myfunction");
    print_r($result);
    ?>
    Результат:
    Array ( [b] => green )
    array_intersect_ukey() Compare arrays, and returns the matches (compare keys only, using a user-defined key comparison function)
    array_key_exists() Проверяет, есть ли в массиве такой индекс
    $a=array("Volvo"=>"XC90","BMW"=>"X5");
    if (array_key_exists("Volvo",$a))
    {
    echo "Key exists!";
    }
    else
    {
    echo "Key does not exist!";
    }
    ?>
    array_keys() Возвращает массив, состоящий из индексов массива - аргумента функции
    array_map() Посылает каждое значение массива в callback-функцию, которая возвращает новые значения
    function func($num)
    {
    return("Элемент" . (string)$num);
    }
    $a=array(1,2,3,4,5);
    print_r(array_map("func",$a));
    ?>

    Результат:
    Array
    (
    [0] => Элемент1
    [1] => Элемент2
    [2] => Элемент3
    [3] => Элемент4
    [4] => Элемент5
    )

    array_merge() Сливает несколько массивов в один
    array_merge_recursive() Merges one or more arrays into one array recursively
    array_multisort() Сортировка нескольких массивов мли многомерного массива

    array_multisort(array1,sorting order,sorting type,array2,array3...)
    Параметр Описание
    array1 Обязательный параметр. Имя массива
    направление сортировки Необязательный параметр. Возможные значения:
    • SORT_ASC - по умолчанию. По возрастанию (A-Z)
    • SORT_DESC - по убыванию (Z-A)
    тип сортировки Необязательный параметр. Тип переменных, используемый при сортировке. Возможные значения:
    • SORT_REGULAR - по умолчанию. ( ASCII - коды)
    • SORT_NUMERIC - как цифры
    • SORT_STRING - как строки
    • SORT_LOCALE_STRING - как строки, с учётом локализации
    • SORT_NATURAL - как строки с использованием алгоритма "natural order"
    • SORT_FLAG_CASE - может быть объединен (бинарное OR) с SORT_STRING или SORT_NATURAL для сортировки без учета регистра
    array2 Необязательный параметр. Второй массив.
    array3 Необязательный параметр. Третий массив.
    Пример:

    <?php
    $a1=array("Dog","Cat");
    $a2=array("Fido","Missy");
    array_multisort($a1,$a2);
    print_r($a1);
    print_r($a2);
    ?>

        Результат: 
    Array ( [0] => Cat [1] => Dog ) Array ( [0] => Missy [1] => Fido )
    array_pad() Вставляет указанное количество элементов с заданным значением в массив
    $a=array("red","green");
    print_r(array_pad($a,5,"blue"));
    Возвращает массив из 5 элементов, значения новых -  "blue"
    array_pop() Удаляет последний элемент массива
    $a=array("red","green","blue");
    array_pop($a);
    print_r($a);
    array_product() Вычисляет произведение значений в массиве
    array_push() Вставляет один или несколько элементов в конец массива
    array_rand() Возвращает один или несколько случайных ключей из массива
    array_reduce() Возвращает массив как строку, используя пользовательскую функцию
    array_replace() Заменяет значения первого массива значениями из следующих массивов
    array_replace_recursive() Заменяет значения первого массива рекурсивными значениями из следующих массивов
    array_reverse() Возвращает массив в обратном порядке
    array_search() Ищет в массиве заданное значение и возвращает ключ
    array_shift() Удаляет первый элемент из массива и возвращает значение удаляемого элемента
    array_slice() Возвращает выбранные части массива
    array_splice() Удаляет и заменяет указанные элементы массива
    array_sum() Возвращает сумму значений в массиве
    array_udiff() Сравните массивы и возвращает различия (сравнивает только  значения , с помощью пользовательской функции сравнения )
    array_udiff_assoc() Сравнивает массивы и возвращает различия (сравнивает и  ключи и значения, используя встроенную функцию для сравнения ключей и пользовательскую функции для сравнения значений)
    array_udiff_uassoc() Сравнивает массивы и возвращает различия ( ключи и значения, используя две пользовательские функции сравнения ключей)
    array_uintersect() Сравнивает массивы и возвращает совпадения (сравнивает только значения, используя пользовательскую функцию сравнения ключей)
    array_uintersect_assoc() Сравнивает массивы и возвращает совпадения ( ключи и значения, используя встроенную функцию для сравнения ключей и пользовательской функции для сравнения значений)
    array_uintersect_uassoc() Сравнивает массивы и возвращает совпадения (ключи и значения, используя две пользовательские функции сравнения ключей)
    array_unique() Удаляет повторяющиеся значения из массива
    array_unshift() Добавляет один или несколько элементов в начало массива
    array_values() Возвращает все значения массива
    array_walk() Применяет пользовательскую функцию к каждому элементу массива
    array_walk_recursive() Рекурсивно применяет функцию пользователя к каждому элементу массива
    arsort() Сортирует ассоциативный массив в порядке убывания, согласно значению
    asort() Сортирует ассоциативный массив в порядке возрастания, согласно значению
    compact() Создать массив, содержащий переменные и их значения
    count() Возвращает количество элементов в массиве
    current() Возвращает текущий элемент в массиве
    each() Возвращает текущую пару ключ-значение из массива
    end() Устанавливает внутренний указатель массива на последний элемент
    extract() Импортирует переменные в текущую таблицу символов из массива
    in_array() Проверяет, существует ли указанное значение в массиве
    key() Выбирает ключ из массива
    krsort() Сортирует ассоциативный массив в порядке убывания, в соответствии с ключом
    ksort() Сортирует ассоциативный массив в порядке возрастания, в соответствии с ключом
    list() Присваивает переменные, как если бы они были массивом
    natcasesort() Сортирует массив с использованием не зависящего от регистра алгоритма «естественного порядка»
    natsort() Сортирует массив с использованием алгоритма «естественного порядка»
    next() Увеличивает на единицу внутренний счётчик
    pos() Аналог функции count() 
    prev() Перемещает внутренний указатель массива  на предыдущий элемент  и возвращает предыдущий элемент 
    range() Создает массив, содержащий ряд элементов
    reset() Устанавливает внутренний указатель массива на его первый элемент
    rsort() Сортирует индексированный массив в порядке убывания
    shuffle() Перемешивает массив
    sizeof() Алиас count ()
    sort() Сортирует индексированный массив в порядке возрастания
    uasort() Сортирует массив по значениям, используя пользовательскую функцию сравнения
    uksort() Сортирует массив по ключам с помощью пользовательской функции сравнения
    usort() Сортирует массив с использованием пользовательской функции сравнения

     

     

     

  • Область действия переменных

    При использвании переменных в программе на PHP необходимо принимать во внимание область их действия (видимости). Это - тот контекст (блок кода), где их можно использовать.

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

    К этому же контексту отосятся блоки кода, вставленные из других файлов при помощи операторов include и requre.

    Константы (и пользовательские и стандартные PHP) видны во всех контекстах.





    В примере: те переменные, которые определены в области видимости "контекст1", доступны и в коде, нходящемся в файле file1.php и  в фукциях f1(), f2(). 

    Те переменные, которые пределены в областях видимости "контекст2" и "конткст3"  доступны тлько в этих контекстах.






    Суперглобальные переменные

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

    Суперглобальными переменными являются:

    • $GLOBALS — Ссылки на все переменные глобальной области видимости. Ассоциативный массив (array), содержащий ссылки на все переменные глобальной области видимости скрипта, определенные в данный момент. Имена переменных являются ключами массива.
    • $_SERVER — Информация о сервере и среде исполнения. Переменная $_SERVER - это массив, содержащий информацию, такую как заголовки, пути и местоположения скриптов. Записи в этом массиве создаются веб-сервером.
    • $_GET — GET-переменные HTTP. Ассоциативный массив параметров, переданных скрипту через URL.
    • $_POST  —  POST-переменные HTTP. Ассоциативный массив данных, переданных скрипту через HTTP метод POST.
    • $_FILES  — Переменные файлов, загруженных по HTTP. Ассоциативный массив (array) элементов, загруженных в текущий скрипт через метод HTTP POST.
    • $_REQUEST — Переменные HTTP-запроса. Ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE.
    • $_SESSION -- Переменные сессии. Ассоциативный массив, содержащий переменные сессии, которые доступны для текущего скрипта. 
    • $_ENV  — Переменные окружения. Ассоциативный массив (array) значений, переданных скрипту через переменные окружения. Эти значения импортируются в глобальное пространство имен PHP из системных переменных окружения, в котором запущен парсер PHP.
    • $_COOKIE — HTTP Куки. Ассоциативный массив (array) значений, переданных скрипту через HTTP Куки.


    $_SERVER

    Описание

    Переменная $_SERVER - это массив, содержащий информацию, такую как заголовки, пути и местоположения скриптов. Записи в этом массиве создаются веб-сервером. Нет гарантии, что каждый веб-сервер предоставит любую из них; сервер может опустить некоторые из них или предоставить другие, не указанные здесь. Тем не менее, многие эти переменные присутствуют в » спецификации CGI/1.1, так что вы можете ожидать их реализации и в конкретном веб-сервере.

    Замечание: До версии PHP 5.4.0, $HTTP_SERVER_VARS содержит ту же начальную информацию, но она не суперглобальная. (Заметьте, что $HTTP_SERVER_VARS и $_SERVER являются разными переменными, так что PHP обрабатывает их соответственно).

    Индексы

    Вы можете найти (а можете и не найти) любой из следующих элементов в массиве $_SERVER. Заметьте, что немногие элементы, если вобще такие найдутся, будут доступны (или действительно будут иметь значение), если PHP запущен в командной строке.

    'PHP_SELF'
    Имя файла скрипта, который сейчас выполняется, относительно корня документов. Например,$_SERVER['PHP_SELF'] в скрипте по адресу http://example.com/foo/bar.php будет /foo/bar.php. Константа __FILE__ содержит полный путь и имя файла текущего (то есть подключенного) файла. Если PHP запущен в командной строке, эта переменная содержит имя скрипта, начиная с PHP 4.3.0. Раньше она была недоступна.
    'argv'
    Массив агрументов, переданных скрипту. Когда скрипт запущен в командой строке, это дает C-подобный доступ к параметрам командной строки. Когда вызывается через метод GET, этот массив будет содержать строку запроса.
    'argc'
    Содержит количество параметров, переданных скрипту (если запуск произведен в командной строке).
    'GATEWAY_INTERFACE'
    Содержит используемую сервером версию спецификации CGI; к примеру'CGI/1.1'.
    'SERVER_ADDR'
    IP адрес сервера, на котором выполняется текущий скрипт.
    'SERVER_NAME'
    Имя хоста, на котором выполняется текущий скрипт. Если скрипт выполняется на виртуальном хосте, здесь будет содержатся имя, определенное для этого виртуального хоста.

    Замечание: Под Apache 2, вы должны выставить UseCanonicalName = On и ServerName. Иначе, это значение отразит имя хоста клиента и может быть подделано. Не безопасно полагаться на это значение в контексте требующем безопасности.

    'SERVER_SOFTWARE'
    Строка идентификации сервера, указанная в заголовках, когда происходит ответ на запрос.
    'SERVER_PROTOCOL'
    Имя и версия информационного протокола, через который была запрошена страница; к примеру 'HTTP/1.0';
    'REQUEST_METHOD'
    Какой метод был использован для запроса страницы; к примеру 'GET', 'HEAD', 'POST', 'PUT'.

    Замечание:

    PHP скрипт завершается после посылки заголовков (тоесть после того, как осуществляет любой вывод без буферизации вывода), если запрос был осуществлен методом HEAD.

    'REQUEST_TIME'
    Временная метка начала запроса. Доступна, начиная с PHP 5.1.0.
    'REQUEST_TIME_FLOAT'
    Временная метка начала запроса с точностью до микросекунд. Доступна, начиная с PHP 5.4.0.
    'QUERY_STRING'
    Строка запросов, если есть, с помощью которой была получена страница.
    'DOCUMENT_ROOT'
    Директория корня документов, в которой выполняется текущий скрипт, в точности та, которая указана в конфигурационном файле сервера.
    'HTTP_ACCEPT'
    Содержимое заголовка Accept: из текущего запроса, если он есть.
    'HTTP_ACCEPT_CHARSET'
    Содержимое заголовка Accept-Charset: из текущего запроса, если он есть. Например: 'iso-8859-1,*,utf-8'.
    'HTTP_ACCEPT_ENCODING'
    Содержимое заголовка Accept-Encoding: из текущего запроса, если он есть. Например: 'gzip'.
    'HTTP_ACCEPT_LANGUAGE'
    Содержимое заголовка Accept-Language: из текущего запроса, если он есть. Например: 'en'.
    'HTTP_CONNECTION'
    Содержимое заголовка Connection: из текущего запроса, если он есть. Например: 'Keep-Alive'.
    'HTTP_HOST'
    Содержимое заголовка Host: из текущего запроса, если он есть.
    'HTTP_REFERER'
    Адрес страницы (если есть), которая привела браузер пользователя на эту страницу. Этот заголовок устанавливается веб-браузером пользователя. Не все браузеры устанавливают его и некоторые в качестве дополнительной возможности позволяют изменять содержимое заголовка HTTP_REFERER. Одним словом, в самом деле ему нельзя доверять.
    'HTTP_USER_AGENT'
    Содержимое заголовка User-Agent: из текущего запроса, если он есть. Эта строка содержит обозначение браузера, которым пользователь запросил данную страницу. Типичным примером является строка: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586). Среди прочего, вы можете использовать это значение с функцией get_browser() чтобы адаптировать вывод вашей страницы к возможностям браузера пользователя
    'HTTPS'
    Принимает непустое значение, если запрос был произведен через протокол HTTPS.

    Замечание: Обратите внимание, что при использовании ISAPI с IIS значение будет off, если запрос не был произведен через протокол HTTPS.

    'REMOTE_ADDR'
    IP-адрес, с которого пользователь просматривает текущую страницу.
    'REMOTE_HOST'
    Удаленный хост, с которого пользователь просматривает текущую страницу. Обратный просмотр DNS базируется на значении переменной REMOTE_ADDR.

    Замечание: Ваш веб-сервер должен быть настроен, чтобы создавать эту переменную. Для примера, в Apache вам необходимо присутствие директивы HostnameLookups On в файле httpd.conf, чтобы эта переменная создавалась. См. также gethostbyaddr().

    'REMOTE_PORT'
    Порт на удаленной машине, который используется для связи с веб-сервером.
    'REMOTE_USER'
    Аутентифицированный пользователь.
    'REDIRECT_REMOTE_USER'
    Аутентифицированный пользователь, если запрос был перенаправлен изнутри.
    'SCRIPT_FILENAME'

    Абсолютный путь к скрипту, который в данный момент исполняется.

    Замечание:

    Если скрипт запускается в коммандной строке (CLI), используя относительный путь, такой как file.php или ../file.php, переменная $_SERVER['SCRIPT_FILENAME'] будет содержать относительный путь, указанный пользователем.

    'SERVER_ADMIN'
    Эта переменная получает свое значение (для Apache) из директивы конфигурационного файла сервера. Если скрипт запущен на виртуальном хосте, это будет значение, определенное для данного виртуального хоста.
    'SERVER_PORT'
    Порт на компьютере сервера, используемый веб-сервером для соединения. Для установок по умолчанию, значение будет '80'; используя SLL, например, это значение будет таким, какое сконфигурировано для соединений безопасного HTTP.

    Замечание: Чтобы получить физический (реальный) порт в Apache 2, необходимо установить UseCanonicalName = On иUseCanonicalPhysicalPort = On, иначе это значение может быть подменено и не вернуть реальной значение физического порта. Полагаться на это значение небезопасно в контексте приложений, требующих усиленной безопасности.

    'SERVER_SIGNATURE'
    Строка, содержащая версию сервера и имя виртуального хоста, которые добавляются к генерируемым сервером страницам, если включено.
    'PATH_TRANSLATED'
    Filesystem- (not document root-) based path to the current script, after the server has done any virtual-to-real mapping.

    Замечание: Начиная с PHP 4.3.2, переменная PATH_TRANSLATED больше не устанавливается неявно в Apache 2 SAPI, по сравнению с Apache версии 1, где она устанавливается в то же самое значение, что и переменная SCRIPT_FILENAME, когда она не используется Apache. Это изменение было сделано для соответствия спецификации CGI, где переменная PATH_TRANSLATEDдолжна существовать только тогда, когда PATH_INFO определена. Пользователи Apache 2 могут использовать директивуAcceptPathInfo = On в конфигурационном файле httpd.conf для задания переменной PATH_INFO.

    'SCRIPT_NAME'
    Содержит путь, к текущему исполняемому скрипту. Это полезно для страниц, которые должны указывать на самих себя. Константа __FILE__ содержит полный путь и имя текущего (т.е. включаемого) файла.
    'REQUEST_URI'
    URI, который был передан для того, чтобы получить доступ к этой странице. Например, '/index.html'.
    'PHP_AUTH_DIGEST'
    При выполнении HTTP Digest аутентификации, этой переменной присваивается заголовок 'Authorization', который присылается клиентом (его необходимо потом использовать для соответствующей валидации).
    'PHP_AUTH_USER'
    Когда выполняется HTTP-аутентификация, этой переменной присваивается имя пользователя, предоставленное пользователем.
    'PHP_AUTH_PW'
    Когда выполняется HTTP-аутентификация, этой переменной присваивается пароль, предоставленный пользователем.
    'AUTH_TYPE'
    Когда выполняется HTTP-аутентификация, этой переменной присваивается тип аутентификации, который используется.
    'PATH_INFO'
    Содержит любой предоставленный пользователем путь, содержащийся после имени скрипта, но до строки запроса, если доступно. Например, если текущий скрипт запрошен по URL http://www.example.com/php/path_info.php/some/stuff?foo=bar, то переменная $_SERVER['PATH_INFO'] будет содержать /some/stuff.
    'ORIG_PATH_INFO'
    Исходное значение переменной 'PATH_INFO' до начала обработки PHP.





  • PHP объектно-ориентированое рограммирование

    Основные понятия

    Классы

    Класс - это шаблон для объектов. Класс объединяет данные и функции, которые работают с данными, в одной структуре. Это блок кода, который описывает:

    • типы данных, которые будут храниться в объектах, созданных из класса,
    • функции, которые будут содержать эти объекты.

    Класс может содержать собственные константы, переменные (называемые свойствами) и функции (называемые методами).

    Когда создаётся объектно-ориентированное приложение, обычно создаете один или несколько классов, представляющих различные типы объектов в приложении. Например, если вы пишете приложение для форума, вы можете создавать классы под названием «Форум», «Тема», «Почта» и «Участник».

    Объекты

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

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

    Объект же подобен реальному автомобилю, созданному из чертежа. Он имеет реальные свойства (например: красный цвет), и реальные методы использования (например: «ускорить» и «тормозить»).

    Объект реальная реализация класса (class instance).

    Свойства

    Данные, которые содержатся в объекте, хранятся в специальных переменных, известных как свойства. Свойства объекта тесно привязаны к объекту. Хотя все объекты, созданные из данного класса, имеют одинаковые свойства, свойства одного объекта могут иметь значения, отличные от значений свойств другого объекта.


    Методы

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

    Однако методы объекта обычно работают в основном со свойствами объекта. Например, метод login () для регистрации участника на форумах может установить для свойства loggedIn элемента значение true.

    Основы работы с классами и объектами в PHP

    Описание класса

    Описание класса начинается с ключевого слова class, затем следует имя класса, и блок операторов, заключённый в фигурные скобки. Он включает в себе определение свойств и методов этого класса.

    Пример:

    // Defining PHP Classes class Books { /* Member variables */ var $price; var $title; /* Member functions */ function setPrice($par){ $this->price = $par; } function getPrice(){ echo $this->price ."
    "; } function setTitle($par){ $this->title = $par; } function getTitle(){ echo $this->title ."
    "; } } // Creating Objects in PHP $physics = new Books; $maths = new Books; $chemistry = new Books;

    Псевдопеременная $this используется для ссылки на сам класс.

    Запись $this->price - это обращение к переменной $price, описанной в этом классе.


    Создание объекта

    Пример создания трёх разных объектов из этого класса.

    $physics = new Books; $maths = new Books; $chemistry = new Books;

    Вызов объекта

    Задание свойства price объекта $maths

    $maths->price = 44;

    Такой же эффект будет от вызова метода setPrice объекта $maths

    $maths->setPrice( 44 );

    Вызов метода setTitle объекта $physics

    $physics->setTitle( "Physics for High School" );


    Конструкторы и деструкторы классов

    PHP позволяет использовать специальные типы методов: конструктор класса и деструктор класса.

    Конструктор класса (метод __construct()) выполняется при инициализации объекта. Этот метод может выделить объекту некоторые ресурсы.

    Деструктор класса (метод __destruct() ) используется для освобождения выделенных ресурсов.

    Например:

    <?php class Session { protected $data = array(); public function __construct() { // загрузка данных из базы данных } // get and set functions public function __destruct() { // запись данных в базу данных } };


    Область видимости

    Для свойств и методов класса PHP позволяет определять область видимости (public, protected или private).

    Например:

    private $private = 'Private';

    или

    public function MyPublic() { }

    public

    Это область видимости, которая не имеет ограничений. То есть: свойства или методы public видны и могут использоваться в любом месте программного кода. Как внутри так и вне класса.

    Этот уровень видимости присваивается по-умочанию, если не указан никакой другой.

    protected

    Эти свойства и методы доступны только внутри класса или дочерних классов.

    private

    Эти свойства и методы доступны исключительно в этом классе.

    Наследование

    Наследование классов - это возможность создавать новые (дочерние) классы на основании существующих. Дочерний класс при этом получает все свойства и методы родителя.

    Дочерний класс может также описать новые свойства и методы в дополнение к полученнм от родителя.

    Пример:

    <?php class Foo { public function printItem($string) { echo 'Foo: ' . $string . PHP_EOL; } public function printPHP() { echo 'PHP is great.' . PHP_EOL; } } class Bar extends Foo { public function printItem($string) { echo 'Bar: ' . $string . PHP_EOL; } } $foo = new Foo(); $bar = new Bar(); $foo->printItem('baz'); // Output: 'Foo: baz' $foo->printPHP(); // Output: 'PHP is great' $bar->printItem('baz'); // Output: 'Bar: baz' $bar->printPHP(); // Output: 'PHP is great' ?>







  • Операторы языка PHP

    • Арифметические операторы (Arithmetic Operators)
    • Операторы сравнения (Comparison Operators)
    • Логические операторы (Logical Operators
    • Операторы присваивания (Assignment Operators)
    • Условные операторы (Conditional Operators)


    Арифметические операторы

    (Переменная A имеет значение 10, а B - 20)

    Оператор Описание Пример
    + сложение A + B , результат: 30
    - вычитание A - B , результат: 10
    * умножение A * B , результат: 200
    / деление B / A , результат: 2
    % деление по модулю (остаток) B % A , результат: 0
    ++ инкремент (увеличение операнда значения на 1) A++ , результат: 11
    -- декремент (уменьшение  на 1) A-- , результат: 9


    Операторы сравнения

    (Переменная A имеет значение 10, а B - 20)

    Оператор Описание Пример
    == true, если значения одинаковы (A == B) , результат: false
    ===true, если и значения и типы операндов одинаковы

    !=false , если значения одинаковы. (A != B) , результат: true.
    > true, если первое значение больше второго (A > B) , результат: false
    < true, если первое значение мньше второго (A < B) , результат: true.
    >= true, если первое значение больше или равно второму (A >= B) , результат: false
    <= true, если первое значение меньше или равно второму (A <= B) , результат: true.


    Логические операторы

    Для понимания логических операторов нужно иметь представление о логических (boolean) переменных и выражениях. Логическая переменная может иметь только 2 значения: истина (1, true ) или ложь (0, false). Логические выражения составляются из логических операторов и лоических переменных.

    Логические операторы имеют дело с логическими выражениями. Логические выражения (boolean expressions) могут принимать значения true, истина (логическая 1) или false, ложь (логический 0).

    В таблице ниже -  переменная A имеет значение true , а B - false.

    Оператор Описание Пример
    and Логическое И (and, или логическое умножение). Значение true , если оба операнда true  (A and B) , результат: false.
    or Логическое ИЛИ  (or, или логическое сложение). Значение true , если хотя бы один из операндов -  true (A or B) , результат: true.
    xor 
    Исключающее ИЛИ. Принимает значение true, если один из операндов true, но - не оба одновременно(A or B) , результат: true.
    && Логическое И (and, или логическое умножение). Значение true , если оба операнда true (A && B) , результат: true.
    || Логическое ИЛИ (or, или логическое сложение). Значение true , если хотя бы один из операндов - true (A || B) , результат: true.
    ! Логическое НЕ (not или логическое отрицание). Значение true, если оперант - false и значение false, если операнд - true  !(A && B) , результат: false.

    Обычно логические операторы, логические выражения описываются посредством таблицы истинности (truth table). В такой таблице приводятся значения выражения при всех возможных вариантах, сочитаниях значений аргументов.

    Примеры таблиц истинности (где T - truth, F - false):

    Логическое умножение - AND

    A B A & B
    T T T
    T F F
    F T F
    F F F

    Логическое сложение - OR

    A B A | B
    T T T
    T F T
    F T T
    F F F


    Операторы присваивания

    (Переменная A имеет значение 10, а B - 20)

    Оператор Описание Пример
    = Присваивание: значение правого операнда присваивается левому операнду. C = A + B присваивает переменной С значение выражения A + B
    += Сложение с присваиванием. Складывает значения левого и правого операнда, затем результат присваивается левому. C += A эквивалент операции: C = C + A
    -= Вычитание с присваиванием. Вычитает значение правого операнда из значения левого, затем результат присваивается левому. C -= A эквивалент операции: C = C - A
    *= Умножение с присваиванием. Перемножает значения левого и правого операнда, затем результат присваивается левому. C *= A эквивалент операции: C = C * A
    /= Деление с присваиванием. Делит значение левого операнда на значение правого, затем результат присваивается левому. C /= A эквивалент операции: C = C / A
    %= Деление по модулю с присваиванием. Делит значение левого операнда на значение правого, затем остаток от деления присваивается левому. C %= A эквивалент операции: C = C % A


    Условные операторы

    Условные операторы оценивают (evaluate) значение некоторого логического выражения, результат: истина (true) или ложь (false). В зависимости от этого выполняется та или иная ветвь программы.


    Оператор Описание Синтаксис
    ? : Условный оператор ЛогическоеВыражение ? Выполнить в случае true : Выполнить в случае false


    Приоритеты операторов PHP

    Приоритеты операторов определяют для интерпретатора PHP ту последовательность, в которой их необходимо выполнять в сложных выражениях.

    Например в выражении x = 7 + 3 * 2; Сперва переменной x присваивается значение 13, так как оператор * имеет больший приоритет, чем +, поэтому сначала выполняется умножение

    Далее - операторы упорядочены по приоритетам, причём операторы с большим приоритетом расположены вверху таблицы. Внутри выражения сперва оцениваются результаты операторов с высшим приоритетом

    Оператор Последовательнось выполнения
    ! ++ -- Справа налево
    * / % Слева направо
    + - Слева направо
    < <= > >= Слева направо
    == != Слева направо
    && Слева направо
    || Слева направо
    ?: Справа налево
    = += -= *= /= %= Справа налево


     

    Записаться на курс

     

    * По материалам сайтов:
    www.w3schools.com
    www.tutorialspoint.com

     

     

     

  • Вывод из программы на PHP*

    Чаще всего результат работы программы на PHP выводится при помощи команды: echo() или функции: print().

    Пример:

    <?php $var1 = "Строковая переменная"; $var2 = 99.65; $var3 = -76.98; echo "var1: $var1 <br>","var2: $var2 <br>", "var3: $var3 <br>"; ?>

    Результат:

    var1: Строковая переменная
    var2: 99.65
    var3: -76.98

    При отладке программы часто используются функции: var_dump() и print_r().

    Пример:

    <?php $var1 = "Строковая переменная"; $ar1 = [1,2,3,4,5,6]; $ar2 = [1,[11,12,13,14],3,4,5,6]; print_r ($var1); echo "<br>"; print_r ($ar1); echo "<br>"; print_r ($ar2); echo "<br>"; var_dump ($ar1); echo "<br>"; var_dump ($ar2); echo "<br>"; ?>


    Результат:

    Строковая переменная Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 ) Array ( [0] => 1 [1] => Array ( [0] => 11 [1] => 12 [2] => 13 [3] => 14 ) [2] => 3 [3] => 4 [4] => 5 [5] => 6 ) F:\Lessons\Tests\PHP\PHP_05-2output.php:11: array (size=6) 0 => int 1 1 => int 2 2 => int 3 3 => int 4 4 => int 5 5 => int 6 F:\Lessons\Tests\PHP\PHP_05-2output.php:13: array (size=6) 0 => int 1 1 => array (size=4) 0 => int 11 1 => int 12 2 => int 13 3 => int 14 2 => int 3 3 => int 4 4 => int 5 5 => int 6

    Форматируемый вывод

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

    Это, например, функции:  printf(), vprintf(), vsprintf(), fprintf(), vfprintf().

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

    Например: sprintf(format,arg1,arg2,arg++).


    Спецификаторы формата

    Строка формата состоит из:

    • обычных символов (за исключением %), которые копируются напрямую в результирующую строку, и
    • спецификаторов формата.

    Каждый спецификатор формата применяется к соответствующей переменной. Результат выводится в результирующую строку. Такой способ форматирования строки вывода применяется в ряде PHP-функций, например:

    sprintf(), printf()

    Каждый спецификатор формата (описатель преобразования, форматирования) начинается со знака процент (%), за которым следует один или более дополнительных элементов . Структура строки - спецификатора формата:

    %[num][sign][padding][alignment][width][.precision]type

    где:

    1. num - необязательный номер аргумента, который должен форматироваться этим спецификатором формата. Если номер не указан, то аргументы форматируются спецификаторами формата в порядке их следования
    2. sign - необязательный описатель знака, указывающий как использовать знак (- или +) в префиксе числа. По умолчанию, используется только знак минус, если число отрицательное. Использование знака "+" приводит к печати знака плюс перед положительными числами
    3. padding - необязательный символ-заполнитель, который определяет, какой символ будет использоваться для дополнения результата до необходимой длины. Это может быть пробел или 0. По умолчанию используется пробел. Альтернативный символ может быть указан с помощью одиночной кавычки (')
    4. alignment - необязательный описатель выравнивания, определяющий выравнивание по левой или правой границе. По умолчанию выравнивается вправо, - используется для выравнивания влево
    5. width - необязательное число, описатель ширины, определяющий минимальное число символов, которое будет содержать результат преобразования
    6. precision - необязательный описатель точности, указанный в виде точки (.), после которой следует необязательная строка из десятичных чисел, определяющая, сколько десятичных разрядов отображать для чисел с плавающей точкой. При использовании со строками этот описатель выступает в роли обрезающей точки, устанавливающей максимальный лимит символов. Также между точкой и цифрой можно указать символ, используемый при дополнении числа
    7. type - Описатель типа, определяющий, как интерпретировать тип данных форматируемой переменной.

      Допустимые типы:

      • % - символ процента. Аргумент не используется.
      • b - аргумент трактуется как целое и выводится в виде двоичного числа.
      • c - аргумент трактуется как целое и выводится в виде символа с соответствующим кодом ASCII.
      • d - аргумент трактуется как целое и выводится в виде десятичного числа со знаком.
      • e - аргумент трактуется как число в в научной нотации (например, 1.2e+2). Описатель точности указывает на количество знаков после запятой, начиная с версии PHP 5.2.1. В более ранних версиях он обозначал количество значащих цифр (на один знак меньше).
      • E - аналогично %e, но использует заглавную букву (например, 1.2E+2).
      • f - аргумент трактуется как число с плавающей точкой и также выводится в зависимости от локали.
      • F - аргумент трактуется как число с плавающей точкой и также выводится, но без зависимости от локали. Доступно, начиная с версии PHP 5.0.3.
      • g - выбирает самую краткую запись из %e и %f.
      • G - выбирает самую краткую запись из %E и %f.
      • o - аргумент трактуется как целое и выводится в виде восьмеричного числа.
      • s - аргумент трактуется как строка.
      • u - аргумент трактуется как целое и выводится в виде десятичного числа без знака.
      • x - аргумент трактуется как целое и выводится в виде шестнадцатеричного числа (в нижнем регистре).
      • X - аргумент трактуется как целое и выводится в виде шестнадцатеричного числа (в верхнем регистре).

      Переменные будут преобразованы в соответвующий тип для спецификатора:

      Преобразование типов
      Тип Спецификатор
      string s
      integer ducoxXb
      double gGeEfF

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

      Пример:

      <?php $var1 = "Строковая переменная"; $var2 = 99.65; $var3 = -76.98; var_dump ($var1); var_dump ($var2); var_dump ($var3); echo ("Примеры использования функции printf()<br>"); printf("var1: %s <br>",$var1); printf("var2: %f <br>",$var2); printf("var2: %.0f <br>var3: %.5f <br><br> ",$var2,$var3); printf("%%b = %08b <br>",$var2); // Binary number - 8 symbols, emty fields filled with 0 printf("%%d = %d <br>",$var2); // Signed decimal number printf("%%d = %d <br>",$var2); // Signed decimal number printf("%%e = %e <br>",$var2); // Scientific notation (lowercase) printf("%%E = %E <br>",$var2); // Scientific notation (uppercase) printf("%%u = %u <br>",$var2); // Unsigned decimal number (positive) printf("%%u = %u <br>",$var2); // Unsigned decimal number (negative) printf("%%f = %f <br>",$var2); // Floating-point number (local settings aware) printf("%%F = %F <br>",$var2); // Floating-point number (not local settings aware) printf("%%g = %g <br>",$var2); // Shorter of %e and %f printf("%%G = %G <br>",$var2); // Shorter of %E and %f printf("%%o = %o <br>",$var2); // Octal number printf("%%s = %s <br>",$var2); // String printf("%%x = %x <br>","10"); // Hexadecimal number (lowercase) printf("%%X = %X <br>","15"); // Hexadecimal number (uppercase) printf("%%+d = %+d <br>",$var2); // Sign specifier (positive) ?>

      Результат:

      F:\Lessons\Tests\PHP\PHP_05-3output.php:5:string 'Строковая переменная' (length=39) F:\Lessons\Tests\PHP\PHP_05-3output.php:6:float 99.65 F:\Lessons\Tests\PHP\PHP_05-3output.php:7:float -76.98 Примеры использования функции printf() var1: Строковая переменная var2: 99.650000 var2: 100 var3: -76.98000 %b = 01100011 %d = 99 %d = 99 %e = 9.965000e+1 %E = 9.965000E+1 %u = 99 %u = 99 %f = 99.650000 %F = 99.650000 %g = 99.65 %G = 99.65 %o = 143 %s = 99.65 %x = a %X = F %+d = +99


      Пример:

      <?php echo "Символ-заполнитель для строки - * <br>"; $card = '4025888888881881'; printf("Номер Вашей кредитной карты: %'*16s", substr($card, -4)); echo "<br><br>Изменение порядка параметров"; $var1 = -11.98; $var2 = -22.98; $format = '<br> var1 %d, var2 %f'; echo "<br><br>Строка format:". $format ; echo sprintf($format, $var1, $var2); $format = '<br> var2 %2$d, var1 %1$f'; echo "<br><br>Строка format:". $format ; echo sprintf($format, $var1, $var2); ?>


      Результат:

      Символ-заполнитель для строки - * Номер Вашей кредитной карты: ************1881 Изменение порядка параметров Строка format: var1 %d, var2 %f var1 -11, var2 -22.980000 Строка format: var2 %2$d, var1 %1$f var2 -22, var1 -11.980000



    8. Электронная почта (E-Mail) в PHP

      Функция mail()

      Самый простой способ посылать почту из программы на PHP - функция mail().

      Аргументы функции:

      mail ( $to , $subject , $message [, $additional_headers [, $additional_parameters ]] )

      Пример:

      <?php $to = Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.' . "\r\n" . 'Reply-To: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); ?>

      Но использование этой функции не всегда удобно и надёжно. Часто удобнее использовать другие билиотеки или классы для работы с электронной почтой из PHP.

      Есть целый ряд готовых популярных, проверенных решений, которые упрощают задачу работы с электронной почтой из PHP и дают программисту дополнительные возможности. Например: PHPMailer, SwiftMailer, Zend_Mail, eZcomponents и др..

      PHPMailer

      PHPMailer - полнофункциональный PHP - класс, который выполняет все необходимые задачи по подготовке и рассылке сообщений по электронной почте. В том числе и с использованием SMTP и кодирования сообщений.

      Основные зарактеристики:

      • самый популярный способ для отправки электронной почты в PHP
      • используется многими проектами с открытым исходным кодом: WordPress, Drupal, 1CRM, SugarCRM, Yii, Joomlaи др.
      • интегрированная поддержка SMTP - отправка без локального почтового сервера
      • возможность отправлять электронные письма с несколькими TO, CC, BCC и REPLY-TO
      • многостраничные / альтернативные электронные письма для почтовых клиентов, которые не читают HTML-адрес электронной почты
      • поддержка разных кодировок: UTF-8, 8-битных, base64, двоичных и др
      • аутентификация SMTP с помощью механизмов LOGIN, PLAIN, NTLM, CRAM-MD5 и Google XOAUTH2 через SSL и TLS-транспорт
      • сообщения об ошибках на 47 языках (в том числе Русский, Иврит)
      • поддержка подписей DKIM и S / MIME
      • совместимость с PHP 5.0 и более поздними версиями

      Многие разработчики PHP используют в своем коде электронную почту. Единственная функция PHP, которая поддерживает - функция mail (). Тем не менее, он не предоставляет никакой возможности для использования популярных функций, таких как электронные письма и вложения на основе HTML.

      Правильно форматировать электронную почту достатчно сложно. Существует множество пересекающихся стандартов, протоколов RFC, требующих жесткой привязки к достаточно сложным правилам форматирования и кодирования. Подавляющее большинство программ, которые можно найти в Интернете, использущих PHP - функцию mail () напрямую, содержат большое количество ошибок, так как ата задача сложна. Также не имеет смысла делать то самостоятельно.

      Функция PHP mail() обычно использует локальный почтовый сервер, как правило, с помощью бинарного файла sendmail на платформах Linux, BSD и OS X, однако Windows обычно не включает локальный почтовый сервер. Встроенная в PHPMailer SMTP-поддержка  позволяет отправлять электронную почту на любых платформах ( в том числе: Windows) без локального почтового сервера.

      Пример:
      <?php header('Content-Type: text/html; charset=utf-8'); require 'PHPMailer-master/PHPMailerAutoload.php'; $mail = new PHPMailer; $mail->CharSet = 'UTF-8'; // Кодировка сообщения $mail->isSMTP(); // Использовать SMTP $mail->Host = 'smtp.test.com'; // SMTP сервер $mail->SMTPAuth = true; // Использовать SMTP регистрацию $mail->Username = Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.'; // SMTP пользователь $mail->Password = 'password'; // SMTP пароль $mail->SMTPSecure = 'ssl'; // Разрешить кодировку: ssl или tls $mail->Port = 465; // TCP порт $mail->setFrom(Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.', 'Тестировщик почты'); $mail->addReplyTo(Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.', 'Тестировщик почты'); $mail->addAddress(Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.', 'User'); // Получатель $mail->isHTML(true); // Посылать в формате HTML $mail->Body = 'Текст сообщения'; if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent'; } ?>



    9. Программирование на языке PHP

      Введение

      PHP - язык программирования, разработанный специально для Web. Это так называемый интерпретируемый (скриптовый язык). Интерпретатор языка PHP, который выполняется на сервере, последовательно читает и выполняет инструкции PHP, найденные в файле.

      Язык PHP был задуман в 1994 году и первоначально был работой одного человека - Расмуса Лердорфа. Он был принят другими разработчиками и постоянно совершенствуется, предоставляя нам многофункциональный язык программирования, который мы видим сегодня.

      Количество установок PHP постоянно растёт. Это можно наглядно демонстрируется на сайте http://php.net/usage.php

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

      Первоначально акроним PHP означал: Personal Home Page, но был изменен позднее, в соответствии с GNU - соглашением об именах (GNU = Gnu's Not Unix) и теперь означает: Hypertext Preprocessor. Текущей рабочей версией PHP является версия 7.

      PHP-код вписывается в HTML-страничку наряду с другими инструкциями (HTML, CSS, JavaScript,... ), этот код выполняется сервером каждый раз, когда страница запрашивается браузером пользователя.

      Когда браузер пользователя (например - Chrome, IE, Opera,...) запрашивает по определённому адресу (URL = Universe Resource Locator) нужную WEB-страничку, этот запрос (HTTP request) получает WEB-сервер, на котором эта страничка физически находится (например - WEB-сервер Apache, IIS,... ).

      Протокол HTTP Сервер (WEB server) берёт эту страничку со своего жёсткого диска и, в соответствиями с найденными в ней директивами, формирует ответ (HTTP response ) и посылает этот ответ запросившему клиенту (WEB client).

      WEB страничка в своём тексте может содержать различную информацию (HTML код, программы на языке PHP и тд). До отправки странички клиенту (браузеру) WEB сервер выполняет найденный в ней PHP код (оставляя без изменения весь текст, который находится вне PHP - тегов (HTML, JavaScript, ), модифицирует страничку по результатам работы этого кода и уже модифицированную версию отправляет браузеру.

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

      Что такое PHP-файл

      • PHP - файл - это текстовый файл (предпочтительно - в кодировке utf-8)
      • PHP-файлы могут содержать текст, HTML, CSS, JavaScript и PHP-код
      • PHP-код? найденный в файле, выполняется на сервере, и результат возвращается браузеру в виде простого HTML-кода
      • Файлы PHP имеют расширение «.php»

      Что может делать PHP

      • PHP может генерировать динамическое содержимое страницы
      • PHP может создавать, открывать, читать, записывать, удалять и закрывать файлы на сервере
      • PHP может собирать данные формы
      • PHP может отправлять и получать файлы cookie
      • PHP может добавлять, удалять и изменять данные в вашей базе данных
      • PHP может использоваться для управления доступом пользователей
      • PHP может шифровать данные
      • С PHP вы не ограничены выводом HTML. Вы можете выводить изображения, PDF-файлы и даже флеш-ролики.
      • Вы также можете выводить любой текст, такой как XHTML и XML.

      Почему часто разработчики выбирают именно PHP

      • PHP работает на различных платформах (Windows, Linux, Unix, Mac OS X и т. Д.).
      • PHP совместим практически со всеми используемыми сегодня серверами (Apache, IIS и т. Д.)
      • PHP поддерживает широкий спектр баз данных
      • PHP является бесплатным.
      • PHP легко изучается и эффективно работает на сервере

      Установка, конфигурация сервера

      Для начала работы над проектами на языке PHP необходим определённый набор программного обеспечения. Нужен WEB сервер (например: для компьютеров под управление Windows - IIS или Apache, для Linux - компьютеров - сервер Apache). На сервере необходим язык PHP. Для большинства проектов нуже сервер управления базами данных (например: MySQL). Для написания и отладки PHP-программ часто используется программы - IDE (Integrated Developer Environment ;- интегрированная среда разработчика)

      Для начинающих разработчиков, не имеющих опыта в адимистрировании WEB серверов, лучше всего использовать готовые решения в виде сборки (bundle), которые устанавливаются на локальный компьютер с минимальными требованиями к ресурсам самого компьютера и к административным навыкам пользователя.

      Популярные сборки, например: AMPPS - server, WAMP server .

      Эти сборки есть для всех версий ОС на локальном компьютере (Windows, Mac, Linux, 32-bit, 64-bit,...). Они включают в себя и WEB сервер, и PHP, и MySQL.

      Для отдадки программ можно использовать, например, редактор NotePad++ с плагинами для отладки HTML, CSS, JavaScript, PHP.

      Программа на PHP

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

      WEB сервер, открыв этот файл, запускает для его анализа интерпретатор языка PHP. Интерпретатор языка игнорирует все HTML теги и выполняет все директивы языка PHP. После этого он формирует новую WEB страничку, включив в неё все HTML теги, найденные в исходном файле и результаты работы PHP программ из этого файла.

      Эта, динамически сформированная WEB странича, посылается клиенту (интернет-браузеру, который к серверу обращался).

      В этом текстовом файле программа PHP может отделяться от тегов HTML тегами PHP -

      Теги HTML

      <?php

      программа1 на языке PHP

      ?>

      Теги HTML

      <?php программа2 на языке PHP ?> Теги HTML


      Может вставляться внутрь HTML тега

      <h1 style="color:#0000<?php echo 'FF' ?>"> Текст синего цвета </h1>



      Базовый синтаксис языка PHP

      Программа на языке PHP состоит из набора предложений (ststements), разделённых символом: ";".

      Интерпретатор PHP, Понятия:

      • Statement, Instruction
      • Expression, Evaluation
      • Operator
      • Variable, Constant, Literal
      • Token

      Подробнее


      Использование текстовых комментариев в языке PHP

      Комментарии позволяют автору программы включить в код дополнительную информацию, памятки, пояснения. Коммертарии никак не используются интерпретатором языка, то есть не влияют на ход выполнения программы.

      // комментарий - одна строка /* Комментарии : несколько строк */ echo "My script" ; // комментарий - в конце оператора языка
      <?php
      /*echo "Это тест"; /* Этот комментарий вызовет проблему */
      */
      ?>


      Массивы

      Массив (Array) можно представить как целый набор переменных разного типа, объединённых под одним идентификатором. PHP поддерживает массивы разного типа.

      • Массивы с цифровыми индексам
      • Ассоциативные массивы
      • Многомерные массивы

      Язык PHP предоставляет большое количество встроенных стандартных функций для работы с массивами.

      Подробнее


      Вывод (печать) из программы на PHP

      Подробнее


      Условные операторы

      Условные операторы. Ветвления. if, else, elseif, switch.

      Подробнее


      Циклы (loops)

      Операторы PHP, которые позволяют повторно выполнять определённые блоки программы, анализируя во время выполнения условие окончания цикла.

      • Циклы while, do... while
      • Циклы for, foreach
      • Операторы break, continue

      Подробнее


      Функции в языке PHP (function)

      Функции в языке PHP аналогичны функциям в других языках программирования. Функция представляет собой поименованный блок, участок кода. По этому имени фунция вызывается для выполнения.

      Таким образом, один раз определив функци и присвоив ей имя, использовать её можно многократно.

      Функция может использовать один или несколько аргументов-параметров. Это специальные переменные, которые формально описываются в момент создания функции, а реальные значения получают во время вызова, выполнения функции.

      Функция может возвращать в вызываемую программу некоторое значение через своё имя.

      Работа с функциями состоит из 2-х этапов:

      • создать, определить функцию (define function)
      • вызвать функцию(call function)

      Подробнее


      Строковые переменные

      Декларация текстовых (строковых переменных). Разделители строк. Интерпретация строк. Функции PHP для работы со строковыми переменными.

      Подробнее


      Область видимости переменных

      Пространство имён (namespace)

      Область видимости переменных. Пространство имён.

      Подробнее


      Работа с датами

      Функции PHP для работы с датами, временем.

      Подробнее


      Запросы HTTP

      Запросы HTTP, параметры URL, формы HTML. Методы: get, post. $_POST, $_GET

      Подробнее


      Регулярные выражения (Regular expressions)

      Подробнее


      Фильтры

      Фильтры позволяют выполнить проверку данных и обезопасить их от возможных вредоносных кодов. Это особенно важно, если содержимое получено из неизвестных или ненадежных источников, таких, как пользовательский ввод. Например, такие данные можно получить из HTML-форм.

      Существует два основных типа фильтрации: проверка и очистка.

      Проверка используется для определения соответствия данных определённым критериям. Например, применение FILTER_VALIDATE_EMAIL позволяет проверить, являются ли введённые данные адресом email,, сами данные при этом останутся нетронутыми.

      Подробнее


      Работа с формами в PHP

      Большую роль в WEB - программировании играет передача данных через сайт на сервер и обработка этих данных.

      Эту роль выполняют формы (forms). Форма собирает введённые посетителем сайта данные (они ввдятся при помощи специальных полей ввода) и передаёт их программе-обработчику на сервер.

      Работу с формами можно разделить на два этапа:

      1. создать HTML-форму
      2. написать PHP-программу для обработки данных формы.

      Например:

      <form action="prog.php" method="post"> Введите имя: <input type="text" name="nam"> <input type="submit"> </form>

      В этом примере в окне браузера нарисуется форма с одним полем ввода и кнопкой "SUBMIT"

      При нажатии на эту кнопку, форма возьмёт данные, введённые в поле ввода (input type="text"), создаст в глобальной PHP-переменной $_POST (так как атрибут method тега form имеет значение "post") элемент массива с индексом nam (так как атрибут name тега input имеет значение "nam") и присвоит этому элементу введённое в поле значение. После этого форма вызовет PHP-программу из файла с именем prog.php (так как action="prog.php").

      Вызванной программе доступны все глобальные переменные, в том числе - массив $_POST и его элемент $_POST['nam'] , в котором и находится переданное формой значение.

      Подробнее


      Работа с файлами

      PHP позволяет хранить части программного кода в различныхфйлах. Можно включать в программу на PHP различные фрагменты кода из других файлов.

      Из программы на PHP можно работать с файлами и папками на диске сервера.

      Подробнее


      Куки (Cookies)

      HTTP Cookies - это механизм хранения данных браузером компьютера клиента.

      PHP содержит ряд функций для работы с cookies.

      Подробнее


      Контроль сеанса связи (Sessions)

      Sessions в PHP предназначены для созранения на сервере информации о сеансе связи с браузером клиента. Похоже на cookie, но информация зранится не на компьютере клиента, а на сервере.

      Подробнее


      Работа с электронной почтой (E-Mail)

      Самый простой способ посылать почту из программы на PHP - функцмя mail().

      Пример:

      <?php $to = Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.'; $subject = 'the subject'; $message = 'hello'; $headers = 'From: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.' . "\r\n" . 'Reply-To: Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра.' . "\r\n" . 'X-Mailer: PHP/' . phpversion(); mail($to, $subject, $message, $headers); ?>

      Но использование этой функции не всегда удобно и надёжно. Часто удобнее использовать другие билиотеки или классы для работы с электронной почтой из PHP.

      Подробнее

      OOП на PHP

      Программа на языке PHP может быть написана с использованием разных подходов к программированию.

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

      Второй подход - объектно-ориентированное (Object Oriented) программирование. В этом случае внимание разработчика в первую очередь сосредоточено на функциональных блоках программы- объектах и их взаимодействии. 

      При использовании ООП сначала создаётся класс (шаблон для объекта). Класс отражает необходимый функционал для будущих объектов: 

      описывает данные, которые объект сможет использовать - свойства  (properties), 

      возможные способы манипулирования будущим объектом - методы (methods). 

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

      Например, если программа должна использовать электронную почту, то логично создать класс, имеющий свойства: ИМЯ_ПОЛУЧАТЕЛЯ, ИМЯ_ОТПРАВИТЕЛЯ, ТЕКСТ_СООБЩЕНИЯ и методы ПОСЛАТЬ_ПОЧТУ.

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

      Подробнее


      Работа с базами данных - MySQL

      База данных представляет собой структурированную систему храниения и управления данными. Каждая база данных поддерживает один или несколько интерфейсов (API) для разных языков программирования, в том числе - для PHP. Эти библиотеки API предназначены для создания баз данных, доступа к ним, управления, поиска и репликации данных.

      Для хранения данных могут быть использованы и другие способы. Например: файлы в файловой системе, таблицы в памяти.  Но база данных предоставляет несравнимо больше возможностей для надёжной, быстрой и эффективной выборки и обработки больших массивов данных.

      В настоящее время наиболее часто для хранения и управления больщими массивами информации используются реляционные системы управления базами данных (RDBMS Relational Database Management System). Все данные хранятся в разных таблицах и отношения между ними устанавливаются с использованием различного типа ключей.

      MySQL - популярная система управления базами данных. Практически все языки программирования поддерживают API для работы с MySQL. 

      Самое популярное сочетание для WEB разработок - это язык программирования PHP и MySQL в качестве системы управления базами данных.

      MySQL использует стандартные запросы языка SQL (Structured Query Language  queries) для манипуляций с данными.


      Подробнее



      PHP и AJAX

      Основы.

      Client Side HTML file

      Server Side PHP file

      Подробнее




    10. Работа с файлами PHP

      Включение внешних файлов

      В каждый PHP-документ можно включить дополнительный файл с помощью инструкций:

      • include (имя файла);
      • include_once (имя файла) 
      • require (имя файла);
      • require_once (имя файла);

      Инструкции include выдают сообщение типа warning, если не находят файл, инструкции require - фатальную ошибку.

      Инструкции include_once и require_once не позволяют включать файл дважды (перед включением файла инструкция проверяет, включался ли он ранее.

      Содержимое включаемого файла обрабатывается как простой HTML-текст. Для того, чтобы содержимое этого файла обрабатывалось как PHP-программа, нужно обрамлять его открывающим и закрывающим тегами PHP.

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

      Пример:

      Файл1

      <?php echo ("<br>"); echo ("Php code from file: " . __FILE__); echo ("<br>"); echo ('<br>include ("prog2.php") - PHP code'); echo ("<br>"); include ("prog2.php"); echo ("<br>"); echo ('<br>include ("prog3.php") - TEXT'); echo ("<br>"); include ("prog3.php"); ?>

      Файл2

      <?php echo ("<br>"); echo ("Php code from file: " . __FILE__); echo ("<br>"); ?>

      Файл3

      echo ("<br>"); echo ("Php code from file: " . __FILE__); echo ("<br>");


      Выполняем PHP программу из первого файла. Она включает содержимое 2-х дополнительных файлов. Причём при включении файла 2 выполняется PHP программа, которая в нём находмися. А при включении файла 3 его содержимое будет вставлено как обычный текст.

      Результат в окне браузера:

      <br>Php code from file: F:\Lessons\myTutorials\PHP\PHP_18-1Files\prog1.php<br><br>include ("prog2.php") - PHP code<br><br>Php code from file: F:\Lessons\myTutorials\PHP\PHP_18-1Files\prog2.php<br><br><br>include ("prog3.php") - TEXT<br>echo ("<br>"); echo ("Php code from file: " . __FILE__); echo ("<br>");


      Файловый ввод-вывод

      При работе с файлами нужно выделить несколько этапов:

      • открыть файл
      • прочесть данные из файла
      • обработать данные
      • записать данные в файл
      • закрыть файл.

      Открыть файл

      Для работы с файлом его нужно открыть. Команда fopen открывает файл (или url ) и возвращает в программу указатель на файл (file handle).

      Если открыть файл не удалось, будет сгенерирована ошибка уровня E_WARNING.

      fopen использует два аргумента: имя файла и режим его использования (mode).

      Список возможных режимов (mode) для fopen()

      mode Описание
      'r' Открывает файл только для чтения; помещает указатель в начало файла.
      'r+' Открывает файл для чтения и записи; помещает указатель в начало файла.
      'w' Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пробует его создать.
      'w+' Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать.
      'a' Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. В данном режиме функция fseek() не применима, записи всегда добавляются.
      'a+' Открывает файл для чтения и записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. В данном режиме функция fseek() влияет только на место чтения, записи всегда добавляются.
      'x' Создаёт и открывает только для записи; помещает указатель в начало файла. Если файл уже существует, вызов fopen() закончится неудачей, вернёт FALSE и выдаст ошибку уровня E_WARNING. Если файл не существует, попытается его создать. Это эквивалентно указанию флагов O_EXCL|O_CREAT для внутреннего системного вызова open(2).
      'x+' Создаёт и открывает для чтения и записи; в остальном имеет то же поведение что и'x'.
      'c' Открывает файл только для записи. Если файл не существует, то он создается. Если же файл существует, то он не обрезается (в отличие от 'w'), и вызов к этой функции не вызывает ошибку (также как и в случае с 'x'). Указатель на файл будет установлен на начало файла. Это может быть полезно при желании заблокировать файл (см. flock()) перед изменением, так как использование 'w' может обрезать файл еще до того как была получена блокировка (если вы желаете обрезать файл, можно использовать функцию ftruncate() после запроса на блокировку).
      'c+' Открывает файл для чтения и записи; в остальном имеет то же поведение, что и 'c'.
      'e' Установить флаг close-on-exec (закрыть при запуске) на открытый файловый дескриптор. Доступно только в PHP скомпилированном на системах поддерживающихз POSIX.1-2008.


      fclose(file_handle) - закрывает открытый файл.

      flock(file_handle, параматр) - позволяет заблокировать или разблокировать файл (параметр принимает значение LOCK_EX или LOCK_UN).

      Проверка на наличие файла

      Функция file_exists(filename) проверяет наличие указанного файла или каталога.

      Возвращает TRUE, если файл или каталог, указанный параметром filename, существует, иначе возвращает FALSE.

      Например:

      <?php echo ("Php code from file: " . __FILE__); echo ("<br>"); $myFileName1 = "file1.txt"; $myFileName2 = "file2.txt"; if (file_exists($myFileName1)) { echo ("The file $myFileName1 exists"); $fHandle1 = fopen($myFileName1,"r"); var_dump($fHandle1); } else { echo ("The file $myFileName1 does not exist"); } if (file_exists($myFileName2)) { echo ("The file $myFileName2 exists"); $fHandle2 = fopen($myFileName2,"r"); var_dump($fHandle2); } else { echo ("The file $myFileName2 does not exist"); } ?>

      Функция is_readable() определяет существование файла и доступен ли он для чтения.

      Возвращает TRUE, если файл существует и доступен для чтения.

      Функция is_writable() определяет существование файла и доступен ли он для записи.

      Возвращает TRUE, если файл существует и доступен для записи.

      Например, если у file1.txt стоит атрибут READONLY , то результат работы этой программы:

      <?php $filename1 = 'file1.txt'; $filename2 = 'file2.txt'; if (is_writable($filename1)) { echo ("<br>Файл <strong>$filename1</strong> доступен для записи"); } else { echo ("<br>Файл <strong>$filename1</strong> недоступен для записи");} if (is_writable($filename2)) { echo ("<br>Файл <strong>$filename2</strong> доступен для записи"); } else { echo ("<br>Файл <strong>$filename2 </strong>недоступен для записи");} ?>

      Будет:

      Файл file1.txt доступен для записи

      Файл file2.txt недоступен для записи

      Чтение из файла

      функции, которые получают информацию о файле.

      Путь к файлу

      На разных платформах есть разные способы обработки пути к файлу. Например, системы UNIX и Linux используют слэши  (/) в качестве разделителей в пути к файлу следующим образом:

      /www/tmp/test.txt

      Windows используют обратные наклонные линии (\) как разделители:

      \www\tmp\test.txt

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

      Получить имя файла из пути

      Чтобы получить имя файла из пути к файлу, можно использовать функцию basename (). Она принимает полный путь к файлу в качестве параметра и возвращает имя файла.

      $path = '/wwww/include/index.php'; $filename = basename($path); echo $filename;
      Получить расширение файла
      $fn = './test.txt'; $ext = pathinfo($fn, PATHINFO_EXTENSION); echo $ext; // txt

      Функция pathinfo принимает параметры: PATHINFO_DIRNAME | PATHINFO_BASENAME | PATHINFO_EXTENSION | PATHINFO_FILENAME .

      Получить размер файла

      <?php $filename = 'files/file1.txt'; var_dump (filesize($filename)); var_dump (filesize("test22")); ?>

      Для этого примера: первый файл есть на диске, второго нет.

      Возвращает размер файла в байтах для первого файла и FALSE (и генерирует ошибку уровня E_WARNING) для вторго файла (такого файла на диске нет) - в случае возникновения ошибки.

      Атрибуты времени файла

      PHP предоставляет некоторые полезные функции, которые позволяют получить временные атрибуты файла:

      fileatime() возвращает время последнего обращения к файлу

      filectime() возвращает  время последнего изменения ( last changed) файлаа

      filemtime() возвращает время последнего изменения свойств файла (last modified) файла.

      Все вышеприведенные функции возвращают временную метку (timestamp) UNIX, которая представляет собой целочисленное значение, которое указывает число секунд между эпохой UNIX (полночь, январь-01-1970) и заданным временем и датой. Чтобы получить информацию о дате и времени из временной метки UNIX, используется функция getdate ().

      Например:

      <?php $fn = 'files/file1.txt'; // get last modified time var_dump (filemtime($fn)); // get date var_dump (date('d-M-Y',filemtime($fn))); ?>
      Получить информацию о файле

      stat()— Возвращает подробную информацию о файле

      Результаты функций stat() и fstat()

      Числовой Ассоциативный Описание
      0 dev номер устройства
      1 ino номер inode 
      2 mode режим защиты inode
      3 nlink количество ссылок
      4 uid userid владельца 
      5 gid groupid владельца 
      6 rdev тип устройства, если устройство inode
      7 size размер в байтах
      8 atime время последнего доступа (временная метка Unix)
      9 mtime время последней модификации (временная метка Unix)
      10 ctime время последнего изменения inode (временная метка Unix)
      11 blksize размер блока ввода-вывода файловой системы 
      12 blocks количество используемых 512-байтных блоков 

      Пример:

      <?php $fPath = "files/file1.txt"; echo("File name: <h1>$fPath</h1>"); $fh = fopen($fPath,"r"); echo("<h1>fPath( File handle = $fh ) </h1> Argument - File handle"); var_dump (fstat($fh)); echo("<h1>stat( $fPath)</h1> Argument - filename"); var_dump (stat($fPath)); ?>


      Файловая система - работа с файлами

      Переименование файлов

      rename()

      <?php // File rename $oldFName = "oldFile.txt"; $newFName = "newFile.txt"; echo ("<h1>Rename $oldFName to $newFName</h1>"); if (file_exists($oldFName)){ echo ("<p>File $oldFName exists </p>"); if(!file_exists($newFName)){ if (rename($oldFName,$newFName)){ echo ("<p>File $oldFName , rename to $newFName --> Success! </p>"); } else{ echo ("<p style='color:red;'>File $oldFName , rename to $newFName --> Error!</p>"); } } else { echo ("<p style='color:red;'>File $newFName exists already </p>"); } } else { echo ("<p style='color:red;'>Original file - $oldFName does not exists</p> "); } ?>

      Копирование файлов

      copy()

      $sourceFName = "srcFile1.txt"; $targetFName1 = "?copy1.txt"; // Incorrect file name $targetFName2 = "copy2.txt"; if (copy($sourceFName,$targetFName1)){ echo ("<br>File $sourceFName copy to $targetFName1 --> Success! "); } else{ echo ("<br><span style='color:red;'>File $sourceFName copy to $targetFName1 --> ERROR</span>"); } if (copy($sourceFName,$targetFName2)){ echo ("<br>File $sourceFName copy to $targetFName2 --> Success! "); } else{ echo ("<br><span style='color:red;'>File $sourceFName copy to $targetFName2 --> ERROR</span>"); }

      Удаление файлов

      unlink()

      <?php // File delete $f1Name = "oldFile.txt"; $f2Name = "newFile.txt"; echo("<h1>Remove files</h1> $f1Name and $f2Name "); if (unlink($f1Name)){ echo ("<p>File $f1Name deleted --> Success! </p>"); } else{ echo ("<p style='color:red;'>File $f1Name not deleted --> Error! </p>"); } if (unlink($f2Name)){ echo ("<p>File $f2Name deleted --> Success! </p>"); } else{ echo ("<p style='color:red;'>File $f2Name not deleted --> Error! </p>"); } ?>

      Создание файлов

      <?php // Create files $f1Name = "oldFile.txt"; $f2Name = "newFile.txt"; echo("<h1>Creating files</h1> $f1Name and $f2Name <br>"); if (!file_exists($f1Name)){ $fHandle1 = fopen($f1Name,"w"); } else { echo ("<p style='color:red;'>File $f1Name already existed --> Error! </p>"); } if (!file_exists($f2Name)){ $fHandle1 = fopen($f2Name,"w"); } else { echo ("<p style='color:red;'>File $f2Name already existed --> Error! </p>"); } ?>

      Файловая система - работа с папками

      Функции для работы с папками (folders):

      mkdir() - создание папки. Аргументы: имя папки и режим доступа. UNIX - права доступа, восьмеричное число из трех цифр с нулем впереди. Первая цифра - право доступа для владельца, вторая - для группы, третья - для всех остальных. В системе Windows режим доступа игнорируется. В системе UNIX определены следующие права доступа:

      0Нет доступа
      1Доступ для запуска
      2Доступ для записи
      3Доступ для записи и запуска
      4Доступ для чтения
      5Доступ для чтения и запуска
      6Доступ для чтения и записи
      7Полный доступ

      Например, право полного доступа для владельца, чтения и запуска для группы и запуска для всех остальных:

      mkdir( "testdir", 0751 );

      rmdir() - удаление папки. Аргумент: имя. Удалить можно лишь пустую папку при наличии права на это. При успешном выполнении функция возвращает true.

      opendir() - открытие папки. Аргумент: имя папки. Возврвщает ссылку на папку. В случае возникновения ошибки функция возвращает false. Ошибка при открытии может быть вызвана тем, что папка не существует или программа не имеет права его читать.

      readdir() - чтение папки. Аргумент: дескриптор каталога (resource), ранее открытый функцией opendir(). Если дескриптор каталога не указан, используется последний дескриптор открытый функцией opendir().. Возвращает строку, содержащую  имя следующего по порядку элемента каталога. Элементы возвращаются в том порядке, в котором они хранятся в файловой системе. По достижении конца каталога функция возвращает false.

      scandir()  - выдаёт список папок и файлов внутри данной

      is_dir() - проветить, существут ли папка с таким именем. Аргумент - путь к папке.

      Примеры

      создать паку

      <?php // Directory create $dirName = "newTestFolder"; $accessCode = 0751; echo("<h1>Creating folder</h1> with name $dirName if it does not exist already<br>"); if (!is_dir($dirName)){ mkdir( $dirName, $accessCode ); echo ("<p>Folder $dirName created ! </p>"); } else { echo ("<p style='color:red;'>Folder $dirName already existed --> Error! </p>"); } ?>

      прочесть содержимое папки - readdir()

      <?php // Directory read $dirName = "newTestFolder"; echo("<h1>Read folder</h1>Folder <b>$dirName</b> contains:<br>"); if ($handle = opendir($dirName)) { while ($entry = readdir($handle)) { echo ("$entry<br>"); } closedir($handle); } ?>

      прочесть содержимое папки - scandir()

      <?php // Directory read $dirName = "newTestFolder"; echo("<h1>Read folder</h1>Folder <b>$dirName</b> contains:<br>"); // Sort in ascending order - this is default $a = scandir($dirName); // Sort in descending order $b = scandir($dirName,1); var_dump($a); var_dump($b); ?>



      Чтение из файла:

      fread() - считывает содержимое файла в 

      fgetc() - считывает одиночный символ из файла

      fgets() - считывает одну строку из файла

      file() - считывает содержимое всего файла в массив

      fgetcsv() - считывает строку значений, разделенных запятыми

      file_get_contents() - считывает весь файл в строку

      readfile() - отображает содержимое всего файла без необходимости вызова функции fopen ().

      fread - чтение файла в двоичном формате, в виде последовательности байт (binary safe mode). использует два параметра: указатель на файл (полученный от fopen ) и количество байт для считывания.

      Например:

      <?php $num = 100; $fName = "files/myfile.txt"; echo ("<h1>Read $num bytes from file $fName</h1>"); $f1 = fopen($fName,"r"); echo (fread ($f1, $num)); ?>

      читает 100 байт из файла "myfile.txt" .

      Функции для записи в файл:

      fwrite()— запись в файл

      fputcsv() — форматирует строку в виде CSV и записывает её в файл

      file_put_contents() – пишет строку в файл без вызова фуекции fopen().

      Например:

      <?php $fName = "files/outFile1.txt"; $outTxt = "текст для записи в файл"; echo ("<h1>Write to file: $fName</h1>"); $myFile = fopen($fName, "w") or die("Невозможно открыть файл!"); $myFile.fwrite($myFile, $outTxt); fclose($myFile); ?>

      Форматирование ввода-вывода

      При операциях чтении-записи можно использовать спецификаторы формата (как и при работе со строками).

      fprintf() — записывает отформатированную строку в файл (на file handle)

      fscanf() — обрабатывает данные из файла в соответствии с форматом

      Примеры

      Читать полностью файл

      <?php $fName = "files/myfile.txt"; $fEnd = filesize($fName); echo ("<h1>Read all from file $fName</h1>"); $f1 = fopen($fName,"r"); echo (fread ($f1, $fEnd)); ?>

      Дозапись в файл

      <?php // Дозапись в файл $fName = "files/outFile2.txt"; echo ("<h1>Append to file file $fName</h1>"); $f1 = fopen($fName,"a") or die ("Невозможно открыть файл!");; $f1.fwrite($f1,"Test to append\tTest to append\n"); fclose($f1); ?>

      Читать файл построчно - 2 строки 

      <?php // Прочесть 2 строки из фвйла - fgets()<br> $fName = "files/myfile2.txt"; echo ("<h1>Read line from file</h1> $fName"); $f1 = fopen($fName,"r") or die ("Невозможно открыть файл!");; echo ("<p>Первая строка, прочитанная из файла:</p>"); echo fgets($f1); echo ("<p>Вторая строка, прочитанная из файла:</p>"); echo fgets($f1); echo ("<hr>"); fclose($f1); ?>

      Читать весь файл построчно

      <?php // Прочесть весь файл построчно - fgets() $fName = "files/myfile2.txt"; $i = 0; echo ("<h1>Read all lines from file</h1> $fName <hr>"); $f1 = fopen($fName,"r") or die ("Невозможно открыть файл!");; while(!feof($f1)){ echo ($i++ . " - " . fgets($f1) . "<br>"); } echo ("<hr>"); fclose($f1); ?>

      Читать файл посимвольно 

      <?php // Читать файл посимвольно - fgetc() $fName = "files/outFile2.txt"; $num = $_POST['num']; echo ("<h1>Read all lines from file</h1> $fName <hr>"); $f1 = fopen($fName,"r") or die ("Невозможно открыть файл!");; for($i=0; $i<=$num; $i++){ echo ($i++ . " - " . var_dump(fgetc($f1)) . "<br>"); } echo ("<hr>"); fclose($f1); ?>

      fprintf() — писать отформатированную строку в файл

      <?php $fName = "files/formatted1.txt"; $f1 = fopen($fName,"w") or die ("Невозможно открыть файл!");; fprintf($f1,"%.02lf\n", 1.035); fclose($f1); ?>



      Загрузка содержимого файла в массив

      file()

      file — Читает содержимое файла и помещает его в массив (каждая строка - элемент массива)

      file_get_contents()

      Данная функция похожа на функцию file() с той лишь разницей, что file_get_contents() возвращает содержимое файла в строке, начиная с указанного смещения offset и до maxlen байт. В случае неудачи, file_get_contents() вернёт FALSE. Использование функции file_get_contents() наиболее предпочтительно в случае необходимости получить содержимое файла целиком.

      Таким образом можно прочесть и WEB страничку:

      $myWEB = $_POST['siteUrl']; echo ("<h1>Читаем сайт:</h1>" . $myWEB . "<hr>"); $homepage = file_get_contents($myWEB); print_r ($homepage);




    11. Синтаксис PHP

      Программа на языке PHP расположена между тегами языка PHP. Она состоит из набора допустимых предложений языка (statements), каждое из которых завершается символом точка с запятой (;). 

      Предложения языка могут объединяться в блоки. Блок включает в себя одно или несколько предложений и выделяется специальными разделителями - {}. Блок также является допустимым предложением языка, символ точка с запятой после него необязателен.  

      Предложения языка PHP могут содержать, например,  операторы языка, переменные, константы, литералы, ключевые слова и другие допустимые лексические единицы (tokens ).


      Использование пробелов (whitespaces) 

      Пробелы в файле с PHP кодом используются интерпретатором языка для разделения лексических единиц. Использование более одного пробела или символов табуляции никак не влияет на ход программы, поэтому могут использоваться для улучшения читабельности, внешнего вида текста программы.

      В некоторых местах по крайней мере один пробел необходим. Например, между спецификатором области действия (access specifier)  и именем переменной.

      public $a

      В других местах это запрещено. Пробел, например,  не может присутствовать в самих идентификаторах переменных.

      $a=1; $b = 2; $c = 3;

      Количество пробелов  не имеет значения для интерпретатора PHP. Их количество определяется предпочтениями программиста  стилем программирования.

      $a = 1; $b = 2; $c = 3; $d = 4;

      Мы можем поместить два оператора языка в одну строку или разбить один оператор на три строки. Однако, исходный код должен быть удобен при чтении, визуально соответствовать общепринятым стандартам.

      Точка с запятой (semicolon)

      Точка с запятой используется, чтобы отметить конец оператора в PHP. Она обязательна.

      $a = 34; $b = $a * 34 - 34; echo $a;

      В примере выше - три разных предложения языка PHP.

      Первое предложение состоит из оператора присваивания. Значение 34 присваивается переменной $a.

      Второе предложение вычисляет сначала значение выражения $a * 34 - 34,затем результат присваивается переменной $b.

      Третье предложение - это команда вывода на печать. Она печатает значение переменной $a.

      Переменные (variables)

      Переменная - это идентификатор, метка области памяти компьютера, где содержится некоторое значение. В программировании мы говорим, что присваиваем значение переменной. С технической точки зрения, переменная - это ссылка на место в оперативной памяти, где хранится значение. В языке PHP переменная может содержать строку, число или различные объекты, такие как функция или класс. С течением времени переменным могут присваиваться разные значения.

      Переменные в PHP состоят из символа $,  и собственно метки. Метка может состоять из буквенно-цифровых символов и символа подчеркивания. Переменная не может начинаться с цифры. Более того, интерпретатор PHP может легко отличать число и переменную. Имя (идентификатор) переменной учитывает регистр (case sensitive). В идентификаторе переменной строчные и заглавные буквы обозначают разные символы.

      Примеры корректных идентификаторов:

      $Value $value2 $company_name

      Примеры некорректных идентификаторов переменных:

      $12Val  $exx$  $first-name 

      Имя (идентификатор) переменной учитывает регистр (case sensitive). В идентификаторе переменной строчные и заглавные буквы обозначают разные символы. Это значит, что

       $Var1, $var1, и  $VAR1  - три различных идентификатора.

      Типы переменных

      PHP может использовать переменные типа:

      • "boolean" или "bool"
      • "integer" или "int"
      • "float" или "double"
      • "string"
      • "array"
      • "object"
      • "null"


      PHP не требует (и не поддерживает) явного типа при определении переменной; тип переменной определяется по контексту, в котором она используется. То есть, если вы присвоите значение типа string переменной $var, то $var изменит тип на string. Если вы затем присвоите $var значение типа integer, она станет целым числом(integer).

      Для явного задания типов переменных можно использовать оператор приведения типов. Имя требуемого типа записывается в круглых скобках перед приводимой переменной.

      Допускаются следующие приведения типов:

      • (int), (integer) - приведение к integer
      • (bool), (boolean) - приведение к boolean
      • (float), (double), (real) - приведение к float
      • (string) - приведение к string
      • (array) - приведение к array
      • (object) - приведение к object
      • (unset) - приведение к NULL (PHP 5)

      Оператор gettype () — возвращает строку - тип PHP-переменной

      Оператор settype () — может переопределять тип переменной.

      Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.

      gettype($varName);


      settype($myVar, "integer");






      Константы (constants)

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

      define("USER", "David");

      Мы задали строковую константу с именем USER и присвоили ей значение "David".

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

      Подробнее


      Литералы (literal)

      Литерал - это самостоятельное, фиксированное значение. В отличие от идентификатора переменной или константы, которому могут присваиваться разные значения.

      В примере ниже: 29 и "Test" - литералы, а $age и $var2 - имена (идентификаторы) переменных.

      $age = 29; $var2 = "Test";


      Операторы языка PHP (operators)

      Операторы - набор символов для обозначения некоторых действий, операций над определёнными величинами. Оператор, в результате своего действия, создаёт новое значение. Примеры операторов PHP:

      + - * / % ++ -- = += -= *= /= .= %= == != >< > < >= <= && || ! xor or & ^ | ~ . << >>

      Операторы PHP - подробнее   


      Разделители (delimiters)

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

      В качестве разделителей интерпретатор языка PHP использует символы "ПРОБЕЛ",  точка с запятой - ";" 

      $a = "PHP"; $b = 'Java';

      Круглые скобки (Parentheses), фигурные скобки (Curly brackets), символ доллара "$", последовательность символов: "->", двойные и одинарные кавычки

      function setDate($date) { $this->date = $data; } if ( $a > $b) { echo "\$a is bigger than \$b"; }

      Квадратные скобки (square brackets)

      $a = array(1, 2, 3); echo $a[1];


      Последовательность символов для обозначения комментариев

      /* Copyright - 2017 */ <?php // PHP code ?>

      Разделители для PHP кода

      <?php программа на PHP ?>

      Ключевые слова (keywords)

      PHP использует определённый набор зарезервированных слов. Они выполняют определённые функции в PHP. Эти слова программисты не могут использовать в качестве своих идентификаторов

      abstract and array() as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw try use var while xor

      Другие конструкции языка PHP

      die() echo() empty() exit() eval() include() include_once() isset() list() require() require_once() return() print() unset()





    12. Работа с текстовыми строками в PHP

      Язык PHP поддержимает специальный тип переменных для работы с текстовыми строками - string. Строка - это набор символов. 

      Строка может быть определена различными способами:

      • одинарными кавычками
      • двойными кавычками
      • heredoc-синтаксисом
      • nowdoc-синтаксисом

       

      Примеры описания строк:

      // echo 'это простая строка'; // echo "это строка - 2"; // heredoc-синтаксис $st2 = <<<MYSTRING Пример строки, охватывающей несколько строчек, с использованием heredoc-синтаксиса. MYSTRING; // nowdoc-синтаксис $st3 = <<<'MYSTRING' Пример текста, занимающего несколько строк, с помощью синтаксиса nowdoc. MYSTRING;

       

      Если строка  выделяется двойными кавычками или при помощи heredoc, то интерпретатор языка производит с ней некоторые дейтвия до того, как использовать далее в программе:

      1. все имена переменных (начинающиеся с символа $), встреченные в строке заменяэтся на их значения
      2. определённые последовательности символов, начинающиеся с символа: \ (backslash) заменяются на специальные символы:
      echo '<pre>Hi\tthere!</pre>'; // Выводит на экран: "Hi\tthere!" echo "<pre>Hi\tthere!</pre>"; // Выводит на экран: "Hi there!"

       

      При использовании одинарных кавычек (или  nowdoc ) последовательность: \t так и выводится на экран. В случае использования двойных кавычек (или heredoc) \t интерпретируется как управляющий символ (ESC - sequense) и вставляет в строку табуляцию.

       

      Управляющие последовательности (escaped characters)

       

      Последовательность Значение
      \n новая строка (LF или 0x0A (10) в ASCII)
      \r возврат каретки (CR или 0x0D (13) в ASCII)
      \t горизонтальная табуляция (HT или 0x09 (9) в ASCII)
      \v вертикальная табуляция (VT или 0x0B (11) в ASCII) (с версии PHP 5.2.5)
      \e escape-знак (ESC или 0x1B (27) в ASCII) (с версии PHP 5.4.4)
      \f подача страницы (FF или 0x0C (12) в ASCII) (с версии PHP 5.2.5)
      \\ обратная косая черта
      \$ знак доллара
      \" двойная кавычка
      [0-7]{1,3} последовательность символов, соответствующая регулярному выражению символа в восьмеричной системе счисления, который молча переполняется, чтобы поместиться в байт (т.е. "\400" === "\000")
      \x[0-9A-Fa-f]{1,2} последовательность символов, соответствующая регулярному выражению символа в шестнадцатеричной системе счисления
      \u{[0-9A-Fa-f]+} последовательность символов, соответствующая регулярному выражению символа Unicode, которая отображается в строка в представлении UTF-8 (добавлено в PHP 7.0.0)

       

       

      Форматирование строк

       

      В PHP есть функции, позволяющие форматировать текстовую строку до использования в программе. Форматирование строки производится сопоставлением самой строки со строкой спецификаций форматирования (format).

      format

      Строка формата состоит из нуля и более директив: обычных символов (за исключением %), которые копируются напрямую в результирующую строку, и описателей преобразований, каждый из которых заменяется на один из параметров.

      Каждый описатель преобразований состоит из знака процента (%), за которым следует один или более дополнительных элементов (в том порядке, в котором они далее перечислены):

      1. Необязательный описатель знака, указывающий как знак (- или +) будет применен к числу. По умолчанию, используется только знак минус, если число отрицательное. Этот описатель заставляет положительные числа также отображать знак плюс.
      2. Необязательный описатель заполнения, который определяет, какой символ будет использоваться для дополнения результата до необходимой длины. Это может быть пробел или 0. По умолчанию используется пробел. Альтернативный символ может быть указан с помощью одиночной кавычки ('). См. примеры ниже.
      3. Необязательный описатель выравнивания, определяющий выравнивание влево или вправо. По умолчанию выравнивается вправо, - используется для выравнивания влево.
      4. Необязательное число, описатель ширины, определяющий минимальное число символов, которое будет содержать результат этого преобразования.
      5. Необязательный описатель точности, указанный в виде точки (.), после которой следует необязательная строка из десятичных чисел, определяющая, сколько десятичных разрядов отображать для чисел с плавающей точкой. При использовании со строками этот описатель выступает в роли обрезающей точки, устанавливающей максимальный лимит символов. Также между точкой и цифрой можно указать символ, используемый при дополнении числа.
      6. Описатель типа, определяющий, как трактовать тип данных аргумента. Допустимые типы:

        • % - символ процента. Аргумент не используется.
        • b - аргумент трактуется как целое и выводится в виде двоичного числа.
        • c - аргумент трактуется как целое и выводится в виде символа с соответствующим кодом ASCII.
        • d - аргумент трактуется как целое и выводится в виде десятичного числа со знаком.
        • e - аргумент трактуется как число в в научной нотации (например, 1.2e+2). Описатель точности указывает на количество знаков после запятой, начиная с версии PHP 5.2.1. В более ранних версиях он обозначал количество значащих цифр (на один знак меньше).
        • E - аналогично %e, но использует заглавную букву (например, 1.2E+2).
        • f - аргумент трактуется как число с плавающей точкой и также выводится в зависимости от локали.
        • F - аргумент трактуется как число с плавающей точкой и также выводится, но без зависимости от локали. Доступно, начиная с версии PHP 5.0.3.
        • g - выбирает самую краткую запись из %e и %f.
        • G - выбирает самую краткую запись из %E и %f.
        • o - аргумент трактуется как целое и выводится в виде восьмеричного числа.
        • s - аргумент трактуется как строка.
        • u - аргумент трактуется как целое и выводится в виде десятичного числа без знака.
        • x - аргумент трактуется как целое и выводится в виде шестнадцатеричного числа (в нижнем регистре).
        • X - аргумент трактуется как целое и выводится в виде шестнадцатеричного числа (в верхнем регистре).

      Переменные будут преобразованы в соответвующий тип для спецификатора:

      Обработка типов
      Тип Спецификатор
      string s
      integer d, u, c, o, x, X, b
      double g, G, e, E, f, F

      Пример:

      <html> <head> <title>Форматирование вывода </title> </head> <body> <?php $goods = array ("помидоры" => 15, "огурцы" => 12, "картофель" => 10); echo "<pre>"; printf ("%-25s%25s\n%'=50s\n", "Наименование", "Цена", ""); foreach ($goods as $nam => $prc) printf ("%'.-25s%'.22.2f\n", $nam, $prc); echo "</pre>"; ?> </body> </html>
      Результат:
      Наименование Цена =========================== помидоры..............15.00 огурцы................12.00 картофель.............10.00

       

       

       

      Информация о строке, манипуляция строками

      • strlen() - возвращает длину строки
      • strstr() - ищет подстроку в строке
      • stristr() - работает так же, как и strstr(), но не различает регистры
      • strpos() - определяет позицию подстроки в строке
      • substr() - возвращает подстроку

      Управление строками

      • ltrim(), chop(), trim() - удаляют все разделители соответственно в начале строки, в конце строки, в начале и конце строки. К разделителям относятся следующие символы: "\n" (новая строка), "\r"(возврат каретки), "\t" (табуляция), простой пробел.
      • str_replace() - заменяет все экземпляры указанной подстроки в строке на новую подстроку.
      • substr_replace() - заменяет часть строки, ограниченную параметрами.
      • strtoupper() - переводит символы строки в верхний регистр.
      • strtolower() - переводит символы строки в нижний регистр.
      • ucwords() - переводит в верхний регистр первый символ каждого слова.
      • explode() - разбивает строку на массив.
      • implode() -объединяет элементы массива со строкой.

       

       

       

      PHP - функции работы со строками

       

      Функция Описание
      addcslashes() Вставляет символ обратная косая черта -  \ перед заданными символами в строке 
      addslashes() Вставляет символ - \ перед символами
      single quote (')
      double quote (")
      backslash (\)
      NULL
      найденными  в строке
      bin2hex() Преобразует бинарные данные в шестнадцатиричное представление
      $binary = "11111001";
      $hex = dechex(bindec($binary));
      echo $hex;
      chop() Эта функция возвращает строку с удаленными из конца строки пробельными (или другими) символами.

      Если второй параметр не передан, rtrim() удаляет следующие символы:

      " " (ASCII 32 (0x20)), обычный пробел.
      "\t" (ASCII 9 (0x09)), символ табуляции.
      "\n" (ASCII 10 (0x0A)), символ перевода строки.
      "\r" (ASCII 13 (0x0D)), символ возврата каретки.
      "\0" (ASCII 0 (0x00)), NULL-байт.
      "\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
      // удаляем управляющие ASCII-символы с конца $binary
      // (от 0 до 31 включительно)
      $clean = rtrim($binary, "\x00..\x1F");
      var_dump($clean);
      chr() Возвращает символ по коду
      <?php
      echo chr(52) . "<br>"; // Decimal value
      echo chr(052) . "<br>"; // Octal value
      echo chr(0x52) . "<br>"; // Hex value
      ?>
      chunk_split($str, $n, $smb) разбивает строку $str на равные части длиной $n и разделяет их символоми $smb

      $str = "Hello world!"; echo chunk_split($str,2,".");
      convert_cyr_string(string,from,to) Меняет русскую кодировку строки string из кодировки from в кодировку to 

      Возможные кодировки:

      • k - koi8-r
      • w - windows-1251
      • i - iso8859-5
      • a - x-cp866
      • d - x-cp866
      • m - x-mac-cyrillic

      convert_cyr_string($str,'w','a');

      convert_uudecode() Декодирует строку, закодированную при помощи convert_uuencode()
      convert_uuencode(string) Кодирование uuencode переводит строку string (включая бинарные символы) в последовательности печатных (7-битных) ASCII-символов, что позволяет безопасно обмениваться данными через сеть. Закодированные данные примерно на 35% больше оригинала.
      count_chars() Возвращает количество символов в строке
      crc32(string) Функция вычисляет CRC32 код для строки string. Это обычно используется для контроля целостности передаваемых данных.
      crypt() Возвращает хэшированную (закодированную) строку, полученную с помощью стандартного алгоритма UNIX, основанного на DES, или другого алгоритма, имеющегося в системе.
      echo() Печатает одну или несколько строк
      explode(separator,string,limit) Конвертирует строку string в массив, разделяя её по символу separator. 

      delimiter

      Разделитель.

      string

      Входная строка.

      limit

      Если аргумент limit является положительным, возвращаемый массив будет содержать максимум limit элементов, при этом последний элемент будет содержать остаток строки string.

      Если параметр limit отрицателен, то будут возвращены все компоненты кроме последних -limit.

      Если limit равен нулю, то он расценивается как 1.

      fprintf() Печатает отформатированную строку в определённый выходной поток
      get_html_translation_table() Возвращает таблицу преобразований, используемую функциями htmlspecialchars() и htmlentities()
      hebrev() Преобразует текст на иврите в визуальный текст
      hebrevc() Преобразует текст на иврите в визуальный текст и новые строки (\ n) в <br>
      hex2bin() Конвертирует строку шестнадцатеричных величин в символы ASCII
      html_entity_decode(str,flags,char-set) Преобразует объекты HTML в символы
      htmlentities() Преобразует символы в объекты HTML
      htmlspecialchars_decode() Преобразует некоторые предопределенные объекты HTML в символы
      htmlspecialchars() Преобразует некоторые предопределенные символы в объекты HTML
      implode() Конвертирует массив в строку
      join() Конвертирует массив в строку
      lcfirst() Преобразует первый символ строки в нижний регистр
      levenshtein($str1, $str2) Вычисляет расстояние Левенштейна между двумя строками. Расстояние Левенштейна - это минимальное количество вставок, замен и удалений символов, необходимое для преобразования str1 в str2.
      localeconv() Возвращает информацию о численном и денежном форматировании локали
      ltrim() Удаляет пробелы (или другие символы) из начала строки
      md5() Вычисляет хэш MD5 строки
      md5_file() Вычисляет хэш MD5 файла
      metaphone() Вычисляет ключ метафона строки
      money_format() Возвращает строку, отформатированную как строка валюты
      nl_langinfo() Возвращает определенную локальную информацию
      nl2br() Вставляет разрывы строк HTML перед каждой новой строкой строки
      number_format() Форматирует число сгруппированными тысячами
      ord() Возвращает значение ASCII первого символа строки
      parse_str() Разбирает строку запроса в переменные
      print() Выводит одну или несколько строк
      printf() Выводит форматированную строку
      quoted_printable_decode() Преобразует строку с кавычками для печати в 8-битную строку
      quoted_printable_encode() Преобразует 8-битную строку в строку с текстом в кавычках
      quotemeta() Убирает в кавычки метасимволы
      rtrim() Эта функция возвращает строку str с удаленными из конца строки пробельными (или другими) символами.

      Если второй параметр не передан, rtrim() удаляет следующие символы:

      " " (ASCII 32 (0x20)), обычный пробел.
      "\t" (ASCII 9 (0x09)), символ табуляции.
      "\n" (ASCII 10 (0x0A)), символ перевода строки.
      "\r" (ASCII 13 (0x0D)), символ возврата каретки.
      "\0" (ASCII 0 (0x00)), NULL-байт.
      "\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.

      // удаляем управляющие ASCII-символы с конца $binary
      // (от 0 до 31 включительно)
      $clean = rtrim($binary, "\x00..\x1F");
      var_dump($clean);
      setlocale() Устанавливает локальную информацию
      sha1() Вычисляет хэш SHA-1 для строки
      sha1_file() Вычисляет хэш SHA-1 для файла
      similar_text() Вычисляет сходство между двумя строками
      soundex() Вычисляет ключ soundex строки
      sprintf(format,arg1,arg2,,,) Возвращает стрроку, созданную из аргументов arg1,arg2, отформатированных строкой формат.

      format

      Строка формата состоит из нуля и более директив: обычных символов (за исключением %), которые копируются напрямую в результирующую строку, и описателей преобразований, каждый из которых заменяется на один из параметров. Это относится как к sprintf(), так и к printf().

      Каждый описатель преобразований состоит из знака процента (%), за которым следует один или более дополнительных элементов (в том порядке, в котором они здесь перечислены):

      1. Необязательный описатель знака, указывающий как знак (- или +) будет применен к числу. По умолчанию, используется только знак минус, если число отрицательное. Этот описатель заставляет положительные числа также отображать знак плюс.
      2. Необязательный описатель заполнения, который определяет, какой символ будет использоваться для дополнения результата до необходимой длины. Это может быть пробел или 0. По умолчанию используется пробел. Альтернативный символ может быть указан с помощью одиночной кавычки ('). См. примеры ниже.
      3. Необязательный описатель выравнивания, определяющий выравнивание влево или вправо. По умолчанию выравнивается вправо, - используется для выравнивания влево.
      4. Необязательное число, описатель ширины, определяющий минимальное число символов, которое будет содержать результат этого преобразования.
      5. Необязательный описатель точности, указанный в виде точки (.), после которой следует необязательная строка из десятичных чисел, определяющая, сколько десятичных разрядов отображать для чисел с плавающей точкой. При использовании со строками этот описатель выступает в роли обрезающей точки, устанавливающей максимальный лимит символов. Также между точкой и цифрой можно указать символ, используемый при дополнении числа.
      6. Описатель типа, определяющий, как трактовать тип данных аргумента. Допустимые типы:

        • % - символ процента. Аргумент не используется.
        • b - аргумент трактуется как целое и выводится в виде двоичного числа.
        • c - аргумент трактуется как целое и выводится в виде символа с соответствующим кодом ASCII.
        • d - аргумент трактуется как целое и выводится в виде десятичного числа со знаком.
        • e - аргумент трактуется как число в в научной нотации (например, 1.2e+2). Описатель точности указывает на количество знаков после запятой, начиная с версии PHP 5.2.1. В более ранних версиях он обозначал количество значащих цифр (на один знак меньше).
        • E - аналогично %e, но использует заглавную букву (например, 1.2E+2).
        • f - аргумент трактуется как число с плавающей точкой и также выводится в зависимости от локали.
        • F - аргумент трактуется как число с плавающей точкой и также выводится, но без зависимости от локали. Доступно, начиная с версии PHP 5.0.3.
        • g - выбирает самую краткую запись из %e и %f.
        • G - выбирает самую краткую запись из %E и %f.
        • o - аргумент трактуется как целое и выводится в виде восьмеричного числа.
        • s - аргумент трактуется как строка.
        • u - аргумент трактуется как целое и выводится в виде десятичного числа без знака.
        • x - аргумент трактуется как целое и выводится в виде шестнадцатеричного числа (в нижнем регистре).
        • X - аргумент трактуется как целое и выводится в виде шестнадцатеричного числа (в верхнем регистре).

      Переменные будут преобразованы в соответвующий тип для спецификатора:

      Обработка типов
      Тип Спецификатор
      string s
      integer d, u, c, o, x, X, b
      double g, G, e, E, f, F
      sscanf() Разбирает строку в соответствии с заданным форматом
      str_getcsv() Разбирает строку CSV в массив
      str_ireplace() Заменяет некоторые символы в строке (без учета регистра)
      str_pad() Дополняет строку до новой длины
      str_repeat() Повторяет строку определенное количество раз
      str_replace() Заменяет некоторые символы в строке (с учетом регистра)
      str_rot13() Выполняет кодировку ROT13 в строке
      str_shuffle() Случайно перемещает все символы в строке
      str_split($string,$length) Превращает строку $stringв массив раазбивая её на части длиной $length
      str_word_count() Считает количество слов в строке
      strcasecmp() Сравнивает две строки (без учета регистра)
      strchr() Находит первое вхождение строки внутри другой строки (алиас strstr ())
      strcmp() Сравнивает две строки (с учетом регистра)
      strcoll() Сравнивает две строки (сравнение строк на основе локали)
      strcspn() Возвращает количество символов, найденных в строке, до того, как найдена какая-либо часть определенных символов
      strip_tags() Вырезает HTML и PHP теги из текстовой строки
      stripcslashes() Удаляет экранирование символов, произведенное функцией addcslashes()
      stripslashes() Удаляет экранирование символов, произведенное функцией  addslashes()
      stripos() Возвращает позицию первого вхождения подстроки без учета регистра
      stristr() Регистронезависимый вариант функции strstr()
      strlen() Возвращает длину строки
      strnatcasecmp() Сравнение строк без учета регистра с использованием алгоритма "natural order"
      strnatcmp() Сравнение строк с использованием алгоритма "natural order" с учётом регистра
      strncasecmp() Бинарно-безопасное сравнение первых n символов строк без учета регистра (case-insensitive)
      strncmp() Бинарно-безопасное сравнение первых n символов строк (case-sensitive)
      strpbrk() Ищет в строке любой символ из заданного набора
      strpos() Возвращает позицию первого вхождения подстроки (case-sensitive)
      strrchr() Находит последнее вхождение символа в строке
      strrev() Переворачивает строку задом наперед
      strripos() Возвращает позицию последнего вхождения подстроки без учета регистра
      strrpos() Возвращает позицию последнего вхождения подстроки в строке (case-sensitive)
      strspn() Возвращает длину участка в начале строки, полностью соответствующего маске
      strstr() Находит первое вхождение подстроки (case-sensitive)
      strtok() strtok() разбивает строку str на подстроки (токены), используя в качестве разделителей символы из token. Например, строку "This is an example string" можно разбить на отдельные слова используя пробел в качестве разделителя.
      strtolower() Возвращает строку string, в которой все буквенные символы переведены в нижний регистр.
      strtoupper() Возвращает строку string, в которой все буквенные символы переведены в верхний регистр.
      strtr() Преобразует заданные символы или заменяет подстроки. 
      substr() Возвращает подстроку
      substr_compare() Бинарно-безопасное сравнение 2 строк со смещением, с учетом или без учета регистра
      substr_count() Возвращает число вхождений подстроки
      substr_replace() Возвращает число вхождений подстроки
      trim() Удаляет пробелы или другие символы с обеих сторон строки
      ucfirst() Преобразует первый символ строки в верхний регистр
      ucwords() Преобразует в верхний регистр первый символ каждого слова в строке
      vfprintf() Записывает строку, отформатированную в соответствии с параметром format в поток handle.
      Данная функция похожа на fprintf(), но принимает не переменное число аргументов, а массив.
      int vfprintf ( resource $handle , string $format , array $args )

      vprintf() Выводит отформатированную строку
      int vprintf ( string $format , array $args )
      Выводит значения массива, отформатированные в соответствии с аргументом format, описанном в документации функции sprintf().
      vsprintf() Возвращает отформатированную строку
      wordwrap() Переносит строку по указанному количеству символов

       

       

       

       

       

       

       

       

       

    13. Условные операторы

      Интерпретатор языка выпоняет все директивы программы последовательно, в порядке их следования.

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

      Для этого используются условные опрераторы. Такого типа оператор проверяет определённое условие (condition), которое программа PHP формулирует в виде логического выражения (logical expression)  и по результатам проверки выполняет ту или иную ветвб программы.

      PHP использует для этих целей операторы: if, elseif...else и оператор switch.

      Оператор if 


      <?php if ($bank_balance < 100) { $money += 1000; $bank_balance += $money; } ?>


      <?php if ($bank_balance < 100) { $money += 1000; $bank_balance += $money; } else { $savings += 50; $bank_balance -= 50; } ?>


      <?php if ($bank_balance < 100) { $money += 1000; $bank_balance += $money; } elseif ($bank_balance > 200) { $savings += 100; $bank_balance -= 100; } else { $savings += 50; $bank_balance -= 50; } ?>

      Оператор - ? (другая форма условного оператора - if )


      <?php echo $fuel <= 1 ? "Fill tank now" : "There's enough fuel"; ?>

      Оператор switch


      <?php switch ($page) { case "Home": echo "You selected Home"; break; case "About": echo "You selected About"; break; case "News": echo "You selected News"; break; case "Login": echo "You selected Login"; break; case "Links": echo "You selected Links"; break; default: echo "Unrecognized selection"; break; } ?>




      Записаться на курс



    14. Фильтры в PHP

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

      ёто могут буть:
      • Пользовательский ввод из формы
      • cookies
      • Данные от веб-сервисов
      • Переменные сервера
      • Результаты запроса к базе данных

      Такие данные необходимо тщательно проверять перед использованием и чистить. Фильтры PHP используются для проверки и дезинфекции внешнего ввода.

      Расширение фильтра PHP имеет много функций, необходимых для проверки пользовательского ввода, и предназначено для упрощения и ускорения проверки данных.

      Функция filter_list () может использоваться для перечисления тех возможностей, которые предлагают фильтры.

      Пример:


      <?php // Sanitize and Validate an Email Address $email = "Этот адрес электронной почты защищён от спам-ботов. У вас должен быть включен JavaScript для просмотра."; // Remove all illegal characters from email $email = filter_var($email, FILTER_SANITIZE_EMAIL); // Validate e-mail if (!filter_var($email, FILTER_VALIDATE_EMAIL) === false) { echo("$email is a valid email address"); } else { echo("$email is not a valid email address"); } ?>


      Список констант, которые используют фильтры

        Константа  ID    Описание
      FILTER_VALIDATE_BOOLEAN      258 Validates a boolean
      FILTER_VALIDATE_EMAIL 274 Validates an e-mail address
      FILTER_VALIDATE_FLOAT 259 Validates a float
      FILTER_VALIDATE_INT    257 Validates an integer
      FILTER_VALIDATE_IP       275 Validates an IP address
      FILTER_VALIDATE_REGEXP  272 Validates a regular expression
      FILTER_VALIDATE_URL   273 Validates a URL
      FILTER_SANITIZE_EMAIL   517 Removes all illegal characters from an e-mail address
      FILTER_SANITIZE_ENCODED 514 Removes/Encodes special characters
      FILTER_SANITIZE_MAGIC_QUOTES 521 Apply addslashes()
      FILTER_SANITIZE_NUMBER_FLOAT 520 Remove all characters, except digits, +- and optionally .,eE
      FILTER_SANITIZE_NUMBER_INT 519 Removes all characters except digits and + -
      FILTER_SANITIZE_SPECIAL_CHARS 515 Removes special characters
      FILTER_SANITIZE_STRING 513 Removes tags/special characters from a string
      FILTER_SANITIZE_STRIPPED 513 Alias of FILTER_SANITIZE_STRING
      FILTER_SANITIZE_URL     518 Removes all illegal character from s URL
      FILTER_UNSAFE_RAW    516 Do nothing, optionally strip/encode special characters
      FILTER_CALLBACK1024 Call a user-defined function to filter data


      Для работы с фильтрами используются функции:

      • filter_has_var — Проверяет существование переменной указанного типа
      • filter_id — Возвращает идентификатор, принадлежащий именованному фильтру
      • filter_input_array — Принимает несколько переменных извне PHP и, при необходимости, фильтрует их
      • filter_input — Принимает переменную извне PHP и, при необходимости, фильтрует ее
      • filter_list — Возвращает список всех поддерживаемых фильтров
      • filter_var_array — Принимает несколько переменных и, при необходимости, фильтрует их
      • filter_var — Фильтрует переменную с помощью определенного фильтра