Использование Web-сервера Apache
При вводе в адресной строке браузера имени хоста localhost после установки Denwer и его запуска (StartDenwer на рабочем столе) теперь появляется страница управления Denwer.
Итак, как уже было замечено ранее Denwer предоставляет что-то вроде локального хостинга, а значит, обращение к Вашему сайту происходит по имени хоста и, соответственно, по протоколу http. В случае открытия html-страницы из файла обращение происходит без участия web-сервера Apache.
Поэтому при разработке собственного web-приложения (при обработке обязательно требуется web-сервер) необходимо зарегистрировать его. Для этого необходимо создать папку с именем хоста (имя, которое вы будете писать в адресной строке) в каталоге C:\WebServers\home. Например, my.ru. Далее необходимо создать в каталоге с именем хоста (в данном случае в каталоге my.ru) каталог www. В каталоге www необходимо создать файл с именем index.php или с именем index.html. В первом случае при обращении к разрабатываемому web-приложению (по имени хоста) файл сначала будет обработан, так называемой, php-машиной. Во втором случае файл будет сразу передан в браузер.
Если сразу после создания всех необходимых каталогов и файлов в адресной строке браузера ввести имя Вашего хоста, то произойдет ошибка. Для того, чтобы Ваше web-приложение или сайт были зарегистрированы web-сервером (в данном случае Apache) его необходимо перезапустить. Для этого необходимо запустить ярлык с именем RestartDenwer на рабочем столе.
|
|
Теперь можно ввести имя хоста в адресной строке браузера. Если все было сделано верно, то в окне браузера отобразиться содержимое страницы, которую Вы создали ранее (index.php или index.html).
Основы языка PHP
Общие сведения
PHP — это язык программирования, выполняемый на стороне сервера. В отличие от языка JavaScript PHP не зависит от программного обеспечения клиента и поэтому будет выполнен в любом случае. Последовательность инструкций (называемая программой или скриптом) выполняется интерпретатором языка PHP. Код программы может внедряться в HTML-код. Эта возможность отличает PHP от других языков, используемых в Интернете, например, от языка Perl. Обработка PHP-кода производится на сервере до того, как страница будет передана Web-браузеру. В итоге Web-браузер получит обычный HTML-код или другой вывод.
Листинг 1 – Пример простого кода
<html>
<head>
<title>Перваяпрограмма</title>
</head>
<body>
<?php
echo "Hello, world";
?>
</body>
</html>
Код приведенный выше, является наиболее простым. В итоге в окне Web-браузера отобразится надпись "Hello, world". Теперь давайте отобразим исходный HTML-код (листинг 2).
Листинг 2 – Исходный HTML-код
<html>
<head>
|
|
<title>Перваяпрограмма</title>
</head>
<body>
Hello, world</body>
</html>
Как нетрудно заметить, никаких признаков PHP в переданном браузеру коде нет. Это лишний раз доказывает, что исходный код php-файла в браузер был передан уже переработанным.
PHP-код встраивается в документ с помощью дескрипторов, иногда называемых также тегами: <?php и ?>
Пример:<?php echo "Hello, world"; ?>
В данный момент Вам встретилась одна из наиболее используемых в php команд echo. Как вы уже заметили, в браузер было передано Hello, world. Если вам необходимо вывести несколько строк, то необходимо написать: echo "Строка 1", "Строка 2";
Кроме того, HTML-теги также можно выводить с помощью оператора echo (листинг 3).
Листинг 3 – Пример кода
<?php
echo "<html><head>\n";
echo "<title>Перваяпрограмма</title>\n";
echo "</head><body>\n";
echo "<span style=\"color:red\">\n";
echo "Hello, world\n";
echo "</span>\n";
echo "</body></html>\n";
?>
Первое что привлекает внимание это комбинация символов \n. Эта комбинация используется для указания конца строки и считается одним символом. Если во всем коде листинга 3 убрать все такие символы, то в браузер будет передан весь код в одну строку.
Второе, что также привлекает внимание, это комбинация символов \". Эта комбинация используется для того, чтобы в браузер были переданы кавычки.
|
|
Все выражения в PHP заканчиваются точкой с запятой. В отличие от JavaScript, где отсутствие этого символа не приводит к созданию сообщения об ошибке, отсутствие точки с запятой в PHP приведет к остановке выполнения сценария и выдаче сообщения об ошибке. Это самая распространенная ошибка среди начинающих изучать язык PHP.
Для того чтобы в PHP закомментировать одну строку необходимо использовать // или #. Для использования многострочного комментария необходимо использовать /* комментарий в несколько строк */
Для вывода результатов скрипта кроме команды echo используется команда: print "Hello, world";
Переменные — это участки памяти, используемые программой для хранения данных. Каждая переменная должна иметь уникальное имя в программе, состоящее из латинских букв, цифр и знаков подчеркивания. Все имена переменных в PHP начинаются со знака $.
При указании имени переменной важно учитывать регистр букв: $strName и $strname — разные переменные.
В PHP переменные могут содержать следующие типы данных:
· integer — целые числа;
· double — вещественные числа;
· string — строка;
|
|
· bool — логический тип данных. Может содержать значения true или false;
· object — для хранения экземпляров класса;
· array — массивы.
При инициализации переменной интерпретатор автоматически относит переменную к одному из типов данных. Значение переменной присваивается с помощью оператора = таким образом:
$number = 7; // integer
$number2 = 7.8; // double
$string = "Строка"; // Переменной $string присвоено значение Строка
$string2 = 'Строка'; // Переменной $string2 также присвоено
// значение Строка
$boolean = true; // Переменной $boolean присвоено
// логическое значение true
PHP в любой момент времени изменяет тип переменной в соответствии с данными, хранящимися в ней.
$var = "Строка"; // тип string
$var = 7; // теперь переменная имеет тип integer
Функция gettype(<Имя_переменной>) возвращает тип данных переменной.
Кроме того, существуют функции проверки конкретного типа переменных:
· is_int(<Переменная>) возвращает true, если переменная имеет тип integer (целое число);
· is_integer(<Переменная>) возвращает true, если переменная имеет тип integer (целое число);
· is_double(<Переменная>) возвращает true, если переменная имеет тип double (вещественное число);
· is_float(<Переменная>) возвращает true, если переменная имеет тип double (вещественное число);
· is_string(<Переменная>) возвращает true, если переменная имеет тип string (строка);
· is_array(<Переменная>) возвращает true, если переменная имеет тип array (массив);
· is_object(<Переменная>) возвращает true, если переменная имеет тип object (объект);
· is_bool(<Переменная>) возвращает true, если переменная имеет тип boolean (логический тип данных).
С помощью функции isset(<Переменная>) можно проверить существование переменной. Если переменная определена, то возвращается true.
Функция empty(<Переменная>) проверяет наличие у переменной непустого, ненулевого значения. Возвращает true, если переменная пустая, не существует или имеет нулевое значение.
Удалить переменную можно с помощью функции unset(<Переменная>); Эта функция необходима, если переменная использовалась при обработке данных большого объема и теперь не нужна.
Константы используются для хранения значений, которые не должны измеяться во время работы программы. Создать константу можно с помощью функции define():
define(<Имя константы>, <Значение константы>[, <Регистр>]);
Необязательный параметр <Регистр> может содержать значения true или false. Если указано true, то интерпретатор не будет учитывать регистр символов при работе с именем константы, если же задано false или параметр не указан, регистр символов существенен.
После объявления константы ее имя указывается в программе без знака $.
Для проверки существования константы используется функция defined(<Имя константы>). Функция возвращает true, если константа объявлена.
В PHP существуют встроенные константы:
· __FILE__ (до и после два символа подчеркивания) — содержит имя файла с программой;
· __LINE__ (до и после два символа подчеркивания) — содержит номер строки, которую обрабатывает интерпретатор в данный момент;
· PHP_OS — содержит имя и версию операционной системы;
· PHP_VERSION — содержит версию PHP.
Операторы PHP
Математические операторы:
· + — сложение: $Z = $X + $Y;
· - — вычитание: $Z = $X - $Y;
· * — умножение: $Z = $X * $Y;
· / — деление: $Z = $X / $Y;
· % — остаток от деления: $Z = $X % $Y;
· ++ — оператор инкремента: $Z++;
· -- — оператор декремента: $Z--;
Операторы присвоения:
· = — присваивает переменной значение: $Z = 5;
· += — увеличивает значение переменной на указанную величину: $Z += 5; // Эквивалентно $Z = $Z + 5;
· -= — уменьшает значение переменной на указанную величину: $Z -= 5; // Эквивалентно $Z = $Z - 5;
· *= — умножает значение переменной на указанную величину: $Z *= 5; // Эквивалентно $Z = $Z * 5;
· /= — делит значение переменной на указанную величину: $Z /= 5; // Эквивалентно $Z = $Z / 5;
· %= — делит значение переменной на указанную величину и возвращает остаток: $Z %= 5; // Эквивалентно $Z = $Z % 5;
Основные функции для работы с числами:
· sin(), cos(), tan() — стандартные тригонометрические функции (синус,
· косинус, тангенс). Значение указывается в радианах;
· asin(), acos(), atan() — обратные тригонометрические функции (арксинус, арккосинус, арктангенс). Значение возвращается в радианах;
· exp() — экспонента;
· log() — натуральный логарифм;
· pow(<Число>, <Степень>) — возведение <Числа> в <Степень>;
· sqrt() — квадратный корень;
· pi() — возвращает число π;
· abs() — абсолютное значение;
· ceil() — значение, округленное до ближайшего большего целого;
· floor() — значение, округленное до ближайшего меньшего целого;
· max(<Список чисел через запятую>) — максимальное значение из списка;
· min(<Список чисел через запятую>) — минимальное значение из списка;
· mt_rand(<Начало диапазона>, <Конец диапазона>) — случайное число от <Начало диапазона> до <Конец диапазона> включительно;
· mt_srand(<Параметр>) настраивает генератор случайных чисел на новую последовательность. В качестве параметра обычно используется функция
· time(), возвращающая количество секунд, прошедшее с 1 января 1970 г.: mt_srand(time());
· base_convert() позволяет преобразовать число, записанное в одной системе счисления, в другую. Имеет следующий формат: base_convert(<Содержащая число строка>, <Исходная система счисления>, <Нужная система счисления>);
· bindec() преобразует двоичное число в десятичное;
· decbin() преобразует десятичное число в двоичное;
· hexdec() преобразует шестнадцатеричное число в десятичное;
· dechex() преобразует десятичное число в шестнадцатеричное;
· octdec() преобразует восьмеричное число в десятичное;
· decoct() преобразует десятичное число в восьмеричное;
· number_format() позволяет преобразовать число в отформатированную строку. Имеет следующий синтаксис: number_format(<Число>[, <Количество знаков после запятой>[, <Десятичный разделитель>, <Разделитель тысяч>]]);
Операторы сравнения используются в логических выражениях. Перечислим их:
· == — равно;
· === — строго равно;
· != — не равно;
· <> — не равно;
· !== — строго не равно;
· < — меньше;
· > — больше;
· <= — меньше или равно;
· >= — больше или равно.
Массивы в PHP
Особое внимание следует уделить массивам, так этот тип в PHP используется достаточно часто.
Инициализация массива осуществляется двумя способами:
· поэлементно:
$Mass[0] = 'Ноль';
$Mass[1] = 'Один';
$Mass[2] = 'Два';
$Mass[3] = 'Три';
Кроме того, можно не указывать индекс. PHP автоматически присвоит элементу индекс, на единицу больший последнего, то есть добавит элемент в конец массива:
$Mass[] = 'Ноль';
$Mass[] = 'Один';
$Mass[] = 'Два';
$Mass[] = 'Три';
· указав все элементы массива сразу:
$Mass = array('Ноль', 'Один', 'Два', 'Три');
Получить количество элементов массива позволяют функции count(<Имя массива>) и sizeof(<Имя массива>).
Для организации многомерного массива пользуются следующим приемом. Любому элементу массива можно присвоить другой массив:
$Mass = array();
$Mass[0] = array(1, 2, 3, 4);
В этом случае получить значение массива можно, указав два индекса:
$var = $Mass[0][2]; // Переменной $var будет присвоено значение 3
Основным отличием ассоциативных массивов от списков является возможность обращения к элементу массива не по числовому индексу, а по индексу, состоящему из строки. Индексы ассоциативного массива называются ключами.
Пример ассоциативного массива:
$Mass['Один'] = 1;
$Mass['Два'] = 2;
$Mass['Три'] = 3;
echo $Mass['Один']; // Выведет: 1
Кроме перечисления, для инициализации ассоциативных массивов используется инструкция array():
$Mass = array('Один' => 1, 'Два' => 2, 'Три' => 3);
echo $Mass['Один']; // Выведет: 1
Инструкцию array() удобно использовать для создания многомерных ассоциативных массивов:
$Mass['Иванов'] = array('Имя' => 'Иван', 'Отчество' => 'Иванович','Год рождения' => 1966);
$Mass['Семенов'] = array('Имя' => 'Сергей', 'Отчество' => 'Николаевич','Год рождения' => 1980);
Существует и другой способ:
$Mass = array( 'Иванов' => array('Имя' => 'Иван', 'Отчество' => 'Иванович', 'Год рождения' => 1966), 'Семенов' => array('Имя' => 'Сергей', 'Отчество' => 'Николаевич', 'Год рождения' => 1980) );
Доступ к элементу такого массива осуществляется путем указания двух ключей:
echo $Mass['Иванов']['Год рождения']; // Выведет: 1966
Кроме того существует большое количество различных специальных операторов для работы с массивами. К числу таких операторов можно отнести операторы сортировки, поиска значений в массиве и тому подобное.
Строки в PHP
Можно сказать, что строковый тип занимает особое место во всех web-языках программирования. Поэтому работа со строками является достаточно важным моментом.
Перечислим основные функции для работы со строками:
· strlen() возвращает количество символов в строке:
$str = "Строка";
echo strlen($str); // Выведет: 6
· trim() удаляет пробельные символы в начале и конце строки. Пробельными символами считаются: пробел, символ перевода строки (\n), символ возврата каретки (\r), символы горизонтальной (\t) и вертикальной (\v) табуляции и символ конца строки (\0)
· ltrim() удаляет пробельные символы в начале строки.
· rtrim() удаляет пробельные символы в конце строки.
· substr() возвращает подстроку указанной длины, начиная с заданной позиции. Если длина не указана, то возвращается подстрока, начиная с заданной позиции и до конца строки. Функция имеет следующий формат: substr(<Строка>, <Начальная позиция>, [<Длина>]);
· wordwrap() позволяет разбить длинный текст на строки указанной длины. Функция имеет следующий формат: wordwrap(<Строка>, <Количество символов>, <Символ разрыва>);
· strtoupper() заменяет все символы строки соответствующими прописными буквами.
· strtolower() заменяет все символы строки соответствующими строчными буквами.
· ucfirst() делает первый символ строки прописным.
· ucwords() делает первые символы всех слов прописными.
· strpos() ищет подстроку в строке. Возвращает номер позиции, с которой начинается вхождение подстроки в строку. Если подстрока в строку не входит, то функция возвращает false. Функция зависит от регистра символов. Имеет следующий формат: strpos(<Строка>, <Подстрока>, [<Начальная позиция поиска>]);
Если начальная позиция не указана, то поиск будет производиться с начала строки.
· str_replace() производит замену всех вхождений подстроки в строку на другую подстроку и возвращает результат в виде новой строки. Функция не изменяет исходную строку и зависит от регистра символов. Имеет следующий формат: str_replace(<Подстрока для замены>, <Новая подстрока>, <Строка>, [<Количество произведенных замен>]);
· strcmp(<Строка1>, <Строка2>) сравнивает две строки. Зависит от регистра символов. Возвращает одно из трех значений:
• 0 — если строки равны;
• 1 — если <Строка1> больше <Строки2>;
• -1 — если <Строка1> меньше <Строки2>.
· strcasecmp(<Строка1>, <Строка2>) сравнивает две строки без учета регистра:
Оператор условного перехода
Оператор ветвления if…else имеет следующий формат:
if (<Логическое выражение>) {
<Блок, выполняемый если условие истинно>
}
[elseif (<Логическое выражение>) {
<Блок, выполняемый, если условие истинно>
}]
[else {
<Блок, выполняемый, если все условия ложны>
}]
Листинг 4 - Проверка числа на четность
<b>Проверка числа на четность</b><br><br>
Введитечисло<br>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<input type="text" name="var">
<input type="submit" value="OK">
</form><br>
<?php
if (isset($_GET['var'])) {
$var = $_GET['var'];
if (preg_match('/^[0-9]+$/s', $var)) {
// Преобразуем тип string (строка) в integer (число)
$var = intval($var);
if ($var%2 == 0) {
echo $var . ' - Четное число';
}
else {
echo $var . ' - Нечетное число';
}
}
else echo 'Необходимо ввести число';
}
?>
Оператор ветвления
Оператор выбора switch имеет следующий формат:
switch (<Переменная или выражение>) {
case <Значение 1>:
<Выражение 1>;
break;
case <Значение 2>:
<Выражение 2>;
break;
…
default:
<Выражение>;
}
Листинг 5 - Использование оператора switch
<b>Какой операционной системой вы пользуетесь?</b><br><br>
<form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>">
<select name="os">
<option value="0" selected>Невыбрано</option>
<option value="1">Windows 98</option>
<option value="2">Windows ME</option>
<option value="3">Windows XP</option>
<option value="4">Другая</option>
</select>
<input type="submit" value="Выбрал">
</form>
<?php
if (isset($_GET['os'])) {
switch($_GET['os']) {
case '1':
echo 'Вывыбрали - Windows 98'; break;
case '2':
echo 'Вывыбрали - Windows ME'; break;
case '3':
echo 'Вывыбрали - Windows XP'; break;
case '4':
echo 'Вы выбрали - Другая'; break;
case '0':
echo 'Вы не выбрали операционную систему'; break;
default:
echo 'Мы не смогли определить вашу операционную систему';
}
}
?>
Циклы в PHP
Цикл for используется для выполнения выражений определенное число раз. Имеет следующий формат:
for (<Начальное значение>; <Условие>; <Приращение>) {
<Выражения>
}
Здесь присутствуют следующие конструкции:
· <Начальное значение> присваивает переменной-счетчику начальное значение;
· <Условие> содержит логическое выражение. Пока логическое выражение возвращает значение true, выполняются выражения внутри цикла;
· <Приращение> задает изменение переменной-счетчика при каждой итерации.
Примериспользования: for ($i=2; $i<101; $i+=2) echo $i . "<br>\n";
Выполнение выражений в цикле while продолжается до тех пор, пока логическое выражение истинно. Имеет следующий формат:
<Начальное значение>;
while (<Условие>) {
<Выражения>;
<Приращение>;
}
Работа цикла while в PHP аналогична работе такого же цикла в Pascal.
Выполнение выражений в цикле do…while продолжается до тех пор, пока логическое выражение истинно. Но в отличие от цикла while условие проверяется не в начале цикла, а в конце. По этой причине выражения внутри цикла do…while выполнятся минимум один раз.
Цикл имеет следующий формат:
<Начальное значение>;
do {
<Выражения>;
<Приращение>;
} while (<Условие>);
Работа цикла do .. while в PHP аналогична работе цикла Repeat .. Until в Pascal.
Цикл foreach используется для перебора элементов массива:
$Mass = array('Один', 'Два', 'Три', 'Четыре');
foreach ($Mass as $key) {
echo $key . '<br>';
}
Перебрать элементы ассоциативного массива можно следующим образом:
$Mass['Один'] = 1;
$Mass['Два'] = 2;
$Mass['Три'] = 3;
$Mass['Четыре'] = 4;
foreach ($Mass as $key => $value) {
echo $key . ' => ' . $value . '<br>';
}
Получение данных
Ранее было изучено понятие форм. У формы есть два основных параметра Action и Method. В параметре Action указывается, что произойдет при нажатии на кнопку Submit. Action, как правило, содержит ссылку на скрипт. После нажатия на кнопку Submit браузер не просто выполняет переход по определенной ссылке, а передает на сервер, так называемые переменные окружения. Переменных окружения достаточно много. Эти переменные содержат различную служебную информацию, а также сами данные передаваемые с формы. В зависимости от метода (параметра Method, который может принимать значения только POST и GET) данные содержаться в различных переменных окружения и, что более важно, в различных форматах. Когда web-сервер начинает обрабатывать полученные данные, он переносит данные переданные с формы в два глобальных массива. Первый массив $_GET, второй $_POST.
Таким образом, обращение к переменной переданной для обработки осуществляется следующим образом:
$_GET['<имя переменной на форме>']
$_POST['<имя переменной на форме>']
Чаще всего данные на форму передаются по методу POST, поскольку при данном методе передачи значения передаваемых переменных с формы не передаются в явной форме. В методе GET эти значения передаются в явном виде, что делает их не защищенными от злоумышленников.
Дата добавления: 2018-04-04; просмотров: 430; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!