﻿<?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-网摘-文章分类-php</title><link>http://www.blogjava.net/jvict/category/43027.html</link><description /><language>zh-cn</language><lastBuildDate>Sat, 23 Jan 2010 15:21:06 GMT</lastBuildDate><pubDate>Sat, 23 Jan 2010 15:21:06 GMT</pubDate><ttl>60</ttl><item><title>CentOS 5.4环境下的php5.3.1手动安装</title><link>http://www.blogjava.net/jvict/articles/309941.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Mon, 18 Jan 2010 04:42:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/309941.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/309941.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/309941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/309941.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/309941.html</trackback:ping><description><![CDATA[CentOS 5.4环境下的php5.3.1手动安装<br />
<br />
Cent自带的版本是5.1.16，现下载php5.3.1安装包tar.gz,解压到/usr/local/src中<br />
执行下述命令：<br />
./configure \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--prefix=/usr/local/php" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-apxs2=/usr/sbin/apxs" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-config-file-path=/usr/local/php/etc" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-mysql=/usr/local/mysql" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-mysqli" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-libxml-dir=/usr/lib/libxml" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-gd" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-pdo-mysql" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-pdo-sqlite" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-jpeg-dir" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-png-dir" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-bz2" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-pear=/usr/lib/pear" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-freetype-dir" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-iconv-dir" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-zlib-dir " \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--with-mcrypt=/usr/lib/libmcrypt" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-sockets" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-soap" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-sqlite-utf8" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-gd-native-ttf" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-ftp" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-mbstring" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--enable-exif" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--disable-ipv6" \<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "--disable-cgi"
<img src ="http://www.blogjava.net/jvict/aggbug/309941.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> 2010-01-18 12:42 <a href="http://www.blogjava.net/jvict/articles/309941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>FreeBSD 8 mysql apache php java整合</title><link>http://www.blogjava.net/jvict/articles/309446.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Thu, 14 Jan 2010 05:47:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/309446.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/309446.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/309446.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/309446.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/309446.html</trackback:ping><description><![CDATA[<strong>1.下载安装FreeBSD 8，ＤＶＤ１<br />
2.安装mysql 5 - 利用ports安装<br />
</strong><font size="2">cd /usr/ports/databases/mysql50-server/ <br />
make install clean # n长的编译过程 <br />
rehash <br />
mysql_install_db --user=mysql <br />
chown -R mysql /var/db/mysql/<br />
chgrp -R mysql /var/db/mysql/<br />
/usr/local/bin/mysqld_safe -user=mysql &amp;<br />
<br />
mysqld_safe－－MySQL服务器启动脚本 <br />
mysqld_safe是在Unix或是NetWare系统推荐使用来启动MySQL服务器的方法。mysqld_safe添加了许多安全的特征，例如，当发生错误时重新启动服务器，并且可以将运行时的信息写入错误日志文件<br />
<br />
<li>The port installation will put a script file mysql-server.sh<br />
in /usr/local/etc/rc.d which will has capability to start MySQL server.<br />
To enable MySQL server to start automatically after every FreeBSD<br />
server reboot, enter the following command in CLI:
<p><span style="color: red">echo &#8216;mysql_enable=&#8221;YES&#8221;&#8216; &gt;&gt; /etc/ rc.conf<br />
</span></p>
<p>mysqladmin -u root password newpassword (改变root帐户密码）<br />
</p>
<li>MySQL 5.0 installation done. <br />
------------------------------------------------------------------------<br />
<strong>3.安装 Apache Web Server 2.2<br />
</strong>Install Apache HTTP Server 2.20 by using FreeBSD Ports Collection: <br />
cd /usr/ports/www/apache22<br />
make install clean<br />
<li>A Apache HTTP Server script apache22.sh is located at<br />
/usr/local/etc/rc.d to provide Apache HTTP Server start and shutdown <font color="#333333">.</font> <br />
service. To enable Apache web server to automatically starts whenever<br />
after server reboots, issue the following command at CLI: <br />
<span style="color: red">echo &#8216;apache22_enable =&#8221;YES&#8221;&#8216; &gt;&gt; /etc/ rc.conf<br />
</span>
<li>To start Apache HTTP web server immediately, use: <br />
/usr/local/sbin/apachectl start<br />
or<br />
/usr/local/etc/rc.d/apache22.sh start<br />
<li>Apache installation finished. <br />
<br />
<strong>4.Installing PHP Hypertext Preprocessor Scripting Language 5 and PHP 5 Extensions<br />
</strong>
<li>Install by enter the following commands on FreeBSD OS command line,<br />
wait for previous command to finish before running the next command: cd /usr/ports/lang/php5<br />
make install clean<br />
<li>If you&#8217;re prompted, select &#8220;use Apache 2.x instead&#8221;. <br />
<li>Continue with the following commands to install PHP5 extensions and modules to enable the support of the modules in Apache: <br />
cd /usr/ports/lang/php5-extensions </font>make config<br />
<li>At Options for php5-extension 1.0 menu, select all PHP<br />
extensions and modules that you may use with Apache webserver. This is<br />
a part of the configuration for PHP, where you need to enable features<br />
of PHP that come in modules, such as ability to manage user sessions,<br />
interface with databases and many others. Default extensions such as<br />
ctype functions support, HASH Message Digest Framework support, session<br />
support and etc have been selected. Other popular extensions that you<br />
most likely to be in used are MySQL database support and GD library<br />
support. Use space bar to select or unselect the extensions and press<br />
Enter when done.
<li>Continue the installation of php5-extensions with the following commands: <br />
make install clean<br />
<li>If there are any message the pops up and prompts you to select<br />
some options or configurations, you can just accept the default<br />
settings by pressing Enter. Some modules that may prompt you for action&nbsp; <br />
include php5-gd, php5-mbstring and php5-sqlite.
<li>Edit the Apache configuration file in order to enable Apache web server to load the PHP modules when initialization: <br />
<li>Go to Apache configuration file location by cd /usr/local/etc/apache2/ <br />
<li>Edit Apache configuration file by vi httpd.conf <br />
<li>Search for LoadModule lines, after the last LoadModule line, but within the same section, add the following 2 lines: <br />
AddType application/x- httpd-php .php<br />
AddType application/x- httpd-php-source .phps<br />
<li>Optionally, copy /usr/local/etc/php.ini-recommended or<br />
/usr/local/etc/php.ini-dist to /usr/local/etc/php.ini (in same<br />
directory), which will enable you to tune and change the default<br />
settings of behaviours of PHP.
<li>Start the Apache HTTP web server by using apachectl start<br />
(or restart Apache HTTP web server by using apachectl restart).<br />
apachectl is located in /usr/local/sbin, if you encounter Command not<br />
found problem, try to change directory to its location.
<li>PHP5 installation done. <font color="#333333">。</font> <br />
A web server has been setup with the FreeBSD with Apache, MySQL and<br />
PHP. The document root of the web server (where you should put your<br />
HTML and PHP files is at /usr/local/www/apache22/data/ and you will<br />
need a SecureFTP (SFTP) client such as WinSCP to upload your files to<br />
web server securely.
<p><br />
<strong>5.安装php后若apache不能启动：<br />
</strong>在 FreeBSD 下安装 apache22 会出现类似的 warming:<br />
No such file or directory: Failed to enable the 'httpready' Accept Filter</p>
<p>解决方案：<br />
#kldload accf_http并在 /boot/defaults/loader.conf 中加入下面 2 行，以便下次启动自动装载模块<br />
accf_data_load="YES"<br />
accf_http_load="YES"<br />
<br />
<strong>问题</strong><br />
[root@freebsd ~]# apachectl -t<br />
httpd: Could not reliably determine the server's fully qualified domain name, using freebsd.web for ServerName</p>
<p>解决方案：<br />
vi /usr/local/etc/apache22/httpd.conf<br />
添加这么一行：<span style="color: red">ServerName 127.0.0.1:80</span></p>
</li>
<img src ="http://www.blogjava.net/jvict/aggbug/309446.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> 2010-01-14 13:47 <a href="http://www.blogjava.net/jvict/articles/309446.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解读PHP网站开发需要掌握的10个技巧-PHP编程教程</title><link>http://www.blogjava.net/jvict/articles/306116.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Wed, 16 Dec 2009 03:04:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/306116.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/306116.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/306116.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/306116.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/306116.html</trackback:ping><description><![CDATA[<p><strong>原文：http://www.mb5u.com/biancheng/php/php_32959.html</strong></p>
<p><strong><br />
</strong></p>
<p><strong>1.完全理解&#8220;魔术引号&#8221;和 SQL 注入的危险性。</strong>我希望阅读到这里的开发者都已经很对 SQL
注入和了解了。不过我还是把这条列在这里，是因为这个确实有点难以理解</p>
<p><strong>2.在验证 email 地址的时候使用 checkdnsrr()
函数验证域名是否存在。</strong>这个内置函数能够确认指定的域名能够解析成 IP 地址。该函数的PHP
档的用户评论部分有一个简单的用户自定义函数，这个函数基于 checkdnsrr()，用来验证 email 地址的合法性。对于那些认为自己的 email 地址是
&#8220;joeuser@wwwphp.net&#8221; 而不是 &#8220;joeuser@php.net&#8221; 的家伙们，这个方法可以很方便的抓住他们。</p>
<p><strong>3.如果你使用的是 PHP 5 和 MySQL 4.1 或者更高的版本，考虑抛弃 mysql_* 系列函数改用改进版的 mysqli_*
系列函数。</strong>一个很好的功能就是你可以使用预处理语句，如果你在维护一个数据库密集型站点，这个功能能够加快查询速度。一些评估分数。</p>
<p><strong>4.学会爱上三元运算符。</strong></p>
<p><strong>5.如果你在项目中感觉到有可复用的部分，在你写下一行代码前先看看 PEAR 中是否已经有了。</strong>很多 PHP 程序员都知道
PEAR 是一个很好的资源库，虽然还有很多程序员不知道。这个在线资源库包含了超过 400
个可以复用的程序片段，这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的，你总能找到帮你节省时间的 PEAR 包。（参见 PECL）</p>
<p><strong>6.用 highlight_file() 来自动的打印出格式化的很漂亮的源代码。</strong>如果你在留言板、IRC
这些地方寻求一个脚本的帮助的话，这个函数用起来非常的顺手。当然了，要小心不要意外的泄露出你的数据库连接信息和密码等。
//在此之前我还真不知道有highlight_string()/highlight_file这样的好东东</p>
<p><strong>7.使用 error_reporting(0) 函数来防止用户看到潜在的敏感错误信息。]</strong>在理想情况下，发布服务器应该在
php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话，你没有自己的 php.ini
文件，那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);（或者使用 require_once()
方法）。这就能够在出错的时候完全屏蔽敏感的 SQL 查询语句和路径名。</p>
<p><strong>8.在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress()
来显式的压缩/解压字符串。</strong>这个 PHP 内置函数使用 gzip 算法，可以压缩普通文本达 90%。在我每次要读写 BLOB
类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。</p>
<p><strong>9.通过&#8220;引用&#8221;传递参数的方法从一个函数中得到多个返回值。</strong>就像三元运算符一样，大部分受过正式编程训练的程序员都知道这个技巧。但是那些
HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问&#8220;在仅能使用一次 return
的情况下，从一个函数里返回多个值？&#8221;答案就是在变量前加上一个 &#8220;&amp;&#8221; 符号，通过&#8220;引用&#8221;传递而非&#8220;值&#8221;传递。</p>
<p><strong>10.使用 ip2long() 和 long2ip() 函数来把 IP
地址转化成整型存储到数据库里。</strong>这种方法把存储空间降到了接近四分之一（char(15) 的 15 个字节对整形的 4
个字节），计算一个特定的地址是不是在一个区段内页更简单了，而且加快了搜索和排序的速度（虽然有时仅仅是快了一点）。</p>
<img src ="http://www.blogjava.net/jvict/aggbug/306116.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-16 11:04 <a href="http://www.blogjava.net/jvict/articles/306116.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Nginx 0.6.31 + PHP 5.2.6（FastCGI）搭建胜过Apache十倍的Web服务器</title><link>http://www.blogjava.net/jvict/articles/306088.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Wed, 16 Dec 2009 00:46:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/306088.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/306088.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/306088.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/306088.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/306088.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 原文：http://www.phpv.net/html/1606.htmlNginx("engine x") 是一个高性能的 HTTP 和反向代理服务器，也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超过两年半了。Igor将源代码以类BSD许可证的形式发...&nbsp;&nbsp;<a href='http://www.blogjava.net/jvict/articles/306088.html'>阅读全文</a><img src ="http://www.blogjava.net/jvict/aggbug/306088.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-16 08:46 <a href="http://www.blogjava.net/jvict/articles/306088.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><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><item><title>UltraEdit添加php、python支持（总结）</title><link>http://www.blogjava.net/jvict/articles/305729.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Sat, 12 Dec 2009 08:53:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/305729.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/305729.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/305729.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/305729.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/305729.html</trackback:ping><description><![CDATA[<p>首先，添加对于php和python语法高亮的支持</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看了网上的介绍，需要改写wordfile，不过发现15版本之后，其实没有那么麻烦了，<a href="ftp://ultraedit.com/wf/wf.zip">ftp://ultraedit.com/wf/wf.zip</a>，下载这个文件，展开自己选择添加吧，400多种语言，加入到C:\Documents and Settings\Administrator\Application Data\IDMComp\UltraEdit\wordfiles（默认地址）下，重启UltraEdit，就ok了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 需要提醒一句，如果把解压包里面都添加的话，建议把原有的删除了，否则冲突。。</p>
<p>其次，设置python ide环境</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 打开UE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 菜单项：高级／工具配置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入项如下设置：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令行： python %n%e<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工作目录：%p<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 菜单项名称：运行python程序</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; python环境变量设置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选项设置：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 勾选&#8220;保存活动文件&#8221;选项<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令行输出（DOS命令）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 勾选&#8220;输出到列表窗口&#8221;，&#8220;捕捉输出&#8221;</p>
<p>再次，设置php语法补全及语法检查</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 菜单项：高级/配置/编辑器/自动完成<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将自动显示自动完成对话框前打钩</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 菜单项：高级／工具配置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入项如下设置：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令行： D:\AppServ\php5\php.exe -l -f %F<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工作目录：D:\AppServ\php5\ext<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 菜单项名称：<font color="#29568f"><font color="#000000">PHP</font> </font>syntax Check<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 选项设置：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 勾选&#8220;保存活动文件&#8221;选项<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令行输出（DOS命令）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 勾选&#8220;输出到列表窗口&#8221;，&#8220;捕捉输出&#8221;</p>
<p>顺便把java的部分贴上来，以后或许会用到</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 菜单项：高级／工具配置<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 输入项如下设置：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 命令行： java %n%e<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 工作目录：%p<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 菜单项名称：运行java程序</p>
<p>好了，两个都设置好了，win下，实在觉得eclipse太大了点，gvim感觉太差，还是这个好了，恩<br />
说一句，都是google出来的结果，所以还要感谢很多的热心人共享</p>
<img src ="http://www.blogjava.net/jvict/aggbug/305729.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-12 16:53 <a href="http://www.blogjava.net/jvict/articles/305729.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP_ZendFramework相关备注-PDO_MSQL安装</title><link>http://www.blogjava.net/jvict/articles/305661.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Fri, 11 Dec 2009 15:26:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/305661.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/305661.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/305661.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/305661.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/305661.html</trackback:ping><description><![CDATA[&#183;PDO_MYSQL未安装<br />
之前安装php5.3.1时，未安装PDO_MYSQL扩展，所以ZendFramewok程序做好后无法连接mysql。直接下载PDO_MSQL扩展单独安装时提示mysql.h找不到。<br />
重新编译php5.3.1源码，编译时加上参数<br />
&nbsp;--with-mysql=/usr/local/mysql&nbsp; --with-mysqli=/usr/local/mysql/bin/mysql_config&nbsp; --with-pdo-mysql=/usr/bin/mysql_config<br />
后，程序能正常运行。
 <img src ="http://www.blogjava.net/jvict/aggbug/305661.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-11 23:26 <a href="http://www.blogjava.net/jvict/articles/305661.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下手动安装pdo_mysql</title><link>http://www.blogjava.net/jvict/articles/305651.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Fri, 11 Dec 2009 14:23:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/305651.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/305651.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/305651.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/305651.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/305651.html</trackback:ping><description><![CDATA[原文1：<a href="http://www.linuxdiyf.com/viewarticle.php?id=88301">http://www.linuxdiyf.com/viewarticle.php?id=88301</a><br />
