PRIMARY KEY после имени столбца определяет, что этот столбец является первичным ключом для таблицы. Данные в этом столбце должны быть уникальными. MySQL автоматически индексирует этот столбец. Автоматический индекс по первичному ключу сберегает индекс, требуемый AUTO_NCREMENT.
Указывать PRIMARY KEY после названия столбца следует лишь тогда, когда мы имеем дело с первичным ключом в виде одиночного столбца. Альтернативным вариантом является конструкция PRIMARY KEY в конце описания таблицы order_items. В последнем случае первичный ключ включает два столбца.
UNSIGNED после целочисленного типа означает, что его значение может быть либо положительным, либо нулевым.
На рисунке 2.15 показан результат обработки подключаемого файла SQL.
Для просмотра созданных таблиц в базе данных нужно ввести команду SHOW TABLES (рисунок 2.16):
Команда DESCRIBE дает возможность увидеть дополнительную информацию по конкретной таблице (рисунок 2.17)
Эти команды полезны, если требуется вспомнить, какие типы столбцов используются.
Рассмотрим создание страниц приложения на примере главной страницы модуля сайта "Интернет технологии". Скелет страницы состоит из заголовочной части, таблицы из двух столбцов, в левой части которой располагается форма регистрации и кнопка входа на страницу тестирования и кнопка входа в чат, в правой отображается основное содержимое страницы, гостевой книги, находящейся сразу под основной таблицей и нижней части со ссылкой на страницу входа в администрирования. (Рисунок 2.18)
Рисунок 2.18 - скелет главной страницы
Все скрипты PHP заключаются в скобки <? и? >. Язык позволяет формировать страницы из нескольких отдельных составляющих. Для этого используются функции include и require. Например, скрипт
<? include "all. php"? >
Делает доступными для страницы все функции подключенные в этом файле.
<? doheader(‘Интернет технологии);? >
Включает в страницу функцию doheader(), отображающую заголовочную часть с логотипом и названием сайта. (Рисунок 2. 19)
Рисунок 2. 19 - заголовочная часть
Следующая часть кода выводит кнопки навигации по дисциплинам, отображенным на рисунке 2. 20:
<? do_buttons()? >
function do_buttons() // Кнопки
{
? >
<center><table width="100%" cellpspacing=6>
<td class="bor" align="center" width="25%">
<a href="InternetTechnology. php? mode=enter">
<font size="4" сolor="#0000FF">Введение</font></a></td>
<td class="bor" align="center" width="25%">
<a href="InternetTechnology. php? mode=lections">
<font size="4" color="#0000FF">Лекции</font></a></td>
<td class="bor" align="center" width="25%">
<a href="InternetTechnology. php? mode=labs">
<font size="4" color="#0000FF">Лабораторные работы</font></a></td>
<td class="bor" align="center" width="25%">
<a href="InternetTechnology. php? mode=ind">
<font size="4" color="#0000FF">Контрольные работы</font></a></td>
</table></center>
<?
}, где MODE указывает основной части таблицы на то, что должно выводиться.
Рисунок 2.20 - кнопки навигации по дисциплинам
Затем в левой части таблицы выводится форма регистрации и кнопки тестирования и чата. (Рисунок 2.21)
<?
echo"<form action=login. php method=post>";
echo"<br><table width=155 bgcolor=$color1 border=2 bordercolor=darkblue cellpadding=3><tr><td><font color=blue><b>Войти в систему</b></font><hr color=#ff9900>
Ник<br><input type=text name=login><br>
Пароль</font><br><input type=password name=password><br><input type=submit name=submit value='Вход'><br>
<a href=InternetTechnology. php?
mode=register>Регистрация</a></td></tr></table>";
echo "</form>";
echo"<br><table width=155 bgcolor=blue border=2
bordercolor=darkblue><tr><td align=center><a href=exam. php><font color=white size=+1>Тестирование</font></a></td></tr></table>";
echo"<br><table width=155 bgcolor=blue border=2 bordercolor=darkblue><tr><td align=center><a href=chat. php><font color=white size=+1>Общение</font></a></td></tr></table><br>"
? >
Рисунок 2.21 - левая часть страницы с формой входа и кнопками
Здесь echo"<form action=login. php method=post>"; означает что данные формы входа будут посланы модулю проверки данных login. php. Метод POST отличается от метода GET тем, что при использовании метода GET значения полей присоединяются к URL, указанному в атрибуте ACTION.
Далее в правой части выводится основная часть страницы, выбранная пользователем с помощью кнопок навигации. (С помощью переменной MODE).
switch($mode)
{
case 'register': // подключить модуль регистрации
include('register_user. php');
break;
case 'enter': // Модуль введения
$pagegb='Интернет_технологии'; // Эта переменная указывает гостевой книге // индентификатор страницы.
include('InternetTechnology\enter. php');
break;
case 'lections': // Подключить модуль лекции
$pagegb='Лекции';
include('InternetTechnology\lections. php');
break;
case 'labs':
$pagegb='Лабораторные_работы'; // Подключить модуль Лабораторные работы
include('InternetTechnology\labs. php');
break;
case 'ind': //// Подключить модуль контрольные работы
$pagegb='Индивидуальные_задания';
include('InternetTechnology\ind. php');
break;
default:
include('InternetTechnology\enter. php'); // по умолчанию подключить модуль введение
break;
}
Модули, подключаемые в этой части имеют вид:
<?
Текстовый материал с использованием тегов логического и физического форматирования текста.
? >
Затем, ниже основной таблицы, выводится гостевая книга, относящаяся к данной странице. (Рисунок 2.22)
<? include('gb. php');? >
Просто подключается модуль гостевой книги 'gb. php', который в свою очередь включает модуль посылки сообщений: ‘postmodule. php’, который также используется на странице чата.
Рисунок 2.22 - модуль гостевой книги
Ниже вызовом функции doout(), выводится нижняя часть изображения со ссылкой на страницу входа в администрирование. (Рисунок 2.23)
Рисунок 2.23 - нижняя часть страницы
Общий вид главной страницы модуля сайта по дисциплине "Интернет технологии" со значением переменной MODE равной lections (Лекции) приводится на рисунке 2.24.
Рисунок 2.24 - страница лекции
HTTP иногда называют "протоколом без состояния". Это означает, что данный протокол не имеет встроенного способа поддержки состояния между двумя транзакциями. Когда пользователь запрашивает друг за другом две страницы, HTTP не обеспечивает возможности уведомить, что оба запроса исходят от одного и того же пользователя.
Таким образом, идея управления сеансами заключается в обеспечении отслеживания пользователя в течение одного сеанса связи с Web-сайтом.
Если это удастся осуществить, мы сможем легко поддерживать подключение пользователя и предоставление ему содержимого сайта в соответствии с его уровнем прав доступа или персональными настройками. Мы сумеем отслеживать поведение пользователя.
Для запуска сеанса в РНР используется уникальный идентификатор сеанса, представляющий собой зашифрованное случайное число. Идентификатор сеанса генерируется РНР и сохраняется на стороне клиента в течение всего времени жизни сеанса. Для хранения идентификатора сеанса используется либо cookie-набор на компьютере пользователя, либо URL.
Идентификатор сеанса играет роль ключа, обеспечивающего возможность регистрации некоторых специфических переменных в качестве так называемых переменных сеанса. Содержимое этих переменных сохраняется на сервере. Единственной информацией, "видимой" на стороне клиента, является идентификатор сеанса. Если во время определенного подключения к вашему сайту идентификатор сеанса является "видимым" либо в cookie-наборе, либо в URL, имеется возможность получить доступ к переменным сеанса, которые сохранены на сервере для данного сеанса. По умолчанию переменные сеанса хранятся в двумерных файлах на сервере (при желании способ хранения можно изменить и использовать вместо двумерного файла базу данных, но для этого потребуется написать собственную функцию).
Скорее всего, придется иметь дело с Web-сайтами, на которых для хранения идентификатора сеанса используется URL. Если в вашем URL имеется строка данных, которые выглядят случайными, то это, скорее всего, свидетельствует об использовании одной из двух описанных здесь разновидностей управления сеансом.
Другим решением проблемы сохранения состояния на протяжении некоторого количества транзакций, при наличии чистого внешнего вида URL, являются cookie-наборы.