ресурс для начинающих веб-разработчиков
комплексные веб-услуги по созданию сайтов

Справочный материал по основным языкам программирования и верстки сайтов.

Готовая методика создания простых и сложных динамичных сайтов, с использованием PHP и MySQL.

Использование веб-редактора Adobe Dreamweaver в разработке сайтов.

Использование графических редакторов Adobe Flash, Adobe Photoshop, Adobe Fireworks в подготовке веб-графики.

Разработка веб-сайтов под "ключ".

Разработка отдельных фрагментов сайтов, консультации по вопросам верстки веб-страниц и веб-программирования.

Вход в систему. Выход из системы

Вход в систему

После того как пользователи внесут свои данные в форму (login.php) и отправят ее, должен запуститься сценарий member.php. Этот сценарий обеспечивает вход в систему. Кроме того, этот же сценарий отображает связанные с пользователями закладки. Это основная функциональность оставшейся части приложения.

member.php — этот сценарий является основой приложения

<?php
// Включить файлы функций для данного приложения
require_once('bookmark_fns.php');
session_start();

// Создать короткие имена переменных
$username = $_POST['username'];
$passwd = $_POST['passwd'];

if ($username && $passwd)
// Пользователь только что попытался войти в систему
{
try
{
login($username, $passwd);
// Если пользователь записан в базе данных,
// зарегистрировать его идентификатор
$_SESSION['valid_user'] = $username;
}
catch (Exception $e)
{
// Неудачный вход в систему
$title = "Проблема";
$description = "Проблема";
$keywords = "проблема";
do_html_header($title, $description, $keywords);
blok_left();
echo'<div id="blok_right">';
echo '<div class="blok_text">';
echo'<div class="text_top">';
do_html_heading('Вход в систему невозможен');
echo 'Вход в систему невозможен. '
.'Для просмотра этой страница необходимо войти в систему.';
do_html_url('login.php', 'Вход');
echo '</div></div></div>';
do_html_footer();
exit;
}
}
global $valid_user;
if (isset($_SESSION['valid_user']))
{
$title = "Домашняя страница";
$description = "Домашняя страница";
$keywords = "Домашняя страница";
do_html_header($title, $description, $keywords);
blok_left();
echo'<div id="blok_right">';
echo '<div class="blok_text">';
echo'<div class="text_top" align=left>';
do_html_heading($title);
echo 'Вы вошли в систему под именем '
.stripslashes($_SESSION['valid_user']).'.';
echo "<br>";
// Извлечь все закладки, сохраненные этим пользователем
if ($url_array = get_user_urls($_SESSION['valid_user']));
display_user_urls($url_array);

// Вывести меню опций
display_user_menu();
echo '</div></div></div>';
do_html_footer();
}
else
{
// Пользователь не вошел в систему
$title = "Домашняя страница";
$description = "Домашняя страница";
$keywords = "Домашняя страница";
do_html_header($title, $description, $keywords);
blok_left();
echo'<div id="blok_right">';
echo '<div class="blok_text">';
echo'<div class="text_top" align=left>';
do_html_heading("Проблема:");
echo "Вы не вошли в систему.<br />";
do_html_url('login.php', 'Вход');
echo '</div></div></div>';
do_html_footer();
exit;
}
?>

Логика этого сценария должна быть узнаваема, поскольку мы уже использовали в ней некоторые идеи.

Во-первых, выполняется проверка, осуществил ли пользователь переход из титульной страницы. Другими словами, заполнил ли он форму входа в систему. Затем выполняется попытка пустить пользователя в систему:

