﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-网摘-文章分类-CMS</title><link>http://www.blogjava.net/jvict/category/43127.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 16 Dec 2009 17:31:19 GMT</lastBuildDate><pubDate>Wed, 16 Dec 2009 17:31:19 GMT</pubDate><ttl>60</ttl><item><title>PHP下的CMS开发</title><link>http://www.blogjava.net/jvict/articles/306068.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Tue, 15 Dec 2009 13:34:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/306068.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/306068.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/306068.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/306068.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/306068.html</trackback:ping><description><![CDATA[<p>本章主要介绍了一个简单CMS系统的实现。本章中的CMS系统通过PHP代码实现了对文章内容的管理。事实上，一个完善的CMS系统要复杂得多。CMS系统不仅可以用来管理字符型数据，还可以用来管理二进制数据，例如，图片、音频和视频等。</p>
<p>CMS系统是PHP在实际应用中使用最多的一种类型。对本章中提供的代码进行研究和学习对创建一个网站系统很有好处。读者可以通过对本章中的设计思想的研究设计出符合需求的更复杂的CMS系统。</p>
<br />
<h3 style="margin: 15.6pt 0cm 9.6pt 5pt">35.4.8&nbsp; 网站模板管理页面的实现</h3>
<p>网站模板管理页面与文章管理页面类似，不同的是更新的表为templates。具体代码如下所示。</p>
<p>&lt;?php require_once('Connections/conn.php'); ?&gt;</p>
<p>&lt;?php</p>
<p>//格式转换函数</p>
<p>function GetSQLValueString($theValue, $theType, $theDefinedValue = "", </p>
<p>$theNotDefinedValue = "") </p>
<p>{</p>
<p>&nbsp; $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;</p>
<p>switch ($theType) </p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp; case "text":</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; case "long":</p>
<p>&nbsp;&nbsp;&nbsp; case "int":</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ? intval($theValue) : "NULL";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</p>
<p>&nbsp;&nbsp;&nbsp; case "double":</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</p>
<p>&nbsp;&nbsp;&nbsp; case "date":</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</p>
<p>&nbsp;&nbsp;&nbsp; case "defined":</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</p>
<p>&nbsp; }</p>
<p>&nbsp; return $theValue;</p>
<p>}</p>
<p>//获得用户输入执行更新操作</p>
<p>if ((isset($_POST["MM_update"])) &amp;&amp; ($_POST["MM_update"] == "form1")) </p>
<p>{</p>
<p>$updateSQL = sprintf("UPDATE templates SET template_name=%s, folder_name=%s </p>
<p>WHERE template_id=%s",</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetSQLValueString($_POST['template_name'], "text"),</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetSQLValueString($_POST['folder_name'], "text"),</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetSQLValueString($_POST['template_id'], "int"));</p>
<p>&nbsp; mysql_select_db($database_conn, $conn);</p>
<p>&nbsp; $Result1 = mysql_query($updateSQL, $conn) or die(mysql_error());</p>
<p>&nbsp; echo "&lt;script&gt;alert('模板更新成功！');&lt;/script&gt;";</p>
<p>}</p>
<p>//获得用户输入执行插入操作</p>
<p>if ((isset($_POST["MM_insert"])) &amp;&amp; ($_POST["MM_insert"] == "form2")) </p>
<p>{</p>
<p>&nbsp; $insertSQL = sprintf("INSERT INTO templates (template_name, folder_name) </p>
<p>VALUES (%s, %s)",</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetSQLValueString($_POST['template_name'], "text"),</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetSQLValueString($_POST['folder_name'], "text"));</p>
<p>&nbsp; mysql_select_db($database_conn, $conn);</p>
<p>&nbsp; $Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());</p>
<p>&nbsp; echo "&lt;script&gt;alert('模板添加成功！');&lt;/script&gt;";</p>
<p>}</p>
<p>获得用户输入执行删除操作</p>
<p>if (isset($_GET["delete_id"])) </p>
<p>{</p>
<p>&nbsp; $deleteSQL = sprintf("DELETE FROM templates WHERE template_id=%s",</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetSQLValueString($_GET['delete_id'], "int"));</p>
<p>&nbsp; mysql_select_db($database_conn, $conn);</p>
<p>&nbsp; $Result1 = mysql_query($deleteSQL, $conn) or die(mysql_error());</p>
<p>&nbsp; echo "&lt;script&gt;alert('模板删除成功！');&lt;/script&gt;";</p>
<p>}</p>
<p>&nbsp;&nbsp;&nbsp; </p>
<p>mysql_select_db($database_conn, $conn);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //连接数据库</p>
<p>$query_rs_template = "SELECT * FROM templates ORDER BY template_id ASC";</p>
<p>$rs_template = mysql_query($query_rs_template, $conn) or die(mysql_error());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //执行SQL语句</p>
<p>$row_rs_template = mysql_fetch_assoc($rs_template); //获得记录集</p>
<p>$totalRows_rs_template = mysql_num_rows($rs_template);</p>
<p>if (isset($_GET['template_id'])) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获得模板信息</p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp; mysql_select_db($database_conn, $conn);</p>
<p>&nbsp;&nbsp;&nbsp; $query_rs_upt = sprintf("SELECT * FROM templates WHERE template_id = %s", </p>
<p>$_GET['template_id']);</p>
<p>&nbsp;&nbsp;&nbsp; $rs_upt = mysql_query($query_rs_upt, $conn) or die(mysql_error());</p>
<p>&nbsp;&nbsp;&nbsp; $row_rs_upt = mysql_fetch_assoc($rs_upt);</p>
<p>&nbsp;&nbsp;&nbsp; $totalRows_rs_upt = mysql_num_rows($rs_upt);</p>
<p>&nbsp;&nbsp;&nbsp; $row_rs_upt_template_name = $row_rs_upt['template_name'];</p>
<p>&nbsp;&nbsp;&nbsp; $row_rs_upt_folder_name = $row_rs_upt['folder_name'];</p>
<p>}</p>
<p>?&gt;</p>
<p>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www. </p>
<p>w3.org/TR/html4/loose.dtd"&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;head&gt;</p>
<p>&lt;title&gt;Untitled Document&lt;/title&gt;</p>
<p>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;</p>
<p>&lt;style type="text/css"&gt;</p>
<p>&lt;!--</p>
<p>.style1 {</p>
<p>&nbsp;&nbsp;&nbsp; font-size: 18px;</p>
<p>&nbsp;&nbsp;&nbsp; font-weight: bold;</p>
<p>}</p>
<p>.style4 {font-size: 12px}</p>
<p>--&gt;</p>
<p>&lt;/style&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;p align="center" class="style1"&gt;模板管理&lt;/p&gt;</p>
<p>&lt;p align="center" class="style1"&gt;&lt;span class="style4"&gt;&lt;a href="index.php"&gt;</p>
<p>返回首页&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;</p>
<p>&lt;table width="400" border="1" align="center" cellpadding="0" cellspacing="0"&gt;</p>
<p>&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;strong&gt;模板名称&lt;/strong&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;strong&gt;模板所在文件夹&lt;/strong&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&amp;nbsp; &lt;/td&gt;</p>
<p>&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;?php do { ?&gt;</p>
<p>&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;a href="?template_id=&lt;?php echo $row_rs_template['template_ </p>
<p>id']; ?&gt;"&gt;&lt;?php echo $row_rs_template['template_name']; ?&gt;&lt;/a&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;?php echo $row_rs_template['folder_name']; ?&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;a onClick="javascript:return confirm('确实要删除吗？')" href="?delete </p>
<p>_id=&lt;?php echo $row_rs_template['template_id']; ?&gt;"&gt;删除&lt;/a&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&lt;/tr&gt;</p>
<p>&nbsp; &lt;?php } while ($row_rs_template = mysql_fetch_assoc($rs_template)); ?&gt;</p>
<p>&lt;/table&gt;</p>
<p>&lt;p&gt;&amp;nbsp;&lt;/p&gt;</p>
<p>&lt;form method="post" name="form1" action="?"&gt;</p>
<p>&nbsp; &lt;table align="center"&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;tr valign="baseline"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td nowrap align="right"&gt;模板名称：&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="text" name="template_name" value="&lt;?php echo $row_rs_ </p>
<p>upt_template_name; ?&gt;" size="32"&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;tr valign="baseline"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td nowrap align="right"&gt;文件夹名：&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="text" name="folder_name" value="&lt;?php echo $row_rs_ </p>
<p>upt_folder_name; ?&gt;" size="32"&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;tr valign="baseline"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td nowrap align="right"&gt;&amp;nbsp;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="submit" value="更新模板"&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;/table&gt;</p>
<p>&nbsp; &lt;input type="hidden" name="MM_update" value="form1"&gt;</p>
<p>&nbsp; &lt;input type="hidden" name="template_id" value="&lt;?php echo $row_rs_upt </p>
<p>['template_id']; ?&gt;"&gt;</p>
<p>&lt;/form&gt;</p>
<p>&lt;p&gt;&amp;nbsp;&lt;/p&gt;</p>
<p>&lt;form method="post" name="form2" action="?"&gt;</p>
<p>&nbsp; &lt;table align="center"&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;tr valign="baseline"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td nowrap align="right"&gt;模板名称：&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="text" name="template_name" value="" size="32"&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;tr valign="baseline"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td nowrap align="right"&gt;文件夹名：&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="text" name="folder_name" value="" size="32"&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;tr valign="baseline"&gt;</p>
<p>&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&lt;td nowrap align="right"&gt;&amp;nbsp;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input type="submit" value="新建模板"&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;/table&gt;</p>
<p>&nbsp; &lt;input type="hidden" name="MM_insert" value="form2"&gt;</p>
<p>&lt;/form&gt;</p>
<p>&lt;p&gt;&amp;nbsp;&lt;/p&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p>&lt;?php</p>
<p>mysql_free_result($rs_template);</p>
<p>if (isset($_GET['template_id'])) {</p>
<p>mysql_free_result($rs_upt);</p>
<p>}</p>
<p>?&gt;</p>
<p>运行结果如图35-14所示。</p>
<p align="center"></p>
<p align="center">图35-14&nbsp; 模板管理页面</p>
<h3 style="margin: 15.6pt 0cm 9.6pt 5pt">35.4.9&nbsp; 退出登录页面的实现</h3>
<p>退出登录页面用于清除实现登录时注册的Session，具体代码如下所示。</p>
<p>&lt;?php</p>
<p>$logoutGoTo = "index.php";</p>
<p>session_start();</p>
<p>unset($_SESSION['MM_Username']);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //删除Session内容</p>
<p>unset($_SESSION['MM_UserGroup']);</p>
<p>header("Location: $logoutGoTo");&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //跳转页面</p>
<p>session_unregister('MM_Username');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //注销Session</p>
<p>session_unregister('MM_UserGroup'); </p>
<p>?&gt;</p>
<h3>35.4&nbsp; 页面代码设计</h3>
<p>本节将通过对CMS中的一些主要页面的设计来说明该系统的具体实现。</p>
<h3 style="page-break-before: always; margin: 15.6pt 0cm 9.6pt 5pt">35.4.1&nbsp; 首页的实现</h3>
<p>网站的首页HTML代码存放在模板文件中，代码如下所示。</p>
<p>&lt;!-- 模板文件：templates/default/index.inc.php --&gt;</p>
<p>&lt;html&gt;</p>
<p>&lt;head&gt;</p>
<p>&lt;title&gt;欢迎&lt;?php echo $_SESSION['MM_Username']; ?&gt;使用</p>
<p>&lt;?php echo $row_rs_config['website_name']; ?&gt;&lt;/title&gt;</p>
<p>&lt;meta http-equiv="Content-Type" content="text/html; charset=gb2312"&gt;</p>
<p>&lt;style type="text/css"&gt;</p>
<p>&lt;!--</p>
<p>.style1 {</p>
<p>&nbsp;&nbsp;&nbsp; font-size: 18px;</p>
<p>&nbsp;&nbsp;&nbsp; font-weight: bold;</p>
<p>}</p>
<p>--&gt;</p>
<p>&lt;/style&gt;</p>
<p>&lt;/head&gt;</p>
<p>&lt;body&gt;</p>
<p>&lt;div align="center"&gt;</p>
<p>&nbsp; &lt;p class="style1"&gt;欢迎&lt;?php echo $_SESSION['MM_Username']; ?&gt;使用</p>
<p>&nbsp; &lt;?php echo $row_rs_config['website_name']; ?&gt;&lt;/p&gt;</p>
<p>&nbsp; &lt;HR&gt;</p>
<p>&nbsp; &lt;table width="900" border="0" cellspacing="0" cellpadding="0"&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="207" align="left" valign="top"&gt;&lt;?php do { ?&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - &lt;a href="list.php?type_id=&lt;?php echo $row_rs_types['type_id']; ?&gt;"&gt; </p>
<p>&lt;?php echo $row_rs_types['type_name']; ?&gt;&lt;/a&gt;&lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php } while ($row_rs_types = mysql_fetch_assoc($rs_types)); ?&gt; &lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="501" align="left"&gt;&lt;?php do { ?&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * &lt;a href="show.php?article_id=&lt;?php echo $row_rs_articles ['article_ </p>
<p>id']; ?&gt;"&gt;</p>
<p>&lt;?php echo $row_rs_articles['title']; ?&gt;&lt;/a&gt;(&lt;?php echo $row_rs_articles </p>
<p>['author']; ?&gt;|</p>
<p>&lt;?php echo $row_rs_articles['last_upt_time']; ?&gt;) &lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;?php } while ($row_rs_articles = mysql_fetch_assoc($rs_articles)); ?&gt; &lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td width="192" valign="top"&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;?php</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; if(!isset($_SESSION['MM_Username'])) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; ?&gt; &nbsp; &lt;form name="form1" method="POST" action="&lt;?php echo $loginFormAction; ?&gt;"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p align="center"&gt;登录&lt;/p&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;table width="200" border="0" cellspacing="0" cellpadding="0"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;用户名&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input name="username" type="text" id="username"&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;密码&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;&lt;input name="password" type="password" id="password"&gt;&lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;p align="center"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="submit" name="Submit" value="Submit"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;input type="reset" name="Submit2" value="Reset"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/p&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/form&gt;&lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;P&gt;&lt;a href='reg.php'&gt;注册新用户&lt;/a&gt;&lt;/P&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;?php</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; } elseif($_SESSION['MM_UserGroup']=='user') {</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; ?&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;a href="send.php"&gt;文章投稿&lt;/a&gt;&lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;a href="logout.php"&gt;退出登录&lt;/a&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;?php</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; } elseif($_SESSION['MM_UserGroup']=='admin') {</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; ?&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;a href="admin_addnew.php"&gt;添加新文章&lt;/a&gt;&lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;a href="admin_list.php"&gt;文章管理&lt;/a&gt;&lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;a href="admin_typemanage.php"&gt;文章类别维护&lt;/a&gt;&lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;a href="admin_config.php"&gt;网站参数配置&lt;/a&gt;&lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;a href="admin_templatemanage.php"&gt;网站模板管理&lt;/a&gt;&lt;BR&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;a href="logout.php"&gt;退出登录&lt;/a&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; &lt;?php</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; }</p>
<p>&nbsp;&nbsp;&nbsp; &nbsp; ?&gt; &nbsp; &lt;/td&gt;</p>
<p>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</p>
<p>&nbsp; &lt;/table&gt;</p>
<p>&nbsp; &lt;HR&gt;</p>
<p>&nbsp; &lt;p&gt;&lt;?php echo $row_rs_config['copyright']; ?&gt;&lt;/p&gt;</p>
<p>&lt;/div&gt;</p>
<p>&lt;/body&gt;</p>
<p>&lt;/html&gt;</p>
<p>用于读取数据库和调用模板的流程如图35-2所示。</p>
<p align="center"></p>
<p align="center">图35-2&nbsp; 读取数据库和调用模板的流程</p>
<p>PHP代码如下所示。</p>
<p>&lt;!-- 首页文件：index.php --&gt;</p>
<p>&lt;?php require_once('Connections/conn.php'); ?&gt;</p>
<p>&lt;?php</p>
<p>//分页的计算</p>
<p>$maxRows_rs_articles = 20;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //每页显示记录数</p>
<p>$pageNum_rs_articles = 0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //初始化页码编号</p>
<p>if (isset($_GET['pageNum_rs_articles'])) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获取当前页码</p>
<p>{</p>
<p>&nbsp; $pageNum_rs_articles = $_GET['pageNum_rs_articles'];</p>
<p>}</p>
<p>$startRow_rs_articles = $pageNum_rs_articles * $maxRows_rs_articles;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //计算起始记录数</p>
<p>//读取文章信息</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_articles = "SELECT * FROM articles WHERE checked_indc=1 ORDER BY </p>
<p>last_upt_time DESC";</p>
<p>$query_limit_rs_articles = sprintf("%s LIMIT %d, %d", $query_rs_articles, </p>
<p>$startRow_rs_articles, $maxRows_rs_articles);</p>
<p>$rs_articles = mysql_query($query_limit_rs_articles, $conn) or die(mysql_error());</p>
<p>$row_rs_articles = mysql_fetch_assoc($rs_articles);</p>
<p>//设定分页页码</p>
<p>if (isset($_GET['totalRows_rs_articles'])) //如果参数中存在总记录数则获取</p>
<p>{</p>
<p>&nbsp; $totalRows_rs_articles = $_GET['totalRows_rs_articles'];</p>
<p>} </p>
<p>else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //否则执行SQL语句计算</p>
<p>{</p>
<p>&nbsp; $all_rs_articles = mysql_query($query_rs_articles);</p>
<p>&nbsp; $totalRows_rs_articles = mysql_num_rows($all_rs_articles);</p>
<p>}</p>
<p>$totalPages_rs_articles = ceil($totalRows_rs_articles/$maxRows_rs_ articles)-1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //计算总页数</p>
<p>//读取文章类别信息</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_types = "SELECT * FROM types ORDER BY type_id ASC";</p>
<p>$rs_types = mysql_query($query_rs_types, $conn) or die(mysql_error());</p>
<p>$row_rs_types = mysql_fetch_assoc($rs_types);</p>
<p>$totalRows_rs_types = mysql_num_rows($rs_types);</p>
<p>//读取网站配置信息</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_config = "SELECT * FROM config, templates WHERE config.template_ </p>
<p>id=templates.template_id";</p>
<p>$rs_config = mysql_query($query_rs_config, $conn) or die(mysql_error());</p>
<p>$row_rs_config = mysql_fetch_assoc($rs_config);</p>
<p>$totalRows_rs_config = mysql_num_rows($rs_config);</p>
<p>//验证用户权限</p>
<p>session_start();</p>
<p>$loginFormAction = $_SERVER['PHP_SELF'];</p>
<p>if (isset($accesscheck)) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //检查是否已经登录</p>
<p>{</p>
<p>&nbsp; $GLOBALS['PrevUrl'] = $accesscheck;</p>
<p>&nbsp; session_register('PrevUrl');</p>
<p>}</p>
<p>//获取用户登录信息</p>
<p>if (isset($_POST['username'])) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果用户输入了用户名</p>
<p>{</p>
<p>&nbsp; $loginUsername=$_POST['username'];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获得用户输入的用户名</p>
<p>&nbsp; $password=$_POST['password'];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //获得用户输入的密码</p>
<p>&nbsp; $MM_fldUserAuthorization = "userflag";&nbsp;&nbsp;&nbsp; //定义用户等级列</p>
<p>&nbsp; $MM_redirectLoginSuccess = "index.php";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义登录成功页面</p>
<p>&nbsp; $MM_redirectLoginFailed = "index.php";&nbsp;&nbsp;&nbsp; //定义登录失败页面</p>
<p>&nbsp; mysql_select_db($database_conn, $conn);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //连接数据库</p>
<p>&nbsp; $LoginRS__query=sprintf("SELECT username, password, userflag FROM users </p>
<p>WHERE username='%s' AND password='%s'",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //定义SQL语句</p>
<p>&nbsp; get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), </p>
<p>get_magic_quotes_gpc() ? $password : addslashes($password)); </p>
<p>&nbsp; $LoginRS = mysql_query($LoginRS__query, $conn) or die(mysql_error());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //执行SQL语句</p>
<p>$loginFoundUser = mysql_num_rows($LoginRS); //获得用户数</p>
<p>//如果登录成功，则检查当前登录是否开启。如果用户级别不是管理用户并且网站登录已经关闭，也</p>
<p>不允许登录</p>
<p>if ($loginFoundUser) </p>
<p>{&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp; $loginStrGroup&nbsp; = mysql_result($LoginRS,0,'userflag');</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($loginStrGroup!='admin' &amp;&amp; $row_rs_config['login_indc']==0) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; die("网站登录已经关闭");</p>
<p>&nbsp; }</p>
<p>&nbsp; //定义存放用户信息的Session</p>
<p>&nbsp; $GLOBALS['MM_Username'] = $loginUsername;</p>
<p>&nbsp; $GLOBALS['MM_UserGroup'] = $loginStrGroup; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>session_register("MM_Username");</p>
<p>session_register("MM_UserGroup");</p>
<p>//登录后的页面跳转</p>
<p>if (isset($_SESSION['PrevUrl']) &amp;&amp; false) </p>
<p>{</p>
<p>&nbsp;&nbsp;&nbsp; $MM_redirectLoginSuccess = $_SESSION['PrevUrl']; </p>
<p>&nbsp; }</p>
<p>&nbsp; header("Location: " . $MM_redirectLoginSuccess );</p>
<p>}</p>
<p>else &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //如果没有输入用户名</p>
<p>{</p>
<p>&nbsp; header("Location: ". $MM_redirectLoginFailed );</p>
<p>}</p>
<p>}</p>
<p>//检查网站是否关闭</p>
<p>if($row_rs_config['available_indc']==0) </p>
<p>{</p>
<p>&nbsp; die("网站维护中 - 暂时无法访问");</p>
<p>}</p>
<p>//调用模板文件</p>
<p>include('templates\\'.$row_rs_config['folder_name'].'\\index.inc.php');</p>
<p>//关闭数据库连接</p>
<p>mysql_free_result($rs_articles);</p>
<p>mysql_free_result($rs_types);</p>
<p>mysql_free_result($rs_config);</p>
<p>?&gt;</p>
<p>运行效果如图35-3所示。</p>
<p align="center"></p>
<p align="center">图35-3&nbsp; CMS首页</p>
<h3 style="margin: 15.6pt 0cm 9.6pt 5pt">35.4.2&nbsp; 注册页面的实现</h3>
<p>注册页面实际上就是对users表添加记录。需要注意的是注册页面往往需要验证用户两次输入的密码是否相同，其流程如图35-4所示。</p>
<p align="center"></p>
<p align="center">图35-4&nbsp; 用户注册流程</p>
<p>具体代码如下所示。</p>
<p>&lt;!-- 注册页面文件：reg.php --&gt;</p>
<p>&lt;?php require_once('Connections/conn.php'); ?&gt;</p>
<p>&lt;?php</p>
<p>//连接数据库</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_config = "SELECT * FROM config, templates WHERE config.template_ </p>
<p>id=templates.template_id";</p>
<p>$rs_config = mysql_query($query_rs_config, $conn) or die(mysql_error());</p>
<p>$row_rs_config = mysql_fetch_assoc($rs_config);</p>
<p>$totalRows_rs_config = mysql_num_rows($rs_config);</p>
<p>//文本字符串转换</p>
<p>function GetSQLValueString($theValue, $theType, $theDefinedValue = "", </p>
<p>$theNotDefinedValue = "") </p>
<p>{</p>
<p>&nbsp; $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;</p>
<p>&nbsp; switch ($theType)</p>
<p>&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp; case "text":</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp; }</p>
<p>&nbsp; return $theValue;</p>
<p>}</p>
<p>//两次密码输入确认</p>
<p>if($_POST['password'] != $_POST['password_cfm']) {</p>
<p>&nbsp; echo "&lt;script&gt;alert('错误：两次密码输入不一致！');&lt;/script&gt;";</p>
<p>}</p>
<p>//插入用户信息</p>
<p>if ((isset($_POST["MM_insert"])) &amp;&amp; ($_POST["MM_insert"] == "form1") &amp;&amp; </p>
<p>($_POST['password'] == $_POST['password_cfm'])) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //检查表单的有效性</p>
<p>{</p>
<p>&nbsp; $insertSQL = sprintf("INSERT INTO users (username, password, userflag, </p>
<p>last_upt_id) VALUES (%s, %s, 'user', %s)",&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //准备SQL语句</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetSQLValueString($_POST['username'], "text"),</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetSQLValueString($_POST['password'], "text"),</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; GetSQLValueString($_POST['username'], "text"));</p>
<p>&nbsp; mysql_select_db($database_conn, $conn);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //连接数据库</p>
<p>&nbsp; $Result1 = mysql_query($insertSQL, $conn) or die(mysql_error());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //执行SQL语句</p>
<p>&nbsp; $insertGoTo = "index.php";&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //首页文件</p>
<p>&nbsp; if (isset($_SERVER['QUERY_STRING'])) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //读取当前参数</p>
<p>&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp; $insertGoTo .= (strpos($insertGoTo, '?')) ? "&amp;" : "?";</p>
<p>&nbsp;&nbsp;&nbsp; $insertGoTo .= $_SERVER['QUERY_STRING'];</p>
<p>&nbsp; }</p>
<p>&nbsp;&nbsp;header(sprintf("Location: %s", $insertGoTo)); //跳转页面到首页</p>
<p>}</p>
<p>//检查网站是否关闭</p>
<p>if($row_rs_config['available_indc']==0) {</p>
<p>&nbsp; die("网站维护中 - 暂时无法访问");</p>
<p>}</p>
<p>if($row_rs_config['reg_indc']==0) {</p>
<p>&nbsp; die("网站注册已经关闭");</p>
<p>}</p>
<p>//调用模板文件</p>
<p>include('templates\\'.$row_rs_config['folder_name'].'\\reg.inc.php');</p>
<p>//关闭数据库连接</p>
<p>mysql_free_result($rs_config);</p>
<p>?&gt;</p>
<p>运行结果如图35-5所示。</p>
<p align="center"></p>
<p align="center">图35-5&nbsp; 注册新用户</p>
<h3 style="margin: 15.6pt 0cm 9.6pt 5pt">35.4.3&nbsp; 分类文章列表页面与文章显示页面的实现</h3>
<p>分类文章列表页面允许用户通过选择一个文章类别来获得该类别下的全部文章列表。该页面需要获取从浏览器地址栏传入的参数type_id，然后执行相应的SQL语句来获得数据。其流程如图35-6所示。</p>
<p align="center"></p>
<p align="center">图35-6&nbsp; 分类文章列表页面与文章显示页面的流程</p>
<p>具体代码如下所示。</p>
<p>&lt;!-- 分类文章列表页面文件：list.php --&gt;</p>
<p>&lt;?php require_once('Connections/conn.php'); ?&gt;</p>
<p>&lt;?php</p>
<p>$currentPage = $_SERVER["PHP_SELF"];</p>
<p>//设置默认的type_id为1，并获取传入的参数</p>
<p>$colname_rs_type = "1";</p>
<p>if (isset($_GET['type_id'])) {</p>
<p>&nbsp; $colname_rs_type = (get_magic_quotes_gpc()) ? $_GET['type_id'] : addslashes </p>
<p>($_GET['type_id']);</p>
<p>}</p>
<p>//连接数据库，获取类别信息</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_type = sprintf("SELECT * FROM types WHERE type_id = %s", $colname_ rs_type);</p>
<p>$rs_type = mysql_query($query_rs_type, $conn) or die(mysql_error());</p>
<p>$row_rs_type = mysql_fetch_assoc($rs_type);</p>
<p>$totalRows_rs_type = mysql_num_rows($rs_type);</p>
<p>//分页的设置</p>
<p>$maxRows_rs_articles = 10;</p>
<p>$pageNum_rs_articles = 0;</p>
<p>if (isset($_GET['pageNum_rs_articles'])) {</p>
<p>&nbsp; $pageNum_rs_articles = $_GET['pageNum_rs_articles'];</p>
<p>}</p>
<p>$startRow_rs_articles = $pageNum_rs_articles * $maxRows_rs_articles;</p>
<p>//连接数据库，获取文章内容</p>
<p>$colname_rs_articles = "1";</p>
<p>if (isset($_GET['type_id'])) {</p>
<p>&nbsp; $colname_rs_articles = (get_magic_quotes_gpc()) ? $_GET['type_id'] : </p>
<p>addslashes($_GET['type_id']);</p>
<p>}</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_articles = sprintf("SELECT * FROM articles WHERE checked_indc=1 AND </p>
<p>type_id = %s ORDER BY last_upt_time DESC", $colname_rs_articles);</p>
<p>$query_limit_rs_articles = sprintf("%s LIMIT %d, %d", $query_rs_articles, </p>
<p>$startRow_rs_articles, $maxRows_rs_articles);</p>
<p>$rs_articles=mysql_query($query_limit_rs_articles,$conn)or die(mysql_error());</p>
<p>$row_rs_articles = mysql_fetch_assoc($rs_articles);</p>
<p>//获得分页信息</p>
<p>if (isset($_GET['totalRows_rs_articles'])) {</p>
<p>&nbsp; $totalRows_rs_articles = $_GET['totalRows_rs_articles'];</p>
<p>} else {</p>
<p>&nbsp; $all_rs_articles = mysql_query($query_rs_articles);</p>
<p>&nbsp; $totalRows_rs_articles = mysql_num_rows($all_rs_articles);</p>
<p>}</p>
<p>$totalPages_rs_articles = ceil($totalRows_rs_articles/$maxRows_rs_ articles)-1;</p>
<p>//获得模板信息</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_config = "SELECT * FROM config, templates WHERE config.template_id </p>
<p>=templates.template_id";</p>
<p>$rs_config = mysql_query($query_rs_config, $conn) or die(mysql_error());</p>
<p>$row_rs_config = mysql_fetch_assoc($rs_config);</p>
<p>$totalRows_rs_config = mysql_num_rows($rs_config);</p>
<p>//构建SQL语句</p>
<p>$queryString_rs_articles = "";</p>
<p>if (!empty($_SERVER['QUERY_STRING'])) {</p>
<p>&nbsp; $params = explode("&amp;", $_SERVER['QUERY_STRING']);</p>
<p>&nbsp; $newParams = array();</p>
<p>&nbsp; foreach ($params as $param) {</p>
<p>&nbsp;&nbsp;&nbsp; if (stristr($param, "pageNum_rs_articles") == false &amp;&amp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; stristr($param, "totalRows_rs_articles") == false) {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; array_push($newParams, $param);</p>
<p>&nbsp;&nbsp;&nbsp; }</p>
<p>&nbsp; }</p>
<p>&nbsp; if (count($newParams) != 0) {</p>
<p>&nbsp;&nbsp;&nbsp; $queryString_rs_articles = "&amp;" . htmlentities(implode("&amp;", $newParams));</p>
<p>&nbsp; }</p>
<p>}</p>
<p>$queryString_rs_articles = sprintf("&amp;totalRows_rs_articles=%d%s", </p>
<p>$totalRows_rs_articles, $queryString_rs_articles);</p>
<p>//检查网站是否可用</p>
<p>if($row_rs_config['available_indc']==0) {</p>
<p>&nbsp; die("网站维护中 - 暂时无法访问");</p>
<p>}</p>
<p>//调用模板文件</p>
<p>include('templates\\'.$row_rs_config['folder_name'].'\\list.inc.php');</p>
<p>//关闭数据库连接</p>
<p>mysql_free_result($rs_type);</p>
<p>mysql_free_result($rs_articles);</p>
<p>mysql_free_result($rs_config);</p>
<p>?&gt;</p>
<p>运行结果如图35-7所示。</p>
<p align="center"></p>
<p align="center">图35-7&nbsp; 文章分类页面</p>
<p>文章显示页面的实现与文章分类页面类似，通过获得传入的参数article_id来获取文章内容。具体代码如下所示。</p>
<p>&lt;?php require_once('Connections/conn.php'); ?&gt;</p>
<p>&lt;?php</p>
<p>//获得参数</p>
<p>$colname_rs_article = "1";</p>
<p>if (isset($_GET['article_id'])) {</p>
<p>&nbsp; $colname_rs_article = (get_magic_quotes_gpc()) ? $_GET['article_id'] : </p>
<p>addslashes($_GET['article_id']);</p>
<p>}</p>
<p>//查询文章内容</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_article = sprintf("SELECT * FROM articles, types WHERE checked _indc=1 </p>
<p>AND article_id = %s AND articles.type_id = types.type_id", $colname_ rs_article);</p>
<p>$rs_article = mysql_query($query_rs_article, $conn) or die(mysql_error());</p>
<p>$row_rs_article = mysql_fetch_assoc($rs_article);</p>
<p>$totalRows_rs_article = mysql_num_rows($rs_article);</p>
<p>//查询网站配置信息</p>
<p>mysql_select_db($database_conn, $conn);</p>
<p>$query_rs_config = "SELECT * FROM config, templates WHERE config.template_id </p>
<p>=templates.template_id";</p>
<p>$rs_config = mysql_query($query_rs_config, $conn) or die(mysql_error());</p>
<p>$row_rs_config = mysql_fetch_assoc($rs_config);</p>
<p>$totalRows_rs_config = mysql_num_rows($rs_config);</p>
<p>//检查网站是否开启</p>
<p>if($row_rs_config['available_indc']==0) {</p>
<p>&nbsp; die("网站维护中 - 暂时无法访问");</p>
<p>}</p>
<p>//HTML转换函数</p>
<p>function conv($Text) {</p>
<p>$Text=htmlspecialchars($Text);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //转换HTML关键字符&nbsp; </p>
<p>$Text=nl2br($Text); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //转换换行符</p>
<p>return $Text;</p>
<p>}</p>
<p>include('templates\\'.$row_rs_config['folder_name'].'\\show.inc.php');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //调用模板文件</p>
<p>//关闭数据库连接</p>
<p>mysql_free_result($rs_article);</p>
<p>mysql_free_result($rs_config);</p>
<p>?&gt;</p>
<p>运行结果如图35-8所示。</p>
<img src ="http://www.blogjava.net/jvict/aggbug/306068.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/jvict/" target="_blank">Documents</a> 2009-12-15 21:34 <a href="http://www.blogjava.net/jvict/articles/306068.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>