原文2：http://apipi.blog.163.com/blog/static/42266381200911641949868/<br />
<br />
原来编译php的时候，没有把dpo_mysql相关的参数带上，安装完后才发现。再重新编译有点费时间，所以决定单独来安装。<br />
<br />
先到<a href="http://pecl.php.net/" target="_blank">http://pecl.php.net/</a>找需要的版本，我用的是稳定的版本。要先看看说明，特别是要注意mysql的php的版本。<br />
<br />
wget <a href="http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz" target="_blank">http://pecl.php.net/get/PDO_MYSQL-1.0.2.tgz</a><br />
tar xzvf PDO_MYSQL-1.0.2.tgz<br />
cd PDO_MYSQL-1.0.2<br />
/usr/local/php/bin/phpize<br />
Configuring for:<br />
PHP Api Version: 20041225<br />
Zend Module Api No: 20060613<br />
Zend Extension Api No: 220060519<br />
./configure --with-php-config=/usr/local/php/bin/php-config<br />
<br />
经过configure就可以make了<br />
<br />
make<br />
make install注意pdo_mysql的全路径，我的是：<br />
<br />
/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so<br />
<br />
然后在/usr/local/lib/php.ini<br />
<br />
加上一句：<br />
<br />
extension=/usr/local/php/lib/php/extensions/debug-non-zts-20060613/pdo_mysql.so<br />
<br />
重新启动apache即可看到已经加载pdo_mysql成功。<br />
<br />
--------------------------------------------------------------------------------------------<br />
<p>安装 PHP 时，刚执行 ./php.config.sh</p>
<p>checking for MSSQL support via FreeTDS.. no </p>
<p>checking for MySQL support... yes </p>
<p>checking for specified location of the MySQL UNIX socket... no </p>
<p>checking for MySQL UNIX socket location... /tmp/mysql.sock </p>
<p>configure: error: Cannot find MySQL header files under yes. </p>
<p>Note that the MySQL client library is not bundled anymore.</p>
<p>&nbsp;解法：　　　 </p>
<p>如果不知道 header file 在哪，用 「find / -name mysql.h」命令找出其位置；　　　</p>
<p>如果是自己也有手動安裝 MySQL 套件的話，直接指定該位置。 </p>
<p>在 ./configure 下参数指定 header file 的位置（即mysql安装目录），如下: </p>
<p>./configure --with-apxs2=/usr/local/Apache2/bin/apxs --with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql/bin/mysql_config </p>
<p>&nbsp;</p>
<p>如果依然提示找不到mysql_config提示：</p>
<p>checking for mysql_config... /usr/bin/mysql_config is not a directory<br />
configure: error: can not find mysql under the /usr/bin/mysql_config that you specified</p>
<p>则cp /usr/local/mysql/bin/mysql_config /<font color="#cc0033">usr/bin/mysql_config</font> </p>
<p>&nbsp;</p>
<p>php.config.sh的编译参数如下：</p>
<p>#! /bin/sh<br />
ulimit -HSn 65536<br />
CFLAGS="-march=pentium4 -O2 -pipe -fomit-frame-pointer"; CXXFLAGS="$CFLAGS" ;export CFLAGS CXXFLAGS<br />
#LDFLAGS="-L/usr/lib64 -L/lib64"; export LDFLAGS</p>
<p>./configure --enable-inline-optimization --disable-debug&nbsp; --with-mysql=/usr/local/mysql&nbsp; --with-mysqli=/usr/local/mysql/bin/mysql_config --with-apxs2=/usr/local/apache2/bin/apxs --with-iconv --with-curl --enable-mbstring --enable-sockets --with-png-dir --with-jpeg-dir=/usr/local/jpeg6/lib --with-freetype-dir --with-gd --with-libxml-dir=/usr --enable-xml --enable-zip --with-zlib-dir --with-gettext --enable-pdo --with-pdo-sqlite --with-pdo-mysql=/usr/bin/mysql_config --enable-calendar --enable-ftp --with-pcre-regex --disable-ipv6 --enable-soap</p>
<img src ="http://www.blogjava.net/jvict/aggbug/305651.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-11 22:23 <a href="http://www.blogjava.net/jvict/articles/305651.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Zend Framework command line console tools</title><link>http://www.blogjava.net/jvict/articles/305416.html</link><dc:creator>Documents</dc:creator><author>Documents</author><pubDate>Thu, 10 Dec 2009 06:22:00 GMT</pubDate><guid>http://www.blogjava.net/jvict/articles/305416.html</guid><wfw:comment>http://www.blogjava.net/jvict/comments/305416.html</wfw:comment><comments>http://www.blogjava.net/jvict/articles/305416.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/jvict/comments/commentRss/305416.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/jvict/services/trackbacks/305416.html</trackback:ping><description><![CDATA[<div class="main">原文：http://ray.imiddle.net/2009/07/21/zend-framework-command-line-console-tools/<strong><br />
Zend Framework Command Line Console Tool v1.8.4</strong>
<p><code>Usage:</code></p>
<p><code><em>zf [--global-opts] action-name [--action-opts] provider-name [--provider-opts] [provider parameters ...]</em><br />
</code></p>
<p>Providers and their actions:</p>
<ul>
    <li><strong>Version</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf show version mode[=mini] name-included[=1]</em><br />