if ($username && $passwd)
// Пользователь только что попытался войти в систему
{
try
{
login($username, $passwd);
// Если пользователь записан в базе данных,
// зарегистрировать его идентификатор
$_SESSION['valid_user'] = $username;
}

Для входа в систему используется функция login(). Она содержится в библиотеке user_auth_fns.php и рассматривается ниже.

Если попытка входа в систему оказывается успешной, сеанс будет зарегистрирован, как это делалось ранее. При этом имя пользователя сохраняется в переменной сеанса valid_user.

Если все идет нормально, отображается страница зарегистрированных пользователей:

global $valid_user;
if (isset($_SESSION['valid_user']))
{
$title = "Домашняя страница";
$description = "Домашняя страница";
$keywords = "Домашняя страница";
do_html_header($title, $description, $keywords);
blok_left();
echo'<div id="blok_right">';
echo '<div class="blok_text">';
echo'<div class="text_top" align=left>';
do_html_heading($title);
echo 'Вы вошли в систему под именем '
.stripslashes($_SESSION['valid_user']).'.';
echo "<br>";
// Извлечь все закладки, сохраненные этим пользователем
if ($url_array = get_user_urls($_SESSION['valid_user']));
display_user_urls($url_array);

// Вывести меню опций
display_user_menu();
echo '</div></div></div>';

Эта страница также формируется функциями вывода. Можно заметить, что в ней используется несколько новых функций — get_user_urls() из файла url_fns.php и display_user_urls() из файла outputjns.php.

Функция get_user_urls() извлекает закладки пользователя из базы данных, а display_user_urls() отображает закладки в браузере.

Код этих двух функцийбудет рассмотрен во время обзора процесса хранения и извлечения закладок.

Сценарий member.php завершает страницу отображением меню с использованием функции display_user_menu().

Пример вывода сценария member.php показан на рисунке.

Сценарий member.php проверяет, вошел ли пользователь в систему, извлекает и отображает его закладки, а затем выводит меню

Теперь более подробно рассмотрим функции login() и check_valid_user().

Функция login() библиотеки user_auth_fns.php — проверяет сведения о пользователе в базе данных

function login($username, $password)
// Проверяет наличие имени пользователя и пароля в базе данных.
// Если они там содержатся, возвращается значение true,
// в противном случае генерируется исключение.
{
// Подключиться к базе данных
$conn = db_connect();

// Проверить уникальность имени пользователя
$result = $conn->query("select * from user
where username='$username'
and passwd = sha1('$password')"
);
if (!$result)
throw new Exception('Вход в систему невозможен');

if ($result->num_rows > 0)
return true;
else
throw new Exception('Вход в систему невозможен');
}

Функция подключается к базе данных и проверяет в ней наличие комбинации имени и пароля для данного пользователя. Если эти записи присутствуют, возвращается значение true, в противном случае, либо когда данные пользователя не могут быть проверены — false.

Выход из системы

Как видно из рисунка, меню содержит ссылку Выход. Щелчок на этой ссылке приводит к вызову сценария logout.php.

logout.php — этот сценарий завершает сеанс пользователя

<?php
// Включить файлы функций для этого приложения
require_once('bookmark_fns.php');
session_start();
$old_user = $_SESSION['valid_user'];
// Сохранить для проверки, если кто-то вошел в систему *ранее*
unset($_SESSION['valid_user']);
$result_dest = session_destroy();

// Начать вывод html-содержимого
$title = "Выход";
$description = "Выход";
$keywords = "выход";
do_html_header($title, $description, $keywords);
blok_left();
echo'<div id="blok_right">';
echo '<div class="blok_text">';
echo'<div class="text_top" align=left>';
do_html_heading($title);
if (!empty($old_user))
{
if ($result_dest)
{
// Если пользователь вошел в систему и теперь выходит из нее
echo 'Успешный выход из системы.<br>';
do_html_url('login.php', 'Вход');
}
else
{
// Пользователь вошел в систему и не может выйти из нее
echo 'Выход из системы невозможен.<br >';
}
}
else
{
// Если пользователь не входил в систему, но каким-то образом попал на эту страницу
echo 'Вы не входили в систему, поэтому и выходить из нее не нужно.<br />';
do_html_url('login.php', 'Вход');
}
echo '</div></div></div>';
do_html_footer();
?>