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

《PHP和MySQL Web开发(原书第4版)》30.7 管理功能的实现

关灯直达底部

如果某人以管理员身份登录,将看到一些额外的菜单选项,如图30-10所示。

图 30-10 管理员菜单选项允许创建和维护邮件列表

管理员身份独有的选项是"Create List"(创建新的邮件列表)、"Create Mail"(创建新的新闻信件)和"View Mail"(查看并发送那些已经创建但还没发出去的新闻信件)。下面,我们将依次讨论它们。

30.7.1 创建新的邮件列表

如果管理员点击"Create List"按钮来建立新的邮件列表,将触发create-list动作,该动作与如下所示代码相关:

case'create-list':

display_list_form(get_email);

break;

display_list_form函数将显示一个可供管理员输入新邮件列表详细信息的表单。该函数保存在output_fns.php函数库中。它只是用来输出HTML,因此在这里,我们不深入讨论它。该函数的输出如图30-11所示。

图 30-11 "Create List"选项要求管理员为新的邮件列表输入名称和描述(或简介)

当管理员点击"Save List"按钮时,将触发store-list动作,而该动作将触发index.php中的如下所示代码:

case'store-list':

if(store_list($_SESSION['admin_user'],$_POST)){

echo"<p style=/"padding-bottom:50px/">New list added.</p>";

display_items('All Lists',get_all_lists,'information',

'show-archive','');

}else{

echo"<p style=/"padding-bottom:50px/">List could not be

stored.Please try again.</p>";

}

break

可以看到,以上代码将保存新的列表详细信息,并显示新的列表。列表详细信息是通过store_list函数来保存的。该函数的代码如程序清单30-14所示。

程序清单30-14 mlm_fns.php函数库的store_list函数——该函数在数据库中插入一个新的邮件列表

function store_list($admin_user,$details){

if(!filled_out($details)){

echo"<p>All fields must be filled in.Try again.</p>";

return false;

}else{

if(!check_admin_user($admin_user)){

return false;

//how did this function get called by somebody not logged in as admin?

}

if(!($conn=db_connect)){

return false;

}

$query="select count(*)from lists where listname='".$details['name']."'";

$result=$conn->query($query);

$row=$result->fetch_array;

if($row[0]>0){

echo"<p>Sorry,there is already a list with this name.</p>";

return false;

}

$query="insert into lists values(NULL,

'".$details['name']."',

'".$details['blurb']."')";

$result=$conn->query($query);

return$result;

}

}

该函数在写入数据库之前进行一些有效性检查:它将检查是否已经提供了所有需要的详细信息、当前的用户是否是管理员、以及该列表的名称是否是唯一的。如果所有检查都正确,该列表将被添加到数据库中的lists表。