查看当前Zend Framework的版本信息。你可以使用<em>zf show version ?</em> 获得更多的帮助信息。</p>
<ul>
    <li><strong>Phpinfo</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf show phpinfo<br />
</em>查看PHP配置信息。</p>
<ul>
    <li><strong>Manifest</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf show manifest<br />
</em>查看项目的Manifest<em></em></p>
<ul>
    <li><strong>Profile</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf show profile<br />
</em>查看项目的Profile</p>
<ul>
    <li><strong>Project</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf create project path<br />
</em>创建新的项目</p>
<p style="padding-left: 30px">
<ul>
    <li><strong>View</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf create view controller-name action-name-or-simple-name<br />
</em>创建View</p>
<ul>
    <li><strong>Controller</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf create controller name index-action-included[=1] module<br />
</em>创建Controller</p>
<p style="padding-left: 30px">
<ul>
    <li><strong>Action</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf create action name controller-name[=index] view-included[=1] module</em></p>
<ul>
    <li><strong>Module</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf create module name</em></p>
<ul>
    <li><strong>ProjectProvider</strong> </li>
</ul>
<p style="padding-left: 30px"><em>zf create project-provider name actions</em></p>
</div>
<img src ="http://www.blogjava.net/jvict/aggbug/305416.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-10 14:22 <a href="http://www.blogjava.net/jvict/articles/305416.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>