Мастер-класс в МГИМО 31.11.2014.

Создание и публикация сайта в интернете - полный цикл.


Теория

Совсем чуть-чуть: http://an2k.ru/?q=node/118


Задача

Создать систему регистрации присутствия студентов на занятиях


Техническое задание (ТЗ)

Требования

  1. студент должен на сайте, написать свою фамилию и нажать кнопку "Запись";
  2. система должна зафиксировать присутствие данного студента;


Спецификации

Domen: aut.an2k.ru
Зона DNS: pdd.ya.ru
Host: 176.9.152.239


Форма

Состав:
Поле для ввода: ФИО
Кнопка "Запись"


База данных

Имя базы: reg_students
Состав: одна таблица
Имя таблицы: list_students
Состав полей:
ФИО студента: fio

 

Журнал работ


0. Применяемые технологии

LAMP
т.е.
Linux
Apache
MySQL
PHP
и
DNS

 

1. Domen и DNS

a) На nic.ru [экаунт: 385646 ] регистрируем домен an2k.ru
и делегируем его на  dns1.yandex.net
изменения вступают в силу в течении нескольких часов, иногда дней.

b) На pdd.ya.ru в зоне an2k.ru добавляем
запись типа A субдомен aut IP 176.9.152.239
изменения вступают в силу для доменов 2-го уровня в течении нескольких часов,
а для субдоменов (т.е. доменов 3-го и последующих уровней) немедлено.

c) На хосте 176.9.152.239 под рутом редактируем файл /etc/apache2/sites-available/allsites
если его нету - создаем (директория эта обязательно, а имя файла может быть любым) и добавляем в него строки:

<VirtualHost *:80>
    ServerName aut.an2k.ru
    DocumentRoot /home/an2k/www/reg_students/
    DirectoryIndex index.php index.html
    AddDefaultCharset UTF8
</VirtualHost>

проверяем, чтобы ссылка с этого файла была в этой директории: /etc/apache2/sites-enabled
если нету - создаем;

перезагружаем Апач, чтобы изменения вступили в силу:
service apache2 restart


2. Cоздание БД и таблицы

Используя putty и mysql-клиент

putty

mysql --default-character-set=utf8 -uroot -p

create database db_reg_students COLLATE utf8_general_ci;

GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER  ON db_reg_students.*  TO 'usr_mysql'@'localhost' IDENTIFIED BY 'usr_mysql_passw';

use db_reg_students

create table list_students (fio char(64));

3. В своем хоме на сервере в папке www создадим новую папку для нового проекта, назовем ее reg_students и перейдем в нее:

mkdir ~/www/reg_students
cd ~/www/reg_students


4. Создание файла index.php

В ранее созданной директории проекта создаем файл index.php, используя cat

cat > index.php

<?php // index.php - Страница регистрации присутствия студентов на занятиях
 
// объявление переменных
$ok  = "" ;
$err = "" ;
 
// ловим данные отправленные из формы
if ( isset ( $_GET['buttn'] ) ) { // если нажата кнопка
 
  // если поле fio непусто и содержит только буквы русского алфавита
  if ( $fio = ereg_replace (
                "[^йцукенгшщзхъёфывапролджэячсмитьбю ЁЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ]",
                "",
                $_GET['fio'] ) ) {
 
    // подключаем PHP к mysql DB
    mysql_pconnect ( "localhost", "dbusr", "dbpsw" ) ;
    mysql_select_db( 'dbname' ) ;
 
    // устанавливаем кодировку utf8
    mysql_query ( "SET  character_set_connection = 'utf8'" ) ;
    mysql_query ( "SET  character_set_results = 'utf8'" ) ;
    mysql_query ( "SET  character_set_client = 'utf8'" ) ;
 
    // формируем запрос
    $sql = "insert to list_students values( '" . $fio . "' )" ;
 
    // выполняем запрос к базе MYSQL средствами PHP
    // если запрос не выполнился - будет выдана ошибка
    if ( mysql_query ( $sql ) ) $ok = true ;
    else $err = "Error=$sql=" 
 
  }
  else { // если после очистки $fio пусто
    $err = "Вы забыли вписать свои ФИО или использовали символы нерусского алфавита." ;
  }
}
 
?>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Регистрации присутствия студентов на занятиях</title>
</head>
 
<body>
 
<h1>Регистрация студента на занятии</h1>
<?php
if ( $ok ) echo "<h3>Регистрация завершена успешно.</h3>" ;
elseif ( $err ) echo "<h4>" . $err  "</h4> <a href=\"JavaScript:history.back\">Назад</a>" ;
else {
?>
  <form action="index.php">
    ФИО студента: <input type="text" name="fio">
    <input type="submit" name="buttn" value="Запись">
  </form>
 
<? } ?>
</body>
</html>
 
Ctrl z - прерывание ввода в index.php

 


5. Тестирование

a) в браузере: http://aut.an2k.ru
вводим несколько фамилий на русском языке

b) на сервере
mysql -pusr_mysql_passw -uusr_mysql --default-character-set=utf8 db_reg_students

select * from list_students;

в таблице должны быть те фамилии, которые вводили в браузере.

Вот как-то так.

 

PS: текст на бледно-зеленом фоне вводится в командной строке Линукса, а на бледно-голубом - в mysql-клиенте.

 

Ролик иллюстрирует этот текст. Здесь все то-же, только в динамике и с комментами моим голосом.

Комментарии

Модернизировать проект "Саморегистрация студентов на занятиях"

Дополнительные требования:

  1. Добавить в таблицу поле главного индекса с автоинкрементом.
  2. Регистрировать в БД дату и время входа студента в систему.
  3. Предложить студенту вводить пароль.
  4. Предложить студенту вводить номер пары.
  5. Название предмета.
Все выложить на форуме  http://lmsold.an2k.net