Пришло время познакомиться с методами хранения, извлечения и удаления закладок.
Добавление закладок
Для добавления закладок можно щелкнуть на ссылке Добавить закладку в меню пользователя. В результате отображается форма, показанная на рисунке.
Этот сценарий также прост и использует лишь функции вывода.
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(). Они будут рассматриваться ниже.
Комментарии(0)
Для добавления комментариев надо войти в систему и авторизоватьсяКомментирование статей доступно только для зарегистрированных пользователей:Зарегистрироваться