首页 » PHP和MySQL Web开发(原书第4版) » PHP和MySQL Web开发(原书第4版)全文在线阅读

《PHP和MySQL Web开发(原书第4版)》27.6 实现书签的存储和检索

关灯直达底部

在实现了与用户账户相关的功能后,现在,我们开始讨论如何保存、检索和删除书签。

27.6.1 添加书签

用户点击用户菜单上的"Add BM"链接可以添加书签。该链接将用户带到如图27-9所示的页面。

图 27-9 add_bm_form.php脚本将提供一个表单,用户在此可以将书签添加到他们的书签页中

同样,由于这段脚本也是非常简单的,并且只调用了一些输出函数,因此,我们也不深入讨论。当表单被提交的时候,系统调用add_bms.php脚本,该脚本如程序清单27-21所示。

程序清单27-21 add_bms.php——该脚本添加新书签到用户的个人页面

<?php

require_once('bookmark_fns.php');

session_start;

//create short variable name

$new_url=$_POST['new_url'];

do_html_header('Adding bookmarks');

try{

check_valid_user;

if(!filled_out($_POST)){

throw new Exception('Form not completely filled out.');

}

//check URL format

if(strstr($new_url,'http://')===false){

$new_url='http://'.$new_url;

}

//check URL is valid

if(!(@fopen($new_url,'r'))){

throw new Exception('Not a valid URL.');

}

//try to add bm

add_bm($new_url);

echo'Bookmark added.';

//get the bookmarks this user has saved

if($url_array=get_user_urls($_SESSION['valid_user'])){

display_user_urls($url_array);

}

}

catch(Exception$e){

echo$e->getMessage;

}

display_user_menu;

do_html_footer;

?>

这段脚本也遵循了验证、数据库输入和输出的模式。

要验证用户身份,我们应该首先调用filled_out函数检查该用户是否完全填写表单。然后,再执行两项检查URL的操作。首先,调用strstr函数,检查URL是否以http://开头。如果不是,我们就将其添加到URL的开头。完成此操作后,就可确切地检查该URL是否存在。回顾一下第20章“使用网络函数和协议函数”,我们可以调用fopen函数打开一个以http://开头的URL。如果可以打开这个文件,就假定该URL是有效的,并调用add_bm函数将其添加到数据库中。

本函数和其他与书签相关的函数都保存在函数库url_fns.php中。程序清单27-22显示了add_bm函数的代码。

程序清单27-22 url_fns.php文件中的add_bm函数——该函数将用户提交的新书签添加到数据库中

<?php

require_once('bookmark_fns.php');

session_start;

//create short variable name

$new_url=$_POST['new_url'];

do_html_header('Adding bookmarks');

try{

check_valid_user;

if(!filled_out($_POST)){

throw new Exception('Form not completely filled out.');

}

//check URL format

if(strstr($new_url,'http://')===false){

$new_url='http://'.$new_url;

}

//check URL is valid

if(!(@fopen($new_url,'r'))){

throw new Exception('Not a valid URL.');

}

//try to add bm

add_bm($new_url);

echo'Bookmark added.';

//get the bookmarks this user has saved

if($url_array=get_user_urls($_SESSION['valid_user'])){

display_user_urls($url_array);

}

}

catch(Exception$e){

echo$e->getMessage;

}

display_user_menu;

do_html_footer;

?>

该函数也很简单。它检查用户是否在数据库中已经有了该书签(尽管他们不可能两次输入同一个书签,但很可能要更新该页)。如果书签是新的,它就被添加到数据库中。

回头看看add_bm.php函数库,可以看出,它最后执行的操作是调用get_user_urls函数和display_user_urls函数,这与member.php是相同的。我们将在接下来的内容中继续讨论这些函数。