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

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

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

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

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

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

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

Смена паролей и выход из системы

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

Если администратор примет решение изменить пароль, то для этого достаточно выбрать соответствующую опцию меню администрирования.

Сценарий change_password_form.php представляет форму для смены пароля

Эта форма сгенерирована сценарием change_passwordd_form.php. Он достаточно прост и использует лишь функции библиотеки вывода.

Сценарий change_password_form.php — выводит форму для смены пароля

<?php
require_once("book_sc_fns.php");
session_start();
$pagename = "Изменение пароля администратора";
$keywords= "";
$description="Интернет-магазин ABC-Book. Книги традиционные и на электронных носителях";
do_html_header($pagename, $keywords, $description);
echo "<section class=blok>";
echo "<div class=col1>";
echo "<header>";
echo "<h5>Меню администратора</h5>";
echo "</header>";
echo "<nav>";
if (check_admin_user())
display_admin_menu();
else
echo 'У вас нет прав для доступа на страницу администрирования.';
echo "</nav>";
echo "</div>";
echo "<div class=col2>";
echo "<header>";
echo "<h2>$pagename</h2>";
echo "</header>";
echo "<div class=login>";
check_admin_user();

display_password_form();

echo "</div>";
echo "</div>";
echo"</section>";
do_html_footer();
?>

Функция display_password_form() из библиотеки admin_fns.php выводящая форму изменения пароля

<?php
function display_password_form()
{
// Выводит HTML-форму изменения пароля
?>
<br />
<form action="change_password.php" method="post">
<table>
<tr><td>Старый пароль:</td>
<td><input type="password" name="old_passwd" size=16 maxlength=16></td>
</tr>
<tr><td>Новый пароль:</td>
<td><input type="password" name="new_passwd" size=16 maxlength=16></td>
</tr>
<tr><td>Подтверждение нового пароля:</td>
<td><input type="password" name="new_passwd2" size=16 maxlength=16></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Изменить пароль">
</td>
</tr>
</table>
<br />
<?php
};
?>

После отправки формы запускается на выполнение сценарий change_password.php.

change_password.php — сценарий смены паролей

<?php
require_once('book_sc_fns.php');
session_start();
do_html_header('Изменение пароля');
check_admin_user();
if (!filled_out($_POST))
{
echo 'Вы заполнили не все поля формы. Пожалуйста, повторите попытку.';
do_html_url('admin.php', 'Назад в меню администрирования');
do_html_footer();
exit;
}
else
{
$new_passwd = $_POST['new_passwd'];
$new_passwd2 = $_POST['new_passwd2'];
$old_passwd = $_POST['old_passwd'];
if ($new_passwd!=$new_passwd2)
echo 'Введенные пароли не совпадают. Пароль не изменен.';
else if (strlen($new_passwd)>16 || strlen($new_passwd)<6)
echo 'Новый пароль должен содержать не менее 6 символов. Повторите попытку.';
else
{
// попытка изменения
if (change_password($_SESSION['admin_user'], $old_passwd, $new_passwd))
echo 'Пароль изменен.';
else
echo 'Невозможно изменить пароль.';
}


}
do_html_url('admin.php', 'Назад в меню администрирования');
do_html_footer();
?>

Этот сценарий проверяет, вошел ли администратор в систему (с помощью функции check_admin_user()), заполнил ли он форму ввода пароля (с использованием filled_out()), введены ли в обоих полях одинаковые пароли и является ли длина паролей допустимой. Если все правильно, вызывается функция change_password() из библиотеки user_auth_fns.php:

if (change_password($_SESSION['admin_user'], $old_passwd, $new_passwd))
echo 'Пароль изменен.'
;

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

<?php
function change_password($username, $old_password, $new_password)
// Изменяет пароль для username с old_password на new_password.
//Возвращает true или false
{
// Если старый пароль корректен,
// изменить его на новый пароль (new_password) и вернуть true.
// В противном случае вернуть false
if (login($username, $old_password))
{
if (!($conn = db_connect()))
return false;
$result = $conn->query( "update admin
set password = sha1('$new_password')
where username = '$username'"
);
if (!$result)
return false; // не изменен
else
return true; // успешно изменен
}
else
return false; // неправильный старый пароль
}
?>

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

Щелчок по кнопке Выход приводит к вызову сценария logout.php.

logout.php — сценарий завершающий сеанс администратора

<?php

// Включить библиотеки функций для этого приложения
require_once('book_sc_fns.php');
session_start();
$old_user = $_SESSION['admin_user']; // сохранить для проверки, был ли уже зарегистрирован посетитель
unset($_SESSION['admin_user']);
session_destroy();

// Начать вывод html-кода
do_html_header('Выход');
$pagename = "Выход";
$keywords= "";
$description="Интернет-магазин ABC-Book. Книги традиционные и на электронных носителях";
do_html_header($pagename, $keywords, $description);
echo "<section class=blok>";
echo "<div class=col1>";
echo "<header>";
echo "<h5>Меню администратора</h5>";
echo "</header>";
echo "<nav>";
// Извлечь категории из базы данных
$cat_array = get_categories();
display_categories($cat_array);
echo "</nav>";
echo "</div>";
echo "<div class=col2>";
echo "<header>";
echo "<h2>$pagename</h2>";
echo "</header>";
echo "<article>";
if (!empty($old_user))
{
echo 'Успешный выход.<br />';
do_html_url('login.php', 'Вход');
}
else
{
// Если кто-то не входил в систему, но каким-то образом попал на эту страницу
echo 'Вы не входили в систему, поэтому и выходить из нее не нужно.<br />';
do_html_url('login.php', 'Вход');
}
echo "</article>";
echo "</div>";
echo"</section>";
do_html_footer();

?>