Регистрация переменных сессии

ОТЧЕТ ПО ПРАКТИКЕ

по предмету

Wed-технологии и Wed-дизайн

 

 

Выполнил студент группы П-33

Ключник А. А.____________

Руководитель

Толкачев А.В.___________

 

 

Оценка__________

Дата __________

 

 

2013

ЗАДАНИЕ НА ПРАКТИКУ

По дисциплине: Wed-технологии и Wed-дизайн

 

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

 

ПРОЕКТИРОВАНИЕ ЗАДАНИЯ

Для выполнения данного задания нами был использован скриптовый язык программирования общего назначения – PHP .

Была изучена:

1) Работа с Базами Данных:

В PHP реализована возможность использования баз данных.

В настоящее время PHP поддерживает следующие базы данных: Oracle, Adabas D, Sybase, FilePro, mSQL, Velocis, MySQL, Informix, Solid, dBase, ODBC, Unix dbm, PostgreSQL. Список постоянно расширяется разработчиками. Нами была изучена работа с MySQL.

Соединение с сервером БД

Осуществляется при помощи функции mysql_connect: $connect = mysql_connect(<хост>, <логин>, <пароль>); По умолчанию, на mysql-сервере в таблице пользователей есть пользователь root, который может иметь доступ только с localhost-а, то бишь с того же самого компьютера, где стоит сервер mysql. ВНИМАНИЕ! "Иметь доступ с localhost-а" значит, что доступ имеет скрипт PHP, а вы можете обращаться к нему с любого другого компьютера.

С началом выполнения скрипта, php выделяет в своей памяти место для информации о нём и его переменных. В информации о выполняемом скрипте хранится, в том числе, и информация о соединениях с базами данных. Переменная $connect - указатель на место, где данная информация хранится. Переменная используется на случай, если для работы необходимо использовать несколько серверов баз даннях

 

Запрос-выборка и обработка результатов

Механизм работы функций запросов к БД такой же, как и у функции соединения: функции передаются параметры запроса и (если надо) соединения, а результат записывается в переменную:

$result = mysql_db_query(string база данных, string запрос [, переменная соединения]);

или

$result = mysql_query(string запрос [, переменная соединения]);

Чтобы использовать функцию mysql_query, в которой база данных не указывается, надо предварительно выбрать используемую базу данных:

mysql_select_db(string база данных);

Теперь есть переменная $result. Это указатель на результат выполнения запроса. В нем содержатся строки таблицы. Получить эти строки можно через функции mysql_fetch_row и mysql_fetch_array:

echo "<table>";
while ($row = mysql_fetch_array($result))
echo "<tr><td>", $row["field1"], "</td><td>", $row["field2"], "</td></tr>";
echo "</table>";

 

Функция mysql_fetch_array выдаёт в указанную переменную (в данном случае $row) массив, индексы которого - имена полей (причём, если в списке полей запроса пишется table.field, то индекс массива будет field). mysql_fetch_row выдаёт массив, индексы которого - числа, начиная с 0.

Если запрашивается звёздочка, т.е. все поля таблицы, а выводить поля нужно в определённой последовательноси (когда, например, у таблицы рисуется шапка), лучше пользоваться mysql_fetch_array. Если запрашивается одно-два-три поля, чётко зная их последовательность, можно делать mysql_fetch_row - это уменьшит объем кода программы.

 

Запросы-действия

Это команды DELETE и UPDATE. Отправка команды серверу происходит тем же способом - mysql_query (mysql_db_query). Но в данном случае функция не возвращает результата:

$result = mysql_query("SELECT * FROM sometable");
но
mysql_query("DELETE FROM sometable WHERE id=...");

Соответственно, если выполнится запрос-выборка и не запишется результат в переменную, данные не будут храниться нигде.

 

 

Обработка ошибок запросов

Сообщение о последней ошибке можно получить через функцию mysql_error:

echo "Ошибка базы данных. MySQL пишет:", mysql_error();

Если результат функции пишется в переменную, можно проверить её:

$result = mysql_query($request);
if (!$result)
echo "Ошибка базы данных. MySQL пишет:", mysql_error();
else {
echo "<table>";
while ($row = mysql_fetch_array($result))
echo "<tr><td>", $row["field1"], "</td><td>", $row["field2"], "</td></tr>";
echo "</table>";
};

Если в переменную не пишем, то так:

$request = "UPDATE (...)";
mysql_query($request);
if (!mysql_error())
echo "Обновление данных прошло успешно!";
else echo "Ошибка базы данных. MySQL пишет:", mysql_error();

 

Если запрос генерируется автоматически, можно выводить и сам запрос (полезно создавать переменную, которая бы его содержала, и использовать её в качестве параметра функции).

2) Работа с сессиями и cookie
Сессии и cookies предназначены для хранения сведений о пользователях при переходах между несколькими страницами. При использовании сессий данные сохраняются во временных файлах на сервере. Файлы с cookies хранятся на компьютере пользователя, и по запросу отсылаются броузером серверу.

При работе с сессиями различают следующие этапы:

● открытие сессии

● регистрация переменных сессии и их использование

● закрытие сессии

Открытие сессии

Самый простой способ открытия сессии заключается в использовании функции session_start, которая вызывается в начале PHP-сценария:

session_start();

 

Эта функция проверяет, существует ли идентификатор сессии, и, если нет, то создает его. Если идентификатор текущей сессии уже существует, то загружаются зарегистрированные переменные сессии.

Регистрация переменных сессии

После инициализации сессии появляется возможность сохранять информацию в су-перглобальном массиве $_SESSION. Пусть имеется файл index.php в котором в массив $_SESSIONсохраняется переменная и массив.

<?php

// Инициируем сессию

session_start();

// Помещаем значение в сессию

$_SESSION['name'] = "value";

// Помещаем массив в сессию

$arr = array("first", "second", "third");

$_SESSION['arr'] = $arr;

// Выводим ссылку на другую страницу

echo "<a href='other.php'>другая страница</a>";

?>

Закрытие сессии

После завершения работы с сессией сначала нужно разрегистрировать все переменные сессии, а затем вызвать функцию unset():

unset($_SESSION["username"]);

 

Cookies - это текстовые строки, хранящиеся на стороне клиента, и содержащие пары "имя-значение", с которыми связан URL, по которому броузер определяет нужно ли посылать cookies на сервер.

 

Установка cookies

Установка cookies производится с помощью функции setcookie:

Setcookie

bool setcookie (string name [, string value [, int expire [, string path
[, string domain [, int secure]]]]])

 

Эта функция имеет следующие аргументы:

name - имя устанавливаемого cookie;

value - значение, хранящееся в cookie с именем $name;

expire - время в секундах с начала эпохи, по истечение которого текущий cookie становится недейтвительным;

path - путь, по которому доступен cookie;

domain - домен, из которого доступен cookie;

secure - директива, определяющая, доступен ли cookie не по запросу HTTPS. По умолчанию эта директива имеет значение 0, что означает возможность доступа к cookie по обычному запросу HTTP.

При работе с cookies необходимо учитывать важный момент, заключающийся в том, что cookie надо обязательно устанавливать перед отправкой в броузер каких-либо заголовков, поскольку сами cookies устанавливаются в виде заголовков. Поэтому если установить cookies после какого-либо текста, отправляемого в броузер, то возникнет ошибочная ситуация.