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

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

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

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

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

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

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

Реализация хранения и извлечения закладок. Добавление закладок

Реализация хранения и извлечения закладок

Пришло время познакомиться с методами хранения, извлечения и удаления закладок.

Добавление закладок

Для добавления закладок можно щелкнуть на ссылке Добавить закладку в меню пользователя. В результате отображается форма, показанная на рисунке.

Сценарий add_bm_form.php предоставляет форму для добавления закладок

Этот сценарий также прост и использует лишь функции вывода.

add_bm_form.php — выводит HTML-форму для добавления закладок

<?php
// Включить файлы функций для этого приложения
require_once('bookmark_fns.php');
session_start();
$title = "Добавление закладок";
$description = "Добавление закладок";
$keywords = "добавление закладок";
// Начать html-вывод
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);
check_valid_user();
display_add_bm_form();

display_user_menu();
echo '</div></div></div>';
do_html_footer();
?>

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

add_bms.php — этот сценарий добавляет новые закладки в личную страницу пользователя

<?php
require_once('bookmark_fns.php');
session_start();
$title = "Добавление закладок";
$description = "Добавление закладок";
$keywords = "добавление закладок";
// Создать короткие имена переменных
$new_url = $_POST['new_url'];

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);
try
{
check_valid_user();
if (!filled_out($_POST))
{
throw new Exception('Форма заполнена не полностью.');
}

// Проверить формат URL
if (strstr($new_url, 'http://')===false)
$new_url = 'http://'.$new_url;

// Проверить допустимость URL
if (!(@fopen($new_url, 'r')))
throw new Exception('Недопустимый URL-адрес.');

// Попытаться добавить закладку
add_bm($new_url);
echo 'Закладка добавлена.';

// Получить закладки, сохраненные данным пользователем
if ($url_array = get_user_urls($_SESSION['valid_user']))
display_user_urls($url_array);
}
catch (Exception $e)
{
echo $e->getMessage();
}

display_user_menu();
echo '</div></div></div>';
do_html_footer();
?>

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

Для проверки допустимости данных, сначала с помощью функции filled_out() определяется, заполнил ли пользователь форму. Затем выполняется две проверки URL-адреса. Вначале с помощью функции strstr() мы определяем, начинается ли адрес с последовательности http://. Если нет, она добавляется в начало адреса. После этого осуществляется проверка, существует ли в действительности данный адрес. Функция fopen() позволяет открыть URL-адрес, начинающийся с последовательности http://. Если открыть файл удается, мы предполагаем, что URL-адрес корректен, и после этого вызываем функцию add_bm() для его сохранения в базе данных.

Эта и другие функции, связанные с закладками, содержатся в библиотеке url_fns.php.

Функция add_bm() из библиотеки url_fns.php — заносит в базу данных новые закладки

function add_bm($new_url)
{
// Добавляет новую закладку в базу данных

echo "Попытка добавления ".htmlspecialchars($new_url).'<br />';
$valid_user = $_SESSION['valid_user'];

$conn = db_connect();

// Проверить, существует ли такая закладка
$result = $conn->query("select * from bookmark
where username='$valid_user'
and bm_URL='$new_url'"
);
if ($result && ($result->num_rows>0))
throw new Exception('Такая закладка уже существует.');

// Вставить новую закладку
if (!$conn->query( "insert into bookmark values
('$valid_user', '$new_url')"
))
throw new Exception('Не удается вставить закладку в базу данных.');

return true;
}

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

Вернемся к сценарию add_bm.php. Как и в сценарии member.php, его последние операции — вызов функций get_user_urls() и display_user_urls(). Они будут рассматриваться ниже.