Веб-программирование с азов: Урок 2

Сегодня мы рады представить вашему вниманию второй урок по веб-программированию для начинающих, для тех, кто совсем ничего не понимает в этом, но очень хочет научиться создавать свои веб-приложения. Если после прочтения статьи у вас появятся вопросы, не стесняйтесь оставлять их в комментариях — Борис Надыкто, автор учебного курса, обязательно поможет вам разобраться.

Веб-программирование

Итак, мы продолжаем наш курс по веб-программированию. Надеюсь, все сумели выполнить задание, а кто не сумел, тому ответ:

< ?php function maxer($num1,$num2) { print ("$num1 > $num2 = ");
$pirint=$num1>$num2;
print $pirint;
}
maxer (10,15);
maxer (17,76);
maxer (80,70);
?>

А теперь к теме урока. Сегодня мы узнаем о практическом применении рекурсии, о GET и POST, о том, что такое API, выучим тему управляющих конструкций и попытаемся создать первую практичную программу, которая поможет мистеру Чедвику взять кредит на MacBook Pro Retina. Все, кто читал первый урок, помнят что я обещал показать все функции PHP. Но так как PHP имеет огромное количество подключаемых функций, то писать их список дело не благодарное, тем более, что обо всех функциях PHP вы можете узнать по этому адресу.

1. Управляющие конструкции

1.1

while — все, что находится внутри цикла, исполняется до тех пор, пока условие верно:

while условие
{
//Код
}

1.2

do-while — проверяет условие после исполнения:

do
{
//Код
}
while условие

1.3

for — цикл. Первое выражение всегда вычисляется (выполняется) только один раз в начале цикла. В начале каждой итерации оценивается выражение 2. Если оно принимает значение TRUE, то цикл продолжается, и вложенные операторы будут выполнены. Если оно принимает значение FALSE, выполнение цикла заканчивается. В конце каждой итерации выражение 3 вычисляется (выполняется).

for ($1=0;$1<100;$1++)
{
//Этот код исполнится 99 раз
}

1.4

foreach — цикл, который перебирает элементы массива.

1.5

break — останавливает выполнение цикла или другой УК.

for ($1=1;$1<100;$1++)
{
//Этот код исполнится 99 раз
break;
echo I;
//Ничего не произойдет, так как цикл будет остановлен УК break
}

1.6

continue — пропускает все оставшиеся функции цикла и переходит к началу.

for ($1=1;$1<100;$1++)
{
//Этот код исполнится 99 раз
echo I;
//1 будет выведен
continue;
echo 2;
//2 не будет выведено, так как началось выполнение цикла с начала
}

1.7

switch — позволяет пропустить if. Как Вы видите, если УК switch() было принято «яблоко», то исполняется тот фрагмент, где результат проверки case вернет TRUE.

