版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教程连载 1:PhpChina 留言本实例在第一期中,我们来一步一步实现一个最根本的留言本。留言信息包括留言者,留言内容, IPHTMLPHP语法比较娴熟了第一步:设计数据库n,然后在数据库中建一个表 message5:字段名类型长度属性额外其他idint10unsignedauto_increment主键usernamechar100contenttexttimeint10unsignedipchar15然后下面数据库类型选择 各个类型的优缺点请查看 L手册,整理选择utf8_general_ci。每个字段的含义:id - 10unsigned是说明这个字段(由于假设原来的范围是 -9 到1
2、0unsigned0 19)auto_increment,说明这个字段是自动增加的,我们不用管插入数据时它是啥值,它会自动在最大的 id 的根底上1,其他设置为主键。username-留言者的名字,类型为字符型(关于 char 与 varchar 的区分请查看MYSQL 手册)100(正常人用户名不行能超过 100 吧,其实应当尽量削减长度,提高性能,节约空间)content-text(text blob text 不区分大小写,blob 对字符的大小写),text 类型可以存足够多的数据,足够存好几篇文章了,此类型不能设置长度,否则报错。time-int10UNIX时间戳(PHPtime10
3、 位数字)xxxx-xx-xx这样的格式,为何这样后面或解释。ip-IPxxx.xxx.xxx.xxx1515。其次步:设计界面BXNA的界面( HYPERLINK “ :/blog.blueidea /“ :/blog.blueidea )HTMLCSS10期也写不完这个留言本了 (code文件html 文件,是单独分别出来的)第三步:开头写程序咯先要想好程序的整体构架,代码执行的流程等。先说一下我们做的这个程序的整体运行流程:URL 参数(ma)来调用不同的模块文件里的不同函数。比方URL index.php?m=user&a=infomod_user.php,并调用里面的函数user_i
4、nfo;HTML不会直接输出,由于我们要用到 smarty,最终一次性输出或跳到别的页面。全部的恳求都是从index.php 这个入口开头,mod 文件不能被直接调用。下面开头写程序入口局部:includesconfig.inc.php,全部function.inc.phpPHP,这样通过扫瞄器直接访问这些文件将看到空白(没有输出)。config.inc.php5个常量:define(”DB_HOST” , ”localhost”); define(”DB_USER” , ”root”); define(”DB_PASSWORD”,”12345”);define(”DB_NAME”,”gb”)
5、;define(”IN”,true);function.inc.php用来存放自定义函数。/数据库用户名/数据库密码/数据库名在这一期中总共有 3 个自定义函数。具体代码请查看文件,有具体注释。print_mysql_error显示数据库错误信息,并终止脚本get_client_ip IPHTMLsmarty在后面会讲到简洁用法error_reporting(E_ALL);header(“Content-Type:error_reporting(E_ALL);header(“Content-Type:text/html;charset=utf-8“); 和数据库设置的编码全都$mod_list
6、 是一个数组,包含合法的模块名(URL中的参数m)URL 中不同main add,用来显示留言和添加留言。依据不同的$_GET”m”,调用不同的 mod 文件。然后依据不同的$_GET”a”,调用不同的函数。比方$_GET”m” = ”main,$_GET”a”upmods/mod_main.php,并调用这个文件里的 main_upmain_函数。smarty HTMLPHP的分别,这样有利于美工和程序员协同工作。假设你没有用过 smarty 你想学好它,建议去它的官方站看看,并下载一份手册。( HYPERLINK “ :/ :/ )MYSQL PHP中自带的函数。假设你现在直接访问 ind
7、ex.php,他会提示 mod_main.php 文件不存在。(由于默认是调用这个文件)下面开头写模块局部?phpif(!defined(”IN”)die(”Accessdenied”);functionassign(”message$message_array);elseprint_mysql_error;$smarty-fetch(”message.tpl”);”id”=$rs”id”,”username”=$rs”username”,”content”=$rs”content”,”time”ip”=date(“Y-m-dH:i:s“,$rs”time”),=$rs”ip”,);mod_m
8、ain.php的主要流程:if(!defined(”IN”)die(”Accessdenied”);这个用来确认该文件是否是被 index.php 文件包含由于 index.php 包含了config.inc.phpconfig.inc.php IN),假设 IN常量没被定义,证明不index.php 包含的,则完毕脚本,并输出Access denied。这是一个常用的防止一个文件被直接调用的方法。SELECT*FROMmessageORDERBYidDESCmessageid字段倒序排列。mysql_errno00 print_mysql_error函数输出错误信息,并完毕整个代码。假设没有
9、错误,则用 while 循环取得信息一条留言循环一次。在循环中,先定义一个空数组 $message_array = array,然后每循环一次,往这个数组中插入另一个数组,组成一个二维数组。存的都是留言信息。循环完后$smarty-assign(”message” , $message_array); 即把$message_array 变量赐予smarty 中的 message,用来做模板里的 替换$message 局部替换为$message_array 变量的值。return $smarty-fetch(”message.tpl”); message.tpl模板的信息,替换模板变量后并返回。
10、#sectionname=kloop=$message#sectionname=kloop=$message#/section#这样一段代码,它的意思即循环输出,$message 不是一个数组么,即循环输出这个数组。其中#$messagek.username#这个意思是指这里要替换的内容是 $message 变量中username,即用户名。其它几个变量也一个道理。smarty 手册。最终h即取回嘛整个已经把全部模板变量替换完成,返回给里的$main_body。smarty 的工作流程了呢?smarty用$smarty-assign 设置要替换的变量,第一个参数是模板要被替换的局部。用$sma
11、rty-fetch取回替换完后的模板(HTML)display 直接输出。smarty php 中差不多(边界符可以在初化时定义):1#if $var#show something#else#show other thing#/if#2上面提到的循环构造 section (foreachsmarty 手册)3#$var# 直接输出变量大局部时候就用到这几种构造就行了,还有一些比较高级的,比方可以在模板里截取字符串,格式化时间等等,都可以在手册中查看,都有比较具体的例子。然后在 index.php 里$smarty-assign(”main_body” , $main_body); 替换模板变量
12、并输出$smarty-display(”index.tpl”);y中y和h的唯一区分就是y等于oh完后再输出。phpMyAdmin往数据库里手工插入几条数据,然后刷首页,即可看到效果了Add URL 变了,但还是显示首页,为什么呢?看看L可以发先此时参数m为ap文件,但现在此文件还不存在我们还没做到这步哈_p文件,main_函数,即和首页调用的同一个函数,显示同样的东西。现在我们来做一个添加留言的模块 add:modsmod_add.php。具体代码:fetch(”add_form.tpl”);此函数的代码相当简洁,就两行:global$smarty;return$smarty-fetch(”
13、add_form.tpl”);信任大家都能看懂了,其实就是直接取 add_form.tpl文件,不经过任何模板变量替换直接index.php里的$main_body一个表单,也没要替换的变量的显示出表单,我们得想方法往数据库里插入用户提交的留言信息了: add_doadd,用来处理用户的提交信息。具体代码:functionfunctionadd_doaddPost过来的数据,分别为用户名和留言内容$content=$_POST”content”;$timetime;(10位数字)$ipget_client_ip;$sql = “INSERT INTO message (username,con
14、tent,time,ip)VALUES(”$username”,”$content”,$time,”$ip”)“;mysql_query($sql); returnshow_result_(”留言提交成功1”index.php”返回首页”);else/否则返回错误信息排版比较乱,具体请查看文件里的代码。UNIX时间戳(10 位数字)IP,然后插入数据库,并推断插入操作是否成功,真则返回成功信息,假则返回错误信息,并让用户返回上一页。这时提交功能已经做成功了,你可以提交一些信息,并刷首页,就可以观察刚提交的留言了。可能你会觉察提交空用户名和空留言也能提交成功。这是由于我们没有推断用户的输入。在
15、$timetime; 的上一行参加以下代码:/推断用户名是否为空if(empty($username)returnshow_result_(”留言提交失败.没有填写用户名”);ifempty($contentreturnshow_result_(”留言提交失败.没有填写留言内容”);这样就行了,即推断是否为空,空则返回失败,并终止脚本。在这解释以下为什 么时间要用 UNIX 时间戳 这样的 10 位数字,而不用我 们生疏的xxxx-xx-xx xx:xx:xx 这样的格式。用时间戳的好处在于简洁比较时间的大小(时间越靠后固然时间戳就越大),简洁算出两饿时间之间间隔了多少秒,并可以转换为分,小时
16、,天UNIXphptime,datemktime等函数。你是否觉察此时提交的留言就算自己输入了换行,但显示时却不换行,而只显示一个空格 呢?那是由于我们提交的换行是n,这个只有在 HTML 源代码里才显示出换行,而扫瞄器中显示的换行应当是r n替换为r。ubb.inc.phpincludesubb,并1个替换,具体代码请查看对应文件。mod/mod_main.php,用此函数过滤一下留言内容$content:$message_array$message_array=array;在他上面一行参加:require_once(require_once(ROOT_PATH.”includes/ubb.inc.php”);”content”content”=$rs”content
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户口租赁合同范本
- 运动会保安服务合同范本
- 购买验收合同范本
- 找中介二手房买卖合同范本
- 根雕销售合同范本
- 公司快递合同范本
- 农村田地买卖转让合同范本
- 《限制性辅助器材对规范自由泳初学者技术动作的实验研究》
- 简单维修合同范本
- 《上市公司零杠杆政策动因及经济后果研究》
- 碳排放核算与报告要求 第XX部分:铅冶炼企业
- DZ∕T 0215-2020 矿产地质勘查规范 煤(正式版)
- 2024中国铁路成都局招聘笔试冲刺题(带答案解析)
- 肺功能进修总结汇报
- 多图中华民族共同体概论课件第十一讲 中华一家与中华民族格局底定(清前中期)根据高等教育出版社教材制作
- 数据编码第二课时课件高中信息技术教科版必修1
- 2.贵州省地方标准项目申报书
- 小学三年级一位数乘两位数的乘法练习题(500道)
- “读思达”教学法在整本书阅读教学中的实践
- 老旧小区燃气管道改造方案
- 生产制造企业车间管理实务课程
评论
0/150
提交评论