PHP: различия между версиями

Перейти к навигации Перейти к поиску
36 байт убрано ,  3 года назад
правописание
(Отмена правки 145764, сделанной John Veniza (обсуждение) rvv)
Метка: отмена
(правописание)
После того, как запрос клиента проанализирован веб-сервером и передан '''РНР'''-интерпретатору — последний устанавливает ряд переменных, которые содержат данные запроса и доступны всё время его выполнения.
 
Сначала '''PHP''' инициализирует массивы <code>$_ENV</code> (содержащий переменные среды-окружения; англ. ''environment'') и <code>$_SERVER</code><ref>. На самом деле, порядок инициализации суперглобальных массивов зависит от настроек в файле ''php.ini''</ref>. Ассоциативный массив <code>$_SERVER</code> содержит следующие ключи (индексы массива):
{| class="wikitable"
!Ключ (индекс ячейки массива)
</source>
 
Первый параметр этой функции — имя константы, второй — её значение. При использовании константы, на неё ссылаются по имени:
<source lang="php">
<?php
</source>
 
По традиции имена констант пишут буквами верхнего регистра. И хотя это только традиция, мы рекомендуем Вам следовать ей, поскольку «плохие» программисты получаются в том числе и из тех, кто не следовал хорошим традициям. Существует функция <code>defined()</code>, которая проверяет, определена ли константа:
 
<source lang="php">
== Операторы ==
=== Математические операторы ===
В '''PHP''', как и в любом другом языке программирования, есть базовый набор математических операторов:
{| class="wikitable"
!Оператор
 
=== Операторы присвоения ===
Для присвоения переменной нового значения используется оператор «<code>=</code>»:
<source lang="php">
$a = $b + $c - 127;
 
=== Поразрядные операторы ===
Эта группа операторов работает с битовыми представлениями значений целочисленных операндов. В основном, эти операторы применяются для создания набора булевых флагов:
{| class="wikitable"
|'''Оператор'''
Этот код выдает в окне браузера цифры от одного до пяти.
 
Для выхода из цикла применяется оператор <code>break</code>. При обнаружении этого оператора, все итерации прекращаются. Пример: при выполнении нижеприведённого цикла, — несмотря на то, что переменная <code>$var = 7</code>, — в окне браузера появятся цифры «1»—«5», исключая «6» и «7»:
<source lang="php">
<?php
</source>
 
Чтобы перейти в следующую итерацию применяется <code>continue</code>:
<source lang="php">
<?php
</source>
 
''Примечание:'' Вв '''PHP''', стандартное время исполнения скрипта — 30 секунд (эту настройку можно изменить в файле "php.ini"); по его прошествии с начала выполнения скрипта, действие скрипта будет прервано. Таким образом, наибольшее время выполнения «бесконечного» цикла (без изменения настроек) — полминуты.
 
==== do… while… ====
Этот оператор называется оператором цикла с пост-условием. При входе в цикл, в любом случае выполняется тело цикла (то есть цикл ''всегда'' будет выполнен хотя бы один раз); затем — вычисляется условие, и если оно не равно «0», то вновь выполняется тело цикла и проверка условия. В нижеследующем примере — «нуль» всегда будет добавлен в список, независимо от условия <code>(++$i <= $var)</code>:
<source lang="php">
<?php
Здесь <code>expression1</code> (инициализация цикла) — последовательность определений и выражений, разделяемая запятыми. Все выражения, входящие в инициализацию, вычисляются только один раз, при входе в цикл. Как правило, здесь устанавливаются начальные значения счётчиков и параметров цикла. Смысл выражения-условия <code>expression2</code> — такой же как и у циклов с предусловиями; при отсутствии выражения-условия предполагается, что его значение всегда истинно. Выражения <code>expression3</code> вычисляются в конце каждой итерации после выполнения тела цикла.
 
В следующем скрипте, мы по традиции выведем числа от «0» до «5»:
<source lang="php">
<?php
</source>
 
Также предусмотрена возможность работы с ассоциативными массивами. При обработке следующего кода, в переменной <code>$name</code> будет храниться ассоциативный индекс элемента, а в переменной <code>$value</code> — его значение. Проще говоря, <code>($arr[$name] == $value)</code>.
<source lang="php">
<?php
Несмотря на то, что эта глава написана скорее в духе справочника — материал, изложенный в ней, достаточно серьёзен, хотя и не самый сложный для понимания. Умение грамотно работать со строками очень важно для программиста. Строковых функций в '''PHP''' немало, причем многие из них, так или иначе, просто дублируют друг друга. Однако, приёмы работы с основными блоками функций (функции поиска и замены в тексте, функции удаления пробельных символом (trim-функции), функции форматного вывода) надо представлять очень чётко.
 
''Вообще говоря, по определению, строка — это последовательность символов типа '''char''', которая заканчивается нулевым символом. Поэтому можно, конечно, радоваться тому, что при работе со строками, нам не приходится жонглировать указателями в стиле "C"/"[[C++]]", однако не стоит забывать о том, что цена этому удобству — быстродействие. Поэтому некоторые приводимые здесь функции мы будем обсуждать в том числе и с точки зрения их быстродействия.''
 
=== Функция "htmlspecialchars" ===
Вход пользователя будет производиться по следующему алгоритму:
#Пользователь заполняет форму: «Логин», «Пароль»;
#Данные запоминаются в переменной '''$_POST''', после чего будут обрабатываться на сессии<ref>Преимущество сессий в том, что обычный пользователь даже не заметит, как его перенаправили на другую страницу, а значит будет сложнее взломать PHP -код. На странице входа отображается только перенаправление на session.php и форма входа. Если конечно не посмотрит внимательно на HTML -код, но это ему ничего не даст, по скольку он не сможет взять из файла session.php сам PHP -код</ref>;
#Уже в сессии хешируется введённый пользователем пароль, алгоритмом [[w:MD5|MD5]];
#Подключение к базе данных «SQL» и импорт данных со строки пользователя ''admin'' (допустим, пользователь ввёл имя пользователя ''admin''). Затем запись всей строки в массив '''$table''' — такой вариант поможет сократить много нервов и строк;
11

правок

Навигация