switch ($i) {
    case "яблоко":
        echo "i это яблоко";
        break;
    case "груша":
        echo "i это груша";
        break;
    case "вишня":
        echo "i это вишня";
        break;

1.8

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

function func ($i)
{
return 10*$1;
}

Теперь, если мы вызовем функцию, она вернет результат умножения заданного числа на 10:

$j=func(2);

В j будет заложен return функции, который равен результату умножения, который равен 20.

1.9

require — включение какого-либо файла в программу.

Допустим, вы разрабатываете программы для работы с шифрованием файлов. Вы создали уникальную функцию для работы с шифром. Теперь вы сохраняете ее в файл и можете из других скриптов ее использовать. Доступны все ресурсы «инклюдаемого» скрипта (функции, переменные, классы).

Пример:

Файл "Gigafunction.php"
< ?php function gigafunc ($i) { $mega=$i*2; } ?>
Файл "includer.php"
< ?php include 'Gigafunction.php'; gigafunc (6); echo $mega; ?>
include-См. require
require_ once
include_ once

1.10

goto — переходит к какой-либо строчке с пропуском строк между ним и нужной строчкой.

echo 1;
goto 4;
echo 2;
echo 3;
// 1,3 будет выведено, так как echo 2; пропущено.

1.11

if… else — если значение после if верно, то исполняется то, что в {} после if, если нет, то после else.

If условие
{ // Код для исполнения в случае верности условия}
else
{//В случае неверности условия}

2. Рекурсия.

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

< ?php function factory($n) {    if(!$n)    {       return("Факториал числа $n не существует.");    }    else    {       if($n <= 1){return 1;}       return $n * factory($n-1); // здесь происходит повторный вызов функции    } } echo factory(5); // 120 ?>

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

3. GET и POST

Схема 1

Часто нам нужно обмениваться информацией между разными частями вашего сайта. Для этого используются GET- и POST-запросы. Допустим, у нас есть HTML(1)-форма для ввода информации. Как скрипту, например, для регистрации определить, что введено? От HTML-формы отправляется GET- или POST-запрос скрипту. Наверное, все замечали в адресах иногда есть ?$1=1 или другие PHP-штуки после «?». Вот это и есть GET-запрос. POST-запрос вы не увидите, так как он передается в теле HTTP(2)-запроса. Для того, чтобы скрипт получил значения запроса, в PHP есть предустановленные переменные: $_GET,$_POST.

4. API

Схема 2

Когда научитесь создавать веб-приложения, тогда вы поймете, что очень часто нам требуется получать информацию с других ресурсов. Реализовать получение, например, курса доллара с сайта Центробанка нам и помогает API. Смысл в том, что когда программа обращается GET-запросом к API-скрипту, она получает какой-либо ответ от страницы, на которой находится скрипт API.

Пример: site.ru/api.php?$need=report&$token=128383883.

5. Приложение

А теперь пришла пора писать свое приложение! Базу мы знаем, а функции посмотрим на php.net. Внимание! Пример API, с которым происходит взаимодействие в скрипте утрирован. Работу настоящего API на примере VK.com API, мы разберем в статье «Хранение и безопасность информации».

Задача такова.

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

Тех. подробности:

Адрес сайта: bank.ph;
Адрес API: bank.ph/api.php;
API: есть;
Структура файла:

Схема 3

Дату мы получаем в месяцах.
Формат возврата информации при обращении к API: XML(3)- файл. Алгоритм работы:

Схема 4


< ?php  создание нового cURL ресурса $ch = curl_init(); // установка URL и других необходимых параметров curl_setopt($ch, CURLOPT_URL, "https://www.bank.ph/api.php?$operation=infoofcered&user=Chedvik&password=Qwerty&id=3838838"); curl_setopt($ch, CURLOPT_HEADER, 0); // завершение сеанса и освобождение ресурсов curl_close($ch);   $dom = new domDocument("1.0", "utf-8"); // Создаём XML-документ версии 1.0 с кодировкой utf-8   $dom->load("credit.xml");
// Загружаем XML-документ из файла в объект DOM
  $root = $dom->documentElement;
// Получаем корневой элемент
  $childs = $root->childNodes;
// Получаем дочерние элементы у корневого элемента
  /* Перебираем полученные элементы */
  for ($i = 0; $i < $childs->length; $i++) {
    $user = $childs->item($i);
// Получаем следующий элемент из NodeList
    $lp = $credi->childNodes;
// Получаем дочерние элементы у узла "credit"
  $data_give = $lp->item(0)->nodeValue;
 // Получаем значение узла "data_give"
    $gata_get = $lp->item(1)->nodeValue;
 // Получаем значение узла "data_get"
$prc = $lp->item(2)->nodeValue;
// Получаем значение узла "prc"
$sume=$lp->item(3)->nodeValue;
// Получаем значение узла $sume
$timemonth=$data_get-$data_give;
//Получаем срок, на который выдан кредит в месяцах.
$prodev=$prc/100;
//Выполняем часть мат. операций;
$sumpermon=$sume*$prodev;
//Получаем сумму за один месяц
$sumofproc=$sumpermon*$timemonth;
$allsume=$sumofproc+$sume;
echo "Вы должны будете выплатить $sumofproc процентов и $allsume всего";
?>

Короткий FAQ:

Q:Что мы будем проходить на следующем уроке?

A: Вопросы безопасности, и посмотрим на уже готовые скрипты, чтобы не изобретать велосипед.

Домашнее задание:

Создайте программу с возможным практическим применением, содержащим цикл.

Примечания:
1: HTML — язык разметки веб-страниц, все необходимые функции которого мы будем учить.
2:HTTP — основной протокол обмена данными в Интернете.
3.XML — стандарт текстовых файлов с очень четким синтаксисом.

Борис Надыкто

Разработка приложений для iOS