Санкт-Петербургский государственный университет телекоммуникаций
имени профессора Бонч-Бруевича
Отчет к лабораторной работе №3 «PHP»
по предмету «Интернет-технологии»
Выполнил: студент группы
ИСТ-83 Бесаев С.
Преподаватель: Айвазян В.Б.
Санкт-Петербург
2012
Задание 1
<html>
<head>
<title>Задания 1-3</title>
</head>
<body>
<h1>Форма для регистрации участников</h1>
<!-- метод передачи данных - GET -->
<form method="GET">
Имя:<br/>
<input type="text" name="name"><br/>
Фамилия:<br/>
<input type="text" name="surname"><br/>
E-mail:<br/>
<input type="text" name="email"><br/><br/>
Выберите курс, который вы бы зотели посещать:<br/>
<input type="radio" name="course" checked="checked" value="PHP"> PHP<br/>
<input type="radio" name="course" value="Lisp"> Lisp<br/>
<input type="radio" name="course" value="Perl"> Perl<br/>
<input type="radio" name="course" value="Unix"> Unix<br/>
<h3>Что вы хотите, чтобы мы знали о вас?</h3>
<textarea name="text" rows="5" cols="40"></textarea><br/>
<input type="submit" value="Отправить">
</form>
</body>
</html>
Задание 2
<html>
<head>
<title>Задания 1-3</title>
</head>
<body>
<h1>Форма для регистрации участников</h1>
<!-- метод передачи данных - POST -->
<form method="POST">
Имя:<br/>
<input type="text" name="name"><br/>
Фамилия:<br/>
<input type="text" name="surname"><br/>
E-mail:<br/>
<input type="text" name="email"><br/><br/>
Выберите курс, который вы бы зотели посещать:<br/>
<input type="radio" name="course" checked="checked" value="PHP"> PHP<br/>
<input type="radio" name="course" value="Lisp"> Lisp<br/>
<input type="radio" name="course" value="Perl"> Perl<br/>
<input type="radio" name="course" value="Unix"> Unix<br/>
<h3>Что вы хотите, чтобы мы знали о вас?</h3>
<textarea name="text" rows="5" cols="40"></textarea><br/>
<input type="submit" value="Отправить">
</form>
</body>
</html>
Задание 3
<?php
//вывод соединенных строк - результатов, пришедших с POST-запросом
echo "Здравствуйте, ".$_POST["name"]." ".$_POST["surname"]."<br/>";
echo "Вы выбрали для изучения курс по ".$_POST["course"];
?>
Задание 4
<?php
//переменные
$x = 10;
$y = 100;
//функция умножения на два
function double() {
//расширяем область видимости перемеменной $x
global $x;
//присваевываем этой переменной новое значение
$x = 20;
//локальная переменная функции $y
$y = 200;
//умножение переменных на два
$x *=2;
$y *=2;
echo 'Переменная $x внутри функции:';
echo "$x<br/>";
echo 'Переменная $y внутри функции:';
echo "$y<br/>";
}
double();
// x = 400, так как был использован в функции double
// y = 100, так как не была определена как глобальная
echo 'Переменная $x вне функции:' . $x . '<br/>';
echo 'Переменная $y вне функции:' . $y . '<br/>';
?>
Задание 5
<?php
function double() {
//статичная переменная сохраняет свое значение при выходе из функции
static $count = 1;
//увеличиваем значение на 1
$count=$count+1;
echo "Количество вызовов функции: $count <br/>";
}
//вызываем функцию дважды
double();
double();
?>
Задание 6
<?php
function double() {
//статичная переменная сохраняет свое значение при выходе из функции
static $count = 1;
//увеличиваем значение на 1
$count=$count+1;
//строка с апострофами. не выводится значение $count
echo 'Количество вызовов функции: $count <br/>';
}
//вызываем функцию дважды
double();
double();
?>
Задание 7,15
<?php
//если из формы пришли пароли
if (isset($_POST['pass1']) && isset($_POST['pass2'])) {
//используем тернарный оператор для сравнения строк
//http://php.net/manual/ru/language.operators.comparison.php
echo "Проверки:<br/>";
//true - если переменные равны
echo '$_POST["pass1"] == $_POST["pass2"]: '.($_POST["pass1"]==$_POST["pass2"]?"TRUE":"FALSE")."<br/>";
//true - если переменные равны и совпадает тип данных
echo '$_POST["pass1"] === $_POST["pass2"]: '.($_POST["pass1"]===$_POST["pass2"]?"TRUE":"FALSE")."<br/>";
//true - если переменные не равны
echo '$_POST["pass1"] != $_POST["pass2"]: '.($_POST["pass1"]!=$_POST["pass2"]?"TRUE":"FALSE")."<br/>";
//true - если переменные не равны ИЛИ имеют разный тип данных
echo '$_POST["pass1"] <> $_POST["pass2"]: '.($_POST["pass1"]<>$_POST["pass2"]?"TRUE":"FALSE")."<br/>";
//true - если первая переменная меньше второй
echo '$_POST["pass1"] < $_POST["pass2"]: '.($_POST["pass1"]<$_POST["pass2"]?"TRUE":"FALSE")."<br/>";
//true - если вторая переменная меньше первой
echo '$_POST["pass1"] > $_POST["pass2"]: '.($_POST["pass1"]>$_POST["pass2"]?"TRUE":"FALSE")."<br/>";
//true - если первая переменная меньше или равна второй
echo '$_POST["pass1"] <= $_POST["pass2"]: '.($_POST["pass1"]<=$_POST["pass2"]?"TRUE":"FALSE")."<br/>";
//true - если вторая переменная меньше или равна первой
echo '$_POST["pass1"] >= $_POST["pass2"]: '.($_POST["pass1"]>=$_POST["pass2"]?"TRUE":"FALSE")."<br/>";
}else{
//иначе
echo "Пароли не указаны";
}
?>
Задания 8,9
<?php
if (isset($_POST['num'])) {
//присвоим значение переменной $num1
$num=$_POST['num'];
//выведем на экран значения пришедших строк с помощью конкатенации
echo "Вы ввели число:".$num;
}else{
//иначе выведем ошибку
echo "Не было введено число";
}
?>
Задание 10
<?php
//объявим именованную константу HELLO со следующим значением
define("HELLO","Привет, студент");
//выведем значение константы
echo HELLO;
echo "<br/>";
//объявим переменную с именем созданной константы
$const = "HELLO";
//выведем значение константы по имени из переменной
echo constant($const);
?>
Задание 11
<?php
//объявим именованную константу HELLO со следующим значением
define("HELLO","Привет, студент");
//выведем значение константы
echo HELLO;
echo "<br/>";
//объявим переменную с именем созданной константы
$const = "HELLO";
//выведем значение константы по имени из переменной
echo constant($const);
echo "<br/>";
//выведем имя текущего файла
echo "Имя файла: ".__FILE__;
echo "<br/>";
//номер строки (18)
echo "Номер текущей строки: ".__LINE__;
?>
Задание 12
<?php
$hourSec = 60*60;
echo "Секунд в часе: ".$hourSec."<br/>";
$daySec=$hourSec*24;
echo "Секунд в сутках: ".$daySec."<br/>";
$weekSec=$daySec*7;
echo "Секунд в неделе: ".$weekSec."<br/>";
?>
Задание 13
<?php
$i=4;
$j=4;
//значение $v будет равно 4, поскольку постинкремент выполнится после присваивания значения переменной $v;
$v = $i++;
echo $v;
echo "<br/>";
//значение $z будет равно 5, поскольку преинкремент выполнится сразу же
$z = ++$j;
echo $z;
?>
Задание 14,16
<?php
if (!empty($_POST['op1'])) {
//приведение строк к целочисленным значениям (int)
$a = (int) $_POST['op1'];
$b = (int) $_POST['op2'];
//выполнение заданной операции
switch ($_POST['action']) {
//сложение
case "sum":
$res = $a+$b;
break;
//вычитание
case "sub":
$res = $a-$b;
break;
//умножение
case "multiply":
$res = $a*$b;
break;
//деление с проверкой на 0
case "divide":
if ($b == 0) {
$res = "inf";
} else {
$res = (int) $a/$b;
}
break;
//ошибка
default:
$res = "Error";
}
} else {
$res = '';
}
echo $res;
?>
Задание 17
<?php
//цикл от 1 до 10
for($i=1;$i<11;$i++) {
echo "Строка ".$i."<br/>";
}
?>
<?php
//цикл от 1 до 10
for($i=1;$i<11;$i++) {
echo "Строка ".$i."<br/>";
}
?>
Задание 18
<?php
//деление a/b
$a = 10;
for ($b=-5;$b<=5;$b++) {
//если b равно нулю - сразу переходим к следующей итерации
if ($b==0) continue;
//выводим результат деления
echo "$a/$b=".($a/$b);
echo "<br>";
}
Задание 19
<?php
//вывод информации о php
phpinfo();
?>
Задание 20
<?php
//захэшированный пароль - 123123
if (md5($_POST['pass']) == '4297f44b13955235245b2497399d7a93') {
echo "authorized";
} else {
echo "wrong password";
}
?>
Задание 21
<?php
function toLower($str) {
echo "В нижнем регистре: " . strtolower($str) . "<br/>";
}
function toUpper($str) {
echo "В верхнем регистре: " . strtoupper($str) . "<br/>";
}
//вызываем пользовательские функции и передаем туда аргумент - строку из формы
toLower($_POST['string']);
toUpper($_POST['string']);
?>
Задание 22
<?php
function firstToUpper($str) {
echo "Первая буква верхнем регистре: " . ucfirst($str) . "<br/>";
}
//вызываем пользовательские функции и передаем туда аргумент - строку из формы
firstToUpper($_POST['string']);
?>
Задание 23
<?php
function firstInWordToUpper($str) {
echo "Первая буква каждого слова в верхнем регистре: " . ucwords($str) . "<br/>";
}
//вызываем пользовательские функции и передаем туда аргумент - строку из формы
firstInWordToUpper($_POST['string']);
?>
Задание 24
<?php
//передача аргумента по ссылке
function firstInWordToUpperByRef(&$str) {
$str = ucwords($str);
}
//вызываем пользовательские функции и передаем туда аргумент - строку из формы
firstInWordToUpperByRef($_POST['string']);
//выводим результат
echo "Первая буква каждого слова в верхнем регистре: " . $_POST['string'] . "<br/>";
?>
Задание 25
<?php
//значение $flag, если не передано в функцию = true
function transform($str, $flag = true) {
if ($flag) {
echo "В верхнем регистре: " . strtoupper($str) . "<br/>";
} else {
echo "В нижнем регистре: " . strtolower($str) . "<br/>";
}
}
//вызываем пользовательские функции и передаем туда аргумент - строку из формы, не передаем $flag
transform($_POST['string']);
?>
Задание 26
<?php
include('20_script.php');
?>
Задание 27
<?php
include_once('20_script.php');
//этот инклюд уже не сработает
include_once('20_script.php');
?>
Задание 28
<?php
//отличается от include тем, что скрипт не завершает работу в случае отсутствия подключаемого файла
require('20_script.php');
?>
Задание 29
<?php
require_once('20_script.php');
?>
Задание 30
<?php
// Задание 30 - проверка существования функции
include("function.php");
// если функция существует, то она существует
if (function_exists("myfunction")) {
echo "Функция myfunction существует";
// если функция не существует, то она не суще
} else {
echo "Функция myfunction не существует";
}
?>
Задание 31
<?php
// Задание 31 - определение элементов массива
// одномерный массив
$days = array(
1 => "Понедельник",
2 => "Вторник",
3 => "Среда",
4 => "Четверг",
5 => "Пятница",
6 => "Суббота",
7 => "Воскресенье"
);
// двумерный массив
$disciplines = array(
"Пятница" => array(
"13.00" => "Лекция БЖД",
"14.45" => "Лекция СТМО"
)
);
if (is_array($disciplines)) {
echo "disciplines является массивом";
} else {
echo "disciplines не является массивом";
}
?>
Задание 32
<?php
// Задание 32 - использование цикла foreach для вывода массива
foreach ($days as $key => $value) {
print "$key-й день недели - $value <br>";
}
?>
Задание 33
<?php
// Задание 33 - расширение массива
$capitals["Australia"] = "Canberra";
$capitals["Russia"] = "Moscow";
$capitals["Belarus"] = "Minsk";
$capitals["Ukraine"] = "Kiev";
$capitals["Israel"] = "Jerusalem";
$capitals["USA"] = "Washington";
$capitals["Germany"] = "Berlin";
$capitals["France"] = "Paris";
$capitals["UK"] = "London";
$capitals["Iran"] = "Tegeran";
foreach ($capitals as $key => $value) {
print "Столица $key - $value <br>";
}
?>
Задание 34
<?php
// Задание 34 - вывод количества элементов массива
$capitals["Australia"] = "Canberra";
$capitals["Russia"] = "Moscow";
$capitals["Belarus"] = "Minsk";
$capitals["Ukraine"] = "Kiev";
$capitals["Israel"] = "Jerusalem";
$capitals["USA"] = "Washington";
$capitals["Germany"] = "Berlin";
$capitals["France"] = "Paris";
$capitals["UK"] = "London";
$capitals["Iran"] = "Tegeran";
echo "Количество элементов в массиве capitals - ".count($capitals);
?>
Задание 35
<?php
// Задание 35 - сортировка массива с помощью функции sort()
$days = array(
1 => "Понедельник",
2 => "Вторник",
3 => "Среда",
4 => "Четверг",
5 => "Пятница",
6 => "Суббота",
7 => "Воскресенье"
);
sort($days);
foreach ($days as $key => $value) {
print "$key - $value <br>";
}
?>
Задание 36
<?php
// Задание 36 - сортировка массива с помощью функций sort() и asort()
$capitals["Australia"] = "Canberra";
$capitals["Russia"] = "Moscow";
$capitals["Belarus"] = "Minsk";
$capitals["Ukraine"] = "Kiev";
$capitals["Israel"] = "Jerusalem";
$capitals["USA"] = "Washington";
$capitals["Germany"] = "Berlin";
$capitals["France"] = "Paris";
$capitals["UK"] = "London";
$capitals["Iran"] = "Tegeran";
$capitals2 = $capitals;
sort($capitals);
asort($capitals2);
echo "Массив, отсортированный с помощью sort():<br>";
foreach ($capitals as $key => $value) {
print "$key - $value <br>";
}
echo "Массив, отсортированный с помощью asort():<br>";
foreach ($capitals2 as $key => $value) {
print "$key - $value <br>";
}
// Функцию asort стоит применять при сортировке ассоциативных массивов,
// если требуется сохранить его ключи. Функция sort ключи не сохраняет.
?>