Автор работы: Пользователь скрыл имя, 14 Ноября 2013 в 09:42, доклад
Начало - первый шаг в создании управляемого сайта - подключение к Базе Данных (БД)
Тексты наших страниц мы будем хранить в базе данных. Почему не в файлах? Да потому что MySQL гораздо удобнее и проще, чем текстовые файлы! А если еще подумать о том, что БД еще и функциональнее, то все вопросы отпадут. Итак, наша первая задача - создать пользователя БД и саму базу. Заходим в нашу панель управления на хостинге, выбираем пункт меню "Управление пользователями MySQL" и жмем "Добавить", вводим описание "пользователь админки" и жмем еще раз на кнопку "Добавить".
// а вот если не пуст, значит с этим id уже есть запись и в данном случае мы ее просто отредактируем
else
$query = "UPDATE pages SET
WHERE id = '".$_POST['id']."';";
// непосредственно записываем наши данные в базу (до этого мы просто описывали, что надо сделать, а теперь делаем)
mysql_query($query, $link);
// ну и просто выводим крикливую надпись, что скрипт отработал
echo '<h3>Данные обновлены</h3>';
}
?>
Заливаем нашу новую админку на сервер. Заходим в созданные страницы и каждой из них пишем название. Теперь предлагаю выводить список наших страничек не по id, а по названию. Для этого правим функцию show_pages():
<?function show_pages() {
require '../inc/connect.php';
echo '
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
<td>
<a href="?id=new">Добавить страницу</a>
</td>
</tr>
</table>';
echo '
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
<td>
<b>Название страницы</b>
</td>
</tr>';
$result = mysql_query("SELECT * FROM pages ORDER BY id;", $link);
while($row = mysql_fetch_array($result)){
echo '
<tr bgcolor="#ffffff">
<td>
<a
href="?id='.$row['id'].'">'.
</td>
</tr>';
// думаю вы заметили, что в тексте ссылки мы заменили $row{'id'] на $row['title'] и добавили обработку функцией stripslashes()
}
echo '
</table>';
}?>
Как будет выглядеть наш файл по результатам я писать не буду, надеюсь Вы самостоятельно справитесь с не сложной задачей по небольшим исправлениям в наших функциях. А пока лучше вернемся к нашему основному файлу index.php и настроим вывод наших мета-тегов непосредственно на сайте.
<?
require 'inc/connect.php';
//htmlspecialchars() Преобразует специальные символы в HTML сущности, будем считать для того, чтобы простейшие попытки взломать наш сайт обломались.
$_GET['id'] = htmlspecialchars($_GET['id']);
// если у нас не запрашивали никакую определенную страницу, то будем выводить нашу самую первую. Если Вы ее давно удалили, поставьте вместо единички идентификатор той странички, которую Вы хотели бы грузить по умолчанию
if(empty($_GET['id'])) $_GET['id'] = 1;
$result = mysql_query("SELECT * FROM pages WHERE id = '".$_GET['id']."';", $link);
$row = mysql_fetch_array($result);
?>
<html>
<head>
<title><?=$row['metatitle'];?>
<META NAME="description"
CONTENT="<?=htmlspecialchars(
<META NAME="keywords"
CONTENT="<?=htmlspecialchars(
</head>
<body>
<!-- меню делаем ручками, по принципу: -->
<a href="?id=1">первая страница</a>
<a href="?id=2">вторая страница</a>
<a href="?id=3">контакты</a><br /><br />
<?//stripslashes() - Удаляет экранирование символов - а их мы понаставили в админке, когда загружали данные в базу с помощью функции mysql_real_escape_string()?>
<?=stripslashes($row['body']);
</body>
</html>
Изменений прасктически нет, просто вывели наши данные в метатегах и в тайтл. Думаю Вы уже можете самостоятельно заметить, где это сделано. Кстати, мы можем выводить наши названия страниц в меню! Это уже на Ваше усмотерние. Сделать это можно так:
<?
echo 'Наше меню: ';
$resultMenu = mysql_query("SELECT * FROM pages ORDER BY id;", $link);
$rowMenu = mysql_fetch_array($resultMenu)
echo '<a href="?id='.$rowMenu['id'].'">
while($rowMenu = mysql_fetch_array($resultMenu)
echo ' · <a href="?id='.$rowMenu['id'].'">
}
?>
Осталось красиво оформить странички - это уже html - думаю с этим проблем у Вас возникнуть не должно ;-)
Ставим пароль на папку 'adm'
Поставить пароль совсем
не сложно. До меня это давно
уже написано другими людьми,
поэтому я не буду изобретать
велосипед и просто скопирую
информацию с сайта PeterHost.
Как можно поставить пароль на директорию?
Для того, чтобы при обращении к защищенной директории web-сервер Apache спрашивал пароль, нужно в эту директорию поместить файл .htaccess, в котором прописать следующие директивы:
Вместо ProtectedZone можно написать все, что угодно. Это название защищенной области, оно будет показываться в браузере при запросе пароля, являясь по сути дела подсказкой пользователю. Если Вы хотите использовать русские буквы или же более одного слова, необходимо использовать кавычки.
Пример: AuthName "Введите пароль для входа"
Это метод шифрования
пароля. Практически всегда
Пример: AuthType Basic
Это путь к файлу,
в котором будут храниться
логины и пароли. Он может иметь
практически любое имя и
Пример: AuthUserFile /home/test/www/site1/public_
Эта строка говорит
о том, что доступ в
Пример: require user vasya kolya petya
Пример: require valid-user
Как редактировать файл .htpasswd?
Файл паролей .htpasswd - это обычный текстовой файл. Каждый пользователь описан в нем одной строкой вида логин:шифрованый_пароль. Для шифрования паролей используется специальная программа htpasswd. Обратите внимание, в файл нельзя просто вручную записать пароль, пароль обязательно должен быть зашифрован программой htpasswd.
Если файл .htpasswd еще не существует, программа htpasswd должна быть запущена с ключом -c:
htpasswd -c /полный_путь_к_файлу/.htpasswd логин_пользователя
Пример: htpasswd -c /home/test/www/site1/public_
При этом программа htpasswd создаст файл .htpasswd, запросит пароль для пользователя и создаст запись о пользователе с указанными логином и паролем в этом файле. При добавлении следующих пользователей и изменении паролей уже существующих программа вызывается подобным же образом, но без указания ключа -c. Для удаления пользователя достаточно открыть файл .htpasswd обычным текстовым редактором и удалить строчку с его логином и паролем.
Как создать файл .htpasswd если тарифный план не предусматривает доступа по SSH?
Если тарифный план не предусматривает доступ по SSH (доступ к командной строке сервера), то для создания файла .htpasswd можно воспользоваться специальной windows-программой. Для этого, нужно скачать дистрибутив, распаковать его и запустить программу passwd.exe. После этого в окне по закладке "Single Password" с помощью кнопки "Browse" задать имя файла (обычно это .htpasswd), а в верхней части окна ввести имя пользователя, пароль и нажать кнопку "Encode and Save". После этого полученный файл необходимо закачать по протоколу FTP в нужную директорию на нашем сервере.
Удаление страничек из нашей админки
Отлично. Мы сделали
паролирование, оформили наши
странички, но вот незадача, мы
совсем забыли про удаление
страничек! Конечно, можно их
не удалять, а просто
<?function show_pages() {
// добавляем javascript, который позволит перед удалением спросить пользователя, уверен ли он в этом.
?>
<script language='JavaScript1.1' type='text/javascript'>
<!--
function Delete(N)
{
if(confirm("Удалить запись?"))
{
parent.location='?del='+N;
}
else
{
return false;
}
}
-->
</SCRIPT>
<?
require '../inc/connect.php';
echo '
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
<td>
<a href="?id=new">Добавить страницу</a>
</td>
</tr>
</table>';
echo '
<table cellspacing="1" cellpadding="2" bgcolor="#1F2760">
<tr bgcolor="#B0ADC3">
<td colspan="2">
<b>Название страницы</b>
</td>
</tr>';
$result = mysql_query("SELECT * FROM pages ORDER BY id;", $link);
while($row = mysql_fetch_array($result)){
echo '
<tr bgcolor="#ffffff">
<td>
<a
href="?id='.$row['id'].'">'.
</td>
<td>
<a
href="#" OnClick="Delete('.$row['id'].'
</td>
</tr>';
// добавили ячейку с ссылкой на удаление и не забыли вставить colspan="2" у заглавной ячейки
// думаю вы заметили, что в тексте ссылки мы заменили $row{'id'] на $row['title'] и добавили обработку функцией stripslashes()
}
echo '
</table>';
}?>
Ссылку на удаление
сделали, теперь не помешает
создать функцию, которая
<?function delete_pages(){
require '../inc/connect.php';
$query = "DELETE FROM pages WHERE id = '".$_GET['del']."';";
mysql_query($query, $link);
echo '<h3>Данные удалены</h3>';
}?>
которую не забываем вызвать:
<?if($_GET['del']) delete_pages();?>
Сайт и админку можно считать готовыми. Для доработки админки было бы неплохо сделать еще сортировку для меню, оставляю это Вам на вкусненькое. Для этого Вам надо добавить в нашу таблицу еще одно числовое поле для сортировки
ALTER TABLE `pages` ADD `sortirovka` INT NOT NULL ;
в функцию show_form() добавить элемент формы, а в complete() добавить обработку еще одной переменной. Ах, да, а в запросе к базе при выводе меню поменять
SELECT * FROM pages ORDER BY id;
на
SELECT * FROM pages ORDER BY sortirovka;
Вот и все! Админка готова! Осталось собрать в единое целое все, что мы сделали, а также оформить внешний вид сайта, ну и админки. Если не получается собрать все в рабочие файлы, то переходите к следующему разделу, там есть готовый php-код, который будет достаточно просто скопировать. Ну, и зайдите на страничку "бонус" - это заключительный этап, который сделает Вашу админку максимально удобной, эффектной и простой.
Информация о работе Как создать какбинет администратора для сайта