经典PHP留言本教程
- 格式:doc
- 大小:104.50 KB
- 文档页数:7
PHP实现的简单留⾔板功能⽰例【基于thinkPHP框架】本⽂实例讲述了PHP实现的简单留⾔板功能。
分享给⼤家供⼤家参考,具体如下:⼊⼝⽂件⽂件名 index.php<?php// 应⽤⼊⼝⽂件// 检测PHP环境if(version_compare(PHP_VERSION,'5.3.0','<')) die('require PHP > 5.3.0 !');// 开启调试模式建议开发阶段开启部署阶段注释或者设为falsedefine('APP_DEBUG',True);//开发调试模式//define('APP_DEBUG',false);//⽣产模式// 定义应⽤⽬录define('APP_PATH','./Message/');// 引⼊ThinkPHP⼊⼝⽂件require './ThinkPHP/ThinkPHP.php';// 亲^_^ 后⾯不需要任何代码了就是如此简单配置⽂件⽂件名 config.php<?phpreturn array(//'配置项'=>'配置值''SHOW_PAGE_TRACE'=>true,'DB_TYPE' => 'mysqli', // 数据库类型'DB_HOST' => '127.0.0.1', // 服务器地址'DB_NAME' => 'msg', // 数据库名'DB_USER' => 'root', // ⽤户名'DB_PWD' => 'root', // 密码'DB_PORT' => '3306', // 端⼝'DB_PREFIX' => 'ms_', // 数据库表前缀);控制器⽂件名 MsgController.class.php<?phpnamespace Home\Controller;use Think\Controller;use Think\Model;class MsgController extends Controller{public function index(){$msg = D('Msg');$info = $msg->order('id DESC')->select();$this->assign('info',$info);$this->display();}public function sendMsg(){$msg = new \Home\Model\MsgModel();if (!empty($_POST)){$data = $msg->create();if($data){$data['user_hobby'] = implode(',',$data['user_hobby']);$z = $msg->add($data);if ($z){$this->redirect('Msg/sendMsg');}}else{$this->assign('errorInfo',$msg->getError());}}$this->display();}public function upd($id){$msg = D('Msg');if (!empty($_POST)){$z = $msg->save($_POST);if ($z){$this->redirect('index',array(),2,'修改成功');}else{$this->redirect('upd',array('id'=>$id),2,'修改失败');}$info = $msg->find($id);$this->assign('info',$info);$this->display();}}public function addMsg(){$msg = D('Msg');if (!empty($_POST)){$z = $msg->add($_POST);if ($z){$this->redirect('index',array(),2,'添加成功');}else{$this->redirect('addMsg',array(),2,'添加失败');}}else{$this->display();}}public function del($id){if(D('Msg')->delete($id)){$this->success('成功',U('index'),2);}else{$this->error('失败',U('index'),2);}}}模板⽂件名 MsgModel.class.php<?phpnamespace Home\Model;use Think\Model;class MsgModel extends Model{//是否批量验证protected $patchValidate = true;protected $_validate = array(array('title','require','标题不能为空!'), //默认情况下⽤正则进⾏验证array('user','require','留⾔⼈不能为空!'),array('msg','require','内容不能为空!'),);protected $_auto = array (array('status','1'), // 新增的时候把status字段设置为1array('id','NULL'),array('admin_user','ms'),array('replay','NULL'),array('update_time','time',3,'function'), // 对update_time字段在更新的时候写⼊当前时间戳 array('send_msg_time','time',3,'function'),);}视图⽂件名 addMsg.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><div><form action="__SELF__" method="post" ><table border="1" width="100%" class="table_a"><tr><td>留⾔时间</td><td><input type="text" name="update_time"/></td></tr><tr><td>留⾔⼈</td><td><input type="text" name="user" /></td></tr><tr><td>标题</td><td><input type="text" name="title" /></td><td>内容</td><td><input type="text" name="msg" /></td></tr><tr><td>回复</td><td><textarea name="replay"></textarea></td></tr><tr><td colspan="2" align="center"><input type="submit" value="添加"><a href="__CONTROLLER__/index" rel="external nofollow" rel="external nofollow" ><input type="button" value="返回"></a></td></tr></table></form></div></body></html>视图⽂件名 index.html<!DOCTYPE html><html xmlns="/1999/xhtml"><head><title>留⾔列表 -- HoverTree</title><style>.keleyitable {width: 800px;}.keleyitable table, td, th {border: 1px solid green;margin-top:10px;}.klytd {width:100px;text-align:right}.hvttd {width:500px}</style></head><body><div style="margin:0px auto;" class="keleyitable"><h2>留⾔列表</h2><tr><td class="klytd"><a href="__CONTROLLER__/addMsg" rel="external nofollow" >添加</a></td><td class="hvttd"></td></tr><volist name="info" id="vo"><table><tr><td class="klytd">留⾔时间:</td><td class="hvttd">{$vo.update_time|date="Y-m-d H:i:s",###}</td></tr><tr><td class="klytd">留⾔⼈:</td><td class="hvttd">{$er}</td></tr><tr><td class="klytd">标题:</td><td class="hvttd">{$vo.title}</td></tr><tr><td class="klytd">内容:</td><td class="hvttd">{$vo.msg}</td></tr><tr><td class="klytd">回复:</td><td class="hvttd">{$vo.replay}</td></tr></table><tr><td class="klytd"><a href="__CONTROLLER__/upd/id/{$vo.id}" rel="external nofollow" >修改</a></td><td class="hvttd"></td></tr><tr><td class="klytd"><a href="__URL__/del/id/{$vo.id}" rel="external nofollow" >删除</a></td><td class="hvttd"></td></tr></volist></div><div style="width:800px;margin:10px auto;font-family:Arial, Helvetica, sans-serif;text-align:center;">HoverTree © 2014 </div> <!--最近打算开发⼀个留⾔板,的开源项⽬, --></body></html>视图⽂件名 sendMsg.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><form action="" method="post">标 题: <input type="text" name="title"><span style="color:red;">{$errorInfo.title}</span><br><br>信 息: <input type="text" name="msg"><span style="color:red;">{$errorInfo.msg}</span><br><br>留⾔⼈: <input type="text" name="user"><span style="color:red;">{$er}</span><br><br><input type="submit" value="提交"></html>视图⽂件名 upd.html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><div><form action="__SELF__" method="post" ><input type="hidden" name="id" value="{$info.id}"><table border="1" width="100%" class="table_a"><tr><td>留⾔时间</td><td><input type="text" name="update_time" value="{$info.update_time}" /></td></tr><tr><td>留⾔⼈</td><td><input type="text" name="user" value="{$er}" /></td></tr><tr><td>标题</td><td><input type="text" name="title" value="{$info.title}" /></td></tr><tr><td>内容</td><td><input type="text" name="msg" value="{$info.msg}" /></td></tr><tr><td>回复</td><td><textarea name="replay">{$info.replay}</textarea></td></tr><tr><td colspan="2" align="center"><input type="submit" value="修改"><a href="__CONTROLLER__/index" rel="external nofollow" rel="external nofollow" ><input type="button" value="返回"></a> </td></tr></table></form></div></body></html>⽬录结构数据库 sql语句SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";SET time_zone = "+00:00";/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;/*!40101 SET NAMES utf8 */;---- 資料庫: `msg`---- ------------------------------------------------------------ 表的結構 `ms_msg`--CREATE TABLE IF NOT EXISTS `ms_msg` (`id` int(10) NOT NULL AUTO_INCREMENT COMMENT '主键',`admin_user` varchar(100) NOT NULL COMMENT '管理员',`update_time` int(10) NOT NULL COMMENT '更新时间',`status` int(2) NOT NULL COMMENT '状态',`send_msg_time` int(10) NOT NULL COMMENT '留⾔时间',`user` varchar(100) NOT NULL COMMENT '留⾔⼈',`title` varchar(100) NOT NULL COMMENT '标题',`msg` varchar(200) NOT NULL COMMENT '内容',`replay` varchar(200) NOT NULL COMMENT '回复',PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='留⾔表' AUTO_INCREMENT=19 ;---- 轉存資料表中的資料 `ms_msg`--INSERT INTO `ms_msg` (`id`, `admin_user`, `update_time`, `status`, `send_msg_time`, `user`, `title`, `msg`, `replay`) VALUES (1, 'ms', 1479449110, 1, 1479449110, '1', '拉克丝的减肥', '对⽅科⽬了', 'NULL'),(7, '', 321423432, 0, 0, 'kljflwk', 'kjsdfnlk', 'nlkdsjfn', 'kljnf'),(3, 'ms', 1479451017, 1, 1479451017, '1', '轻松的发⽣我', '沃尔沃飞', 'NULL'),(8, 'ms', 1479544687, 1, 1479544687, '', 'qwe', '', 'NULL'),(9, 'ms', 1479544693, 1, 1479544693, 'qwe', 'qwe', 'qwe', 'NULL'),(10, 'ms', 1479544970, 1, 1479544970, 'qwe', 'qwe', 'qwe', 'NULL'),(11, 'ms', 1479544979, 1, 1479544979, '12', '12', '12', 'NULL'),(12, 'ms', 1479545029, 1, 1479545029, '12', '12', '12', 'NULL'),(13, 'ms', 1479546357, 1, 1479546357, '12', '12', '12', 'NULL'),(14, 'ms', 1479547163, 1, 1479547163, '12', '12', '12', 'NULL'),(16, 'ms', 1479547667, 1, 1479547667, '12', '12', '123', 'NULL'),(17, 'ms', 2147483647, 1, 1479547682, '上来昆明3', '说的了付款', '蓝⼭咖啡', '123213');/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》及《》。
学写php单文件留言本实现功能:增加留言留言删除翻页管理员修改密码基于一个页面实现留言板的完整功能注释比较详细用户名:admin密码:123456<?phpsession_start(); //启动会话/** 单文件留言本* 请注明来自于*///变量定义、赋值$db_host = 'localhost:3306'; //设置数据库主机端口号一般为localhost:3360 通常不需修改$db_user = 'root'; //设置数据库用户名$db_pass = 'liujie'; //设置数据库密码$db_name = 'test'; //设置数据库名称$db_char = 'GBK'; //设置数据库字符集默认GBK 通常情况不需修改//定义常量define('Per_page',6); //定义每页记录数?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml" xml:lang="zh" lang="zh" ><head><meta http-equiv="Content-Type" content="text/html; charset=GBK" /><title>k 留言板</title><style><!--body{padding:0;margin:0;height:100%;overflow-y:auto;}#contain{width:900px;margin:0 auto;}#hd{width:400px;margin:50px auto;}.forms{margin:60px auto;width:400px;color:green;font-size:20px;}.list{width:900px;margin:20px auto;}.current{color:green;font-size:20px;}#showmsg {display:none; top:100px; left:300px; width:600px; height:300px;position:fixed;background:#CCF;padding:50px;opacity: 0.9;} /* IE并不认识fixed,而FF认识*/* html #showmsg {position:absolute;} /* 这个只有IE认识*/</style><script language="javascript"><!--//表单验证function CheckForm(){if(ername.value==""){alert("请填写用户名");ername.focus();return false;}if(myform.title.value==""){alert("请填写标题");myform.title.focus();return false;}if(myform.msg.value.length<5){alert("留言需要大于5个字符");myform.msg.focus();return false;}}function CheckPassword(){if(repassform.admin_pass.value.length<6){alert("密码长度大于6");repassform.admin_pass.focus();return false;}if(repassform.admin_pass.value != repassform.admin_pass2.value){ alert("密码不相同");repassform.admin_pass2.focus();return false;}}//全选function checkAll(name){var el = document.getElementsByTagName('input');var len = el.length;for(var i=0; i<len; i++){if((el[i].type=="checkbox") && (el[i].name==name)){el[i].checked = true;}}}//取消全选function clearAll(name){var el = document.getElementsByTagName('input');var len = el.length;for(var i=0; i<len; i++){if((el[i].type=="checkbox") && (el[i].name==name)){el[i].checked = false;}}}//反选function disAll(name){var el = document.getElementsByTagName('input');var len = el.length;for(var i=0; i<len; i++){if((el[i].type=="checkbox") && (el[i].name==name) && el[i].checked == true) {el[i].checked = false;}else{el[i].checked = true;}}}//--></script></head><body><div id="contain"><div id="hd"><h1>留言板</h1><a href="?">首页</a> <a href="?do=manage">管理</a></div> <div id="showmsg"><p id="info" name="info"></p><p id="tip" name="tip"></p></div><script language="javascript"><!--//跳转function Redirect(Url){window.location = Url;}var i = 0;//显示倒计时function dis(time){document.getElementById("tip").innerHTML = "" + (time - i) + "秒后跳转";i++;}//显示提示,定时跳转function ShowMsg(msg,time,Url){document.getElementById("showmsg").style.display= "block" ;document.getElementById("info").innerHTML = msg;if(time>0 && Url != ''){timer=setInterval("dis('"+time+"')", 1000);//显示时间timer=setTimeout("Redirect('"+Url+"')",time * 1000); //跳转}}//--></script><?php//实例化基础类$base = new base($db_host,$db_user,$db_pass,$db_name,$db_char);//定义基础类class base{private static $conn ;var $err ;//php5 构造函数初始化连接function __construct($db_host,$db_user,$db_pass,$db_name,$db_char='GBK'){/*连接数据库& 设置数据库字符集*/@ $dbo = mysql_connect($db_host,$db_user,$db_pass) or die('请检查是否数据库密码是否正确。
简单的PHP留⾔板制作(⼀)⾸先是确定⾃⼰的留⾔板需求.例如:名字,邮件及留⾔内容.⼀. 建⽴⼀个数据库guestbook。
CREATE TABLE IF NOT EXISTS `content` (`id` int(11) NOT NULL auto_increment,`name` varchar(20) NOT NULL,`email` varchar(50) NOT NULL,`content` varchar(200) NOT NULL,PRIMARY KEY (`id`))ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=3;⼆. 新建config.php<?php$q = mysql_connect("服务器","数据库⽤户","数据库密码");if(!$q){die('Could not connect: ' . mysql_error());}mysql_query("set names utf8"); //以utf8读取数据mysql_select_db("guestbook",$q); //数据库>三.新建index.php<?phpinclude("config.php"); //引⼊数据库连接⽂件$sql = "select * from content"; //搜索数据表content$resule = mysql_query($sql,$q);><html><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><body><table width="678" align="center"><tr><td colspan="2"><h1>留⾔本</h1></td></tr><tr><td width="586"><a href="index.php">⾸页</a> | <a href="liuyan.php">留⾔</a></td></tr></table><p>while($row=mysql_fetch_array($resule)){></p><table width="678" border="1" align="center" cellpadding="1" cellspacing="1"><tr><td width="178">Name:<? echo $row[1] ?></td><td width="223">Email:<? echo $row[2] ?></td></tr><tr><td colspan="4"><? echo $row[3] ?></td></tr><tr></table><?}></body></html>四.新建liuyan.php<html><body><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><table width="678" align="center"><tr><td colspan="2"><h1>留⾔本</h1></td></tr><tr><td width="586"><a href="index.php">⾸页</a> | <a href="liuyan.php">留⾔</a></td> </tr></table><table align="center" width="678"><tr><td><form name="form1" method="post" action="post.php"><p>Name:<input name="name" type="text" id="name"><p>Email:<input type="test" name="email" id="email"></p><p>留⾔:</p><p><textarea name="content" id="content" cols="45" rows="5"></textarea></p><p><input type="submit" name="button" id="button" value="提交"><input type="reset" name="button2" id="button2" value="重置"></p></form></td></tr></table></body></html>五. 新建post.php<?phpheader("content-Type: text/html; charset=utf-8");include("config.php");$name= $_POST['name'];$email= $_POST['email'];$patch = $_POST['content'];$content = str_replace("","<br />",$patch);$sql = "insert into content (name,email,content) values ('$name','$email','$content')"; mysql_query($sql);echo "<script>alert('提交成功!返回⾸页。
PHP+MySQL写留言本留言本最基本的功能就是:1:用户写留言2:把数据写入数据库3:显示所有留言下面就开始制作我的留言本首先在PHPMYADMIN下建立一guest_book数据库然后在该数据库下建立一个contents的表该表下建立两个字段分别为name 和contentSQL语句如下:CREATE TABLE `contents` (`id` int(11) NOT NULL auto_increment,`name` varchar(20) NOT NULL default '"no name"',`content` mediumtext NOT NULL,PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=6好了数据库建好了~~`下面开始写程序了该程序包含三个页面post.htm(留言提交页面) index.php(留言显示页面) updata.php(把数据写入数据库的页面)post.htm代码如下:<html><head><meta http-equiv="Content-Type" c><title>留言本</title></head><body><form action="updata.php" method="post" name="name1">姓名:<input type="text" name="user_name"><br>留言:<textarea name="post_contents" rows="10" cols="50"></textarea><input type="submit"></form></body></html>updata.php页面代码如下:<?$name=$_POST['user_name'];$content=$_POST['post_contents'];$conn=mysql_connect("localhost:6033", "root", "");mysql_query("set names utf-8"); //解决中文乱码问题mysql_select_db("guest_book");$exec="insert into contents (name,content) values('".$_POST['user_name']."','".$_POST['post_contents']."')";$result=mysql_query($exec);?>index.php页面代码如下:<?$conn=mysql_connect ("localhost:6033", "root", ""); //打开mysql 服务器连接mysql_select_db("guest_book"); //链接数据库mysql_query("set names utf-8"); //解决中文乱码问题$exec="select * from contents"; //sql语句$result=mysql_query($exec); //执行sql语句,返回结果while($rs=mysql_fetch_object($result)){echo "<table><tr><td>姓名:".$rs->name."</td></tr>";echo "<tr><td>留言:".$rs->content."</td></tr></table><br/>";}?>至于分页,页面转向等功能暂时不用上去.为得就是使程序尽量精简.麻雀虽小.但是留言本的核心功能全在这里了.其中还需要再多说几句$conn=mysql_connect ("localhost:6033", "root", "");这一句很重要一开始我用的是$conn=mysql_connect ("127.0.0.1", "", "");怎么弄都不见数据进数据库去~~~~但是又没报错~~后来看了半天才知道原来哪个127的地方应该在PHPMYADMIN里看服务器名一击数据库端口是什么~~~还有ROOT那里就是mysql用户名了,后面的是密码还有个问题就是汉字乱码问题在$result=mysql_query($exec); 语句前面加上mysql_query("set names gb2312");或者mysql_query("set names utf-8");可疑防止提交进数据库的汉字以乱码形式存放在数据库中以及防止从数据库中查询出来的包含汉字的数据以乱码显示有时候尽管这样设置了后还是无法正常显示汉字~~~~我就遇见了这样的情况,由于我是在本地调试的,每次都要把浏览器上的那个字符编码调到utf-8才能正常显示汉字默认的编码总是ISO-8859-1 于是google了一下`~原来是apache设置不对.于是找到httpd.conf 设置文件把default-character-set=ISO-8859-1 改为default-character-set=utf-8然后再service httpd restart 重启appache 清除所有cookies与历史记录~~~然后问题就解决了------------------------------------------------------------------------------------今天再稍微改善下加一个管理员管理留言的功能~~~这里最主要要用到$_SESSION['item'] 这个东东~~` 好了`~`先把昨天的稍微改一下再把这个功能加进去~~~首先我们在首页同时显示留言,以及留言添加框~~这样使留言者方便使用`~`不说多了`~把代码贴出来再说:index.php<html><head><meta http-equiv="Content-Type" c><title>留言本</title></head><body><a href="admin_login.htm" tagert="_blank">留言管理</a><?$conn=mysql_connect ("localhost:6033", "root", ""); //打开MySQL服务器连接mysql_select_db("guest_book"); //链接数据库mysql_query("set names GB2312"); //解决中文乱码问题$exec="select * from contents"; //sql语句$result=mysql_query($exec); //执行sql语句,返回结果while($rs=mysql_fetch_object($result)){echo "<table><tr><td>姓名:".$rs->name."</td></tr>";echo "<tr><td>留言:".$rs->content."</td></tr></table><br/>";echo ".............................................................................................................................";}mysql_close();?><br><br><br><form action="updata.php" method="post" name="name1">姓名:<input type="text" name="user_name"><br>留言:<textarea name="post_contents" rows="10" cols="50"></textarea><input type="submit" value="提交留言"></form></body></html>updata.php页再加个header("location:index.php");语句重定向到主页面`~~ updata.php<?$name=$_POST['user_name'];$content=$_POST['post_contents'];$conn=mysql_connect("localhost:6033", "root", "");mysql_query("set names GB2312"); //解决中文乱码问题mysql_select_db("guest_book");$exec="insert into contents (name,content) values('".$_POST['user_name']."','".$_POST['post_contents']."')";$result=mysql_query($exec);mysql_close();header("location:index.php");?>HOHO~~~是不是用起来有那么回事了`~~好的`~下面再加个管理功能~~那么这个留言本就更加强大了`~留言管理模块分为管理员登录页admin_login.htm ,管理员验证页admin_check.php 后台管理首页admin_index.php先农这个登录页面admin_login.htm<form action="admin_check.php" method="post" name="form2">用户名:<input type="text" name="admin_name">密码:<input type="password" name="admin_password"><input type="submit" value="进入后台管理"></form>这个简单得再简单不过了,我就不说什么了`~~admin_check.php管理员验证<?session_start();$admin_name=$_POST['admin_name'];$admin_password=$_POST['admin_password'];$conn=mysql_connect ("localhost:6033", "root", "");mysql_select_db("guest_book");$exec="select * from admin where admin_name='".$admin_name."'";$result=mysql_query($exec);if ($rs=mysql_fetch_object($result)){ if ($rs->admin_password==$admin_password){$_SESSION['admin']="OK";header("location:admin_index.php");}else echo"密码不正确";}else echo"用户名不正确";mysql_close();?>这里最主要的就是session~~~凡事要用到session的地方.在页面最开始处要加上这一句session_start();否则就无法使用~~那么session究竟是什么东东呢?由于网页的传输方式(也就是http这个东西) 不是永久连接的~~`所以服务器无法在两个不同页面之间传送变量`~~唉.我一下子也说不清楚`~~还是看看这里/read.php?wid=87上面有很详细的介绍.反正就是用这个东西来验证管理员的身分了`~~好了下面说后台管理主页面admin_index.php<?session_start();if($_SESSION['admin']=="OK"){$conn=mysql_connect ("localhost:6033", "root", "");mysql_select_db("guest_book");$exec="select * from contents";$result=mysql_query($exec);while($rs=mysql_fetch_object($result)){echo "<table><tr><td>姓名:".$rs->name."</td></tr>";echo "<tr><td>留言:".$rs->content."</td></tr></table><br/>";echo "<a href=modify.php?id=".$rs->id." >修改</a> <ahref=delete.php?id=".$rs->id." >删除</a>";}echo "<br><br><br><br><br><a href=index.php >回首页</a>";}mysql_close();?>这里最主要是这一句echo "<a href=modify.php?id=".$rs->id." >修改</a> <a href=delete.php?id=".$rs->id." >删除</a>";用来向所连接到的地址传递参数~~看看下面的就知道有什么用了modify.php<?session_start();if($_SESSION['admin']=="OK"){$conn=mysql_connect ("localhost:6033", "root", "");mysql_select_db("guest_book");$exec="select * from contents where id=".$_GET['id']; /*这里这个$_GET['id']就是取得从那个连接传递过来的参数拉*/$result=mysql_query($exec);$rs=mysql_fetch_object($result);$name=$rs->name;$content=$rs->content;$id=$rs->id;?><form action="modify2.php" method="post" name="name1">ID :<?=$id?><input type=hidden name=id value=<?=$id?> >姓名:<?=$name?><br>留言:<textarea name="post_contents" rows="10"cols="50"><?=$content?></textarea><input type="submit" value="提交修改"></form><?}mysql_close();?>这里这个<?=$id> 其实就等于echo $id再看看最终的数据修改实现页面modify2.php<?session_start();if($_SESSION['admin']=="OK"){$conn=mysql_connect ("localhost:6033", "root", "");mysql_select_db("guest_book");$exec="select * from contents where id=".$_GET['id'];$exec="update contents set content='".$_POST['post_contents']."' whereid=".$_POST['id'];$result=mysql_query($exec);}mysql_close();header("location:admin_index.php");?>最后就是删除功能的实现了delete.php<?session_start();if($_SESSION['admin']=="OK"){$conn=mysql_connect ("localhost:6033", "root", "");mysql_select_db("guest_book");$exec="delete from contents where id=".$_GET['id'];mysql_query($exec);mysql_close();header("location:admin_index.php");}?>/////////////////////////////////////////////////////////////////////////////////////////////////////////////今天用到的知识如下:1: session_start(); $_SESSION['变量名']=$变量名或者某一特定值2: <a href="#####.php?var=##">aaa</a>用这个方法来传递参数同时用$_GET['var']来接收传递过来的值3: 数据修改:$exec="update tablename set item1='".$_POST['item1']."' where ...";4: 数据删除:$exec="delete from tablename where...";。
用PHP构建留言本实例用PHP构建留言本实例导语:留言板,大家都有接触过,但是要你自己用php语言来写一个的话,你会吗?以下的是店铺为大家搜集的用PHP构建一个留言本,希望对你有所帮助。
下面是配置说明:为了配置的方便,重新整理了代码,现在已经把全部的需要设置的参数都放在config.php文件里了,配置起来应该很简单,里面有详悉的说明.目标:在十分种内搞定你的留言本!1: 建立一个数据库(要主页提供数据库空间)一般的有phpMyAdmin开放源玛的前端.创建以来很简单的. 取好名字后,记得把config.php 的$db_name改成这个名字2: 建立留言数据表表(等下把config.php的$table_name改成这里你起的名字).结构为:key_liuyan int(11) auto_increment primary key, //主建,自动增加nikename varchar(20) null // 昵称subject varchar(100) null // 留言主题date_created varchar(19) // 留言时间ip_address varchar(15) // 留言人的IP地址message mediumtext null // 留言信息email_address varchar(50) null // 留言人的e-mail地址zhuye_address varchar(50) null // 留言人的主页地址huifu_biaozi int(1) default 0 // 版主回复标志huifu mediumtext null // 版主回复内容oicq varchar(20) null // 留言人的OICQ号码可以用如下的SQL来完成(本人测试通过,记得把yourtable_name改成好记点的, 当然不改也行阿)create table your_liuyan_table(key_liuyan int(11) auto_increment primary key,nikename varchar(20) null,subject varchar(100) null,date_created varchar(19) ,ip_address varchar(15),message mediumtext null,email_address varchar(50) null,zhuye_address varchar(50) null,huifu_biaozi int(1) default 0 ,huifu mediumtext null,oicq varchar(20) null)3: 建立控制表:(同样要把这里起的名字放到config.php的$table_name_control里去)结构如下:leibie varchar(20) primary key,value varchar(20) null也可以用下面的SQL语句:create table your_control_table(leibie varchar(20) primary key,value varchar(20) null)因为这是你的控制表,所以要自己加入控制记录两条;SQL语句为:插入删除密码:insert into your_control_tble( leibie, value)values (delete,'1332');插入回复密码:insert into your_control_tble( leibie, value)values (huifu,'1332');这样放进去的密码为:123,用户名为空!怎么计算密码和插入的值的关系呢?是这样的,你的密码,如123 把三位数上的各位加起来,等于6,然后把6乘以222就是密码值6*222=1332.知道了这关系,当然你可以改成其它的密码了.不过用户名要为空,,,4: 一切完成,然后只要把除了readme.txt外的文件上传就行了.post.php 文件<?phprequire('config.php');><?php$nikename=$arr_request['nikename'];if (strlen($nikename)==0){echo "<center>";echo "<h2><font color=red>错误信息!</font></h2>";echo "对不起,<font color=red>呢称</font>必须填写请重填!<br>";echo "<hr></hr>";echo "免费留言本由<a href=>小熊</a>提供技术支持";echo "</center>";exit ;}$date_now=date('Y/m/d H:i:s');$ip_address=getenv("REMOTE_ADDR");$messageold=$arr_request['message'];//$pattern="/n/";//$replacement="<br>";$message=computer_message($messageold,$hang_zifu_nu mber);$subjectold=$arr_request['subject'];if (strlen($subjectold)>$hang_zifu_number)$subject=computer_message($subjectold,$hang_zifu_numb er);else$subject=$subjectold;$str_sql=" insert into $table_name(nikename,subject,date_created,ip_address,message,email_a ddress,zhuye_address,oicq)values( '$nikename','$subject','$date_now','$ip_address','$message','".$arr_request['email_address']."','".$arr_request['zhuye_address']."','".$arr_request['oicq']."')";$result=mysql_db_query($db_name,$str_sql,$id_link);if (! $result){affy_error_exit('SQL Insert Execution has failed.');}else{echo "<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">";echo "<HTML><HEAD><TITLE>发表文章</TITLE>";echo "<META content="text/html; charset=gb2312" http-equiv=Content-Type>";echo "<meta HTTP-EQUIV="REFRESH" CONTENT="2;URL=display.php">";echo "</head><body topmargin="0"><br>";。
php实现留⾔板功能(代码详解)简单的PHP留⾔板制作做基础的留⾔板功能需要三张表:员⼯表,留⾔表,好友表⾸先造⼀个登⼊页⾯:<form action="drcl.php" method="post"><div>帐号:<input type="text" name="zhang"/></div><div>⼝令:<input type="text" name="mi"/></div><input type="submit" value="登⼊"/></form>上图:不多说,没⽑病然后来写处理页⾯:<?phpsession_start();//session存储数据include ("db.class.php");//引⽤类$db = new db();//造⽅法$zhang = $_POST["zhang"];$mi = $_POST["mi"];$sql = "select mi from yuangong WHERE zhang = '{$zhang}'";$arr = $db->Query($sql);if(!empty($mi)&&$mi = $arr &&!empty($zhang)){$_SESSION["zhang"] = $zhang;//即将跳转页⾯之前,把帐号存到session⾥⾯header("location:zym.php");}else{echo "登⼊失败了";}>正常的处理登⼊的页⾯只不过把账号存了⼀下session登⼊上进⼊主页⾯再来是主页⾯了:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><title>⽆标题⽂档</title></head><body><h1>留⾔板</h1><div><a href="fbym.php" rel="external nofollow" >发布信息</a></div><div><a href="ddrr.php" rel="external nofollow" rel="external nofollow" onclick=" return confirm('注销当前⽤户?')">注销登⼊</a></div><table border="1" cellpadding="0" cellspacing="0" width="100%"><tr><td>发件⼈</td><td>收件⼈</td><td>发布时间</td><td>内容</td></tr><?phpsession_start();//存储数据if(empty($_SESSION["zhang"])){header("location:ddrr.php");//防⽌输⼊⽹址进⼊exit;}$zhang = $_SESSION["zhang"];include ("../db.class.php");$db = new db();$sql = "select name from yuangong WHERE zhang = '{$zhang}'";$attr = $db->Query($sql);//取到登⼊的nameecho "<h5>欢迎你:{$attr[0][0]}</h5>";//输出登⼊的name$sql = "select * from liuyan WHERE shou = '{$zhang}' or shou = 'all' ORDER BY times DESC ";//条件!!我只看⾃⼰或所有⼈的$arr = $db->Query($sql);foreach ($arr as $v){$fa = aname($v[1]);//⽤⽅法echo "<tr><td>{$fa}</td><td>{$shou}</td><td>{$v[3]}</td><td>{$v[4]}</td></tr>";}//返回姓名function aname($zhang){global $db;//设置全局变量!if($zhang == "all"){//如果接收到的是all,显⽰:return "所有⼈";}else{//如果是⾃⼰的,根据帐号查name$sql = "select name from yuangong WHERE zhang ='{$zhang}' ";$arr = $db->Query($sql);//⼆维数组return $arr[0][0];}}></table></body></html>查找的条件即是只查⾃⼰的好友或者是all的所有⼈还要注意⼀点便是要把调⽤的db设为全局变量图:留⾔板需要发布信息:发布信息页⾯:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="/1999/xhtml"><head><title>⽆标题⽂档</title></head><body><h1>发布信息</h1><?phpsession_start();//存储数据if(empty($_SESSION["zhang"])){header("location:ddrr.php");//防⽌输⼊⽹址进⼊exit;}$zhang = $_SESSION["zhang"];include ("../db.class.php");$db = new db();$shaoyou = "select * from firend WHERE me = '{$zhang}'";$ahaoyou = $db->Query($shaoyou);><form action="fbcl.php" method="post"><div> 接收⼈: <select name="shou"><option value="all">所有</option><?phpforeach ($ahaoyou as $v){$name = aname($v[2]);echo "<option value='{$v[2]}'>{$name}</option>";}></select></div><br/><div>留⾔内容: <input type="text" name="lynr"/></div><br/><input type="submit" value="发送"/><input type="reset" value="清空"/></form><?phpfunction aname($zhang){global $db;//设置全局变量!if($zhang == "all"){//如果接收到的是all,显⽰:return "所有⼈";}else{//如果是⾃⼰的,根据帐号查name$sql = "select name from yuangong WHERE zhang ='{$zhang}' ";//⼆维数组return $arr[0][0];}}><a href="zym.php" rel="external nofollow" >查看信息</a><a href="ddrr.php" rel="external nofollow" rel="external nofollow" onclick="return confirm('确定要退出此帐号?')">注销登⼊</a></body></html>最后就是发布信息的处理页⾯:<?phpsession_start();$uid = $_SESSION["zhang"];include("../db.class.php");$db = new db();$jsr = $_POST["shou"];$neirong = $_POST["lynr"];$sj = date("Y-m-d H:i:s");$sql = "insert into liuyan values('','{$uid}','{$jsr}','{$sj}','{$neirong}',0)";if($db->Query($sql,0)){header("location:zym.php");}else{echo "发布失败!";}图:我⽤⼩花的账号给⼩明发⼀条留⾔:所以登⼊⼩明的帐号图:没错,他收到了⼩花的这条留⾔以上就是本⽂的全部内容,希望本⽂的内容对⼤家的学习或者⼯作能带来⼀定的帮助,同时也希望多多⽀持!。
PHP实现留⾔板功能的详细代码本⽂实例为⼤家分享了php留⾔板的实现思路,供⼤家参考,具体内容如下1.创建⼀个存放留⾔信息的⽂件名2.获取表单中的数据给⼀个变量3.判断⽂件的时候存在4.对⽂件执⾏写的操作,在这之前,注意打开⽂件的时候,选择对⽂件的访问⽅式,最后记得关闭⽂件5.对⽂件执⾏读的操作,同样最后要记得关闭⽂件<?php//留⾔板的思路:1.先创建⼀个⽂件名,⽅便于存放写⼊的内容// 2.将表单中的内容赋值给⼀个变量//3.判断⽂件是否存在,将⽤户输⼊的值写进变量,打开⽂件的是时候注意选择对⽂件访问的操作//4.读取⽂件的内容,关闭⽂件header("Content-Type:text/html;charset=utf8");$filename = "message.txt";//创建⼀个⽂件的名字//如果⽤户提交了,就写⼊⽂件,按⼀定格式写⼊if(isset($_POST['dosubmit'])) {//字段的分隔使⽤||, ⾏的分隔使⽤[n]$mess = "{$_POST['username']}||".time()."||{$_POST['title']}||{$_POST['content']}[n]";writemessage($filename, $mess);//向⽂件写进内容}if(file_exists($filename)) {//判断⽂件是否存在readmessage($filename);//读取⽂件的函数}function writemessage($filename, $mess) {$fp = fopen($filename, "a");//在尾部执⾏写的操作,且不删除原来的⽂件内容fwrite($fp, $mess);//写⼊⽂件fclose($fp);//关闭⽂件}function readmessage($filename) {$mess = file_get_contents($filename);$mess = rtrim($mess, "[n]");$arrmess = explode("[n]", $mess);foreach($arrmess as $m) {list($username, $dt ,$title, $content) = explode("||", $m);echo "<b>{$username}</b>, ".date("Y-m-d H:i").": <i>{$title}</i>, <u>{$content}</u><br><hr><br>";}}><form action="message.php" method="post">⽤户: <input type="text" name="username" value="" /><br>标题:<input type="text" name="title" value="" /><br>内容:<textarea name="content" cols="40" rows="4"></textarea><br><input type="submit" name="dosubmit" value="留⾔" /><br></form>以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
教程连载1:PhpChina留言本实例在第一期中,我们来一步一步实现一个最基本的留言本。
留言信息包括留言者,留言内容,留言时间,留言者IP。
(本文假设你已对HTML以及PHP语法比较熟练了)第一步:设计数据库新建一个数据库,打开phpMyAdmin,新建一个数据库gb,下面整理选择utf8_general_ci,然后在数据库中建一个表message,字段数为5:utf8_general_ci。
每个字段的含义:id-- 留言的编号,类型为整数型,长度是10,属性选择为unsigned是表明这个字段是无符号字段,不会有负数,所以可以存取的范围会增加一倍(因为如果原来的范围是-9 到10,那么设置为unsigned后范围则变为0到19),额外设置为auto_increment,表明这个字段是自动增加的,我们不用管插入数据时它是啥值,它会自动在最大的id的基础上自动加1,其他设置为主键。
username -- 留言者的名字,类型为字符型(关于char与varchar的区别请查看MYSQL手册),长度为100(正常人用户名不可能超过100吧,其实应该尽量减少长度,提高性能,节约空间)content-- 即留言内容,类型为text(text和blob的唯一的区别在于text不区分大小写,而blob对字符的大小写),text类型可以存足够多的数据,足够存好几篇文章了,此类型不能设置长度,否则报错。
time -- 即发布留言的时间,类型为int,长度为10,保存的数据格式是UNIX时间戳(即用PHP函数time()得到的10位数字),而不存xxxx-xx-xx这样的格式,为何这样后面或解释。
ip -- 即留言者的IP,格式为xxx.xxx.xxx.xxx,总共15个字符,所以长度设置为15。
第二步:设计界面在这我们直接偷蓝色理想的BXNA的界面( )HTML和CSS的东西就不详细讲了,不然写10期也写不完这个留言本了 (在code文件夹中有一个html文件,是单独分离出来的)第三步:开始写程序咯先要想好程序的整体构架,代码执行的流程等。
先说一下我们做的这个程序的整体运行流程:程序是根据不同的URL参数(参数m和参数a)来调用不同的模块文件里的不同函数。
比如URL是index.php?m=user&a=info,则程序会先包含mod_user.php,并调用里面的函数user_info();,这个函数会返回一段HTML(不会直接输出,因为我们要用到smarty,最后一次性输出)或跳到别的页面。
所有的请求都是从index.php这个入口开始,mod文件不能被直接调用。
下面开始写程序入口部分:首先建立一些引用的文件,放在includes文件夹下,比如一些常量config.inc.php,所有函数function.inc.php,后缀为PHP,这样通过浏览器直接访问这些文件将看到空白(没有输出)。
在config.inc.php中定义5个常量:function.inc.php用来存放自定义函数。
在这一期中总共有3个自定义函数。
具体代码请查看文件,有详细注释。
print_mysql_error显示数据库错误信息,并终止脚本get_client_ip取得用户IPshow_result_page显示结果页面,返回HTML把smarty文件夹全拷过去。
(在后面会讲到简单用法)然后建立首页index.php文件,具体代码请看附件中的对应文件。
其中比较重要的一些地方。
参数调用对应的功能模块。
在这一节中,我们只包含两个模块,即main和add,用来显示留言和添加留言。
根据不同的$_GET['m'],调用不同的mod文件。
然后根据不同的$_GET['a'],调用不同的函数。
比如$_GET['m'] == 'main',$_GET['a'] == 'up',则包含文件mods/mod_main.php,并调用这个文件里的main_up()函数,来执行相应功能,比如显示留言。
默认调用main_page()函数。
后面有个使用smarty来实现HTML和PHP的分离,这样有利于美工和程序员协同工作。
如果你没有用过smarty或其他模板类也不用担心,我们会在后面介绍基本的用法。
但如果你想学好它,建议去它的官方站看看,并下载一份手册。
( )由于针对初学者,在这我们就不使用MYSQL的类了,而直接使用PHP中自带的函数。
如果你现在直接访问index.php,他会提示mod_main.php文件不存在。
(因为默认是调用这个文件)下面开始写模块部分建立一个文件夹名为mods,用来存放所有模块文件。
建立我们需要的mod_main.php文件。
具体代码:mod_main.php的主要流程:if(!defined('IN')) die('Access denied');这个用来确认该文件是否是被index.php文件包含(因为index.php包含了config.inc.php,而config.inc.php里定义了常量IN),如果IN常量没被定义,证明不是被index.php包含的,则结束脚本,并输出Access denied。
这是一个常用的防止一个文件被直接调用的方法。
先执行查询SELECT * FROM `message` ORDER BY `id` DESC意思即查找message表中所有数据的所有字段,并按id字段倒序排列。
然后判断mysql_errno()是否为0,不为0则证明有错误,则用print_mysql_error()函数输出错误信息,并结束整个代码。
如果没有错误,则用while循环取得信息(一条留言循环一次)。
在循环中,先定义一个空数组$message_array = array();,然后每循环一次,往这个数组中插入另一个数组,组成一个二维数组。
存的都是留言信息。
循环完后$smarty->assign('message' , $message_array);即把$message_array变量赋予smarty中的message,用来做模板里的替换(即把模板里的$message部分替换为$message_array变量的值)。
最后return $smarty->fetch('message.tpl');即取得message.tpl模板的信息,替换模板变量后并返回。
打开template/bxna/message.tpl文件可以发现这样一段代码,它的意思即循环输出,$message不是一个数组么,即循环输出这个数组。
其中[##$message[k].username##]这个意思是指这里要替换的内容是$message变量中的username,即用户名。
其它几个变量也一个道理。
循环的具体用法请参考smarty手册。
最后fetch(即取回嘛)整个HTML(已经把所有模板变量替换完成),返回给index.php 里的$main_body。
到这不知道大家是否了解smarty的工作流程了呢?1.初始化smarty2.用$smarty->assign设置要替换的变量,第一个参数是模板要被替换的部分。
3.用$smarty->fetch取回替换完后的模板(HTML),或用display直接输出。
在模板中smarty有几个基本语法,其实和php中差不多(边界符可以在初化时定义):1.[##if $var##]show something[##else##]show other thing[##/if##]2.上面提到的循环结构section (你也可以用foreach,请查看smarty手册)3.[##$var##] 直接输出变量大部分时候就用到这几种结构就行了☺,还有一些比较高级的,比如可以在模板里截取字符串,格式化时间等等,都可以在手册中查看,都有比较详细的例子。
然后在index.php里$smarty->assign('main_body' , $main_body);替换模板变量并输出$smarty->display('index.tpl');Smarty中display和fetch的唯一区别就是display等于echo fetch,即fetch完后再输出。
现在用phpMyAdmin往数据库里手工插入几条数据,然后刷新首页,即可看到效果了☺这时你可以点击导航上面的Add链接,你会发现URL变了,但还是显示首页,为什么呢?看看URL可以发先此时参数m为add,a为空,所以程序会试图包含mod_add.php文件,但现在此文件还不存在(我们还没做到这步哈),所以程序会转为包含mod_main.php文件,并调用其中的main_page()函数,即和首页调用的同一个函数,显示同样的东西。
现在我们来做一个添加留言的模块add:在mods文件夹下建立模块文件mod_add.php。
具体代码:此函数的代码相当简单,就两行:global $smarty;return $smarty->fetch('add_form.tpl');相信大家都能看懂了,其实就是直接取add_form.tpl文件,不经过任何模板变量替换直接返回给index.php里的$main_body,然后输出。
(一个表单,也没要替换的变量的)显示出表单,我们得想办法往数据库里插入用户提交的留言信息了:增加一个函数add_doadd(),用来处理用户的提交信息。
具体代码:排版比较乱,具体请查看文件里的代码。
流程是先获得提交的信息,取得当前UNIX时间戳(10位数字),以及用户IP,然后插入数据库,并判断插入操作是否成功,真则返回成功信息,假则返回错误信息,并让用户返回上一页。
这时提交功能已经做成功了,你可以提交一些信息,并刷新首页,就可以看见刚提交的留言了。
可能你会发现提交空用户名和空留言也能提交成功。
这是因为我们没有判断用户的输入。
在$time = time(); 的上一行加入下列代码:这样就行了,即判断是否为空,空则返回失败,并终止脚本。
在这解释以下为什么时间要用UNIX时间戳这样的10位数字,而不用我们熟悉的xxxx-xx-xx xx:xx:xx 这样的格式。
用时间戳的好处在于容易比较时间的大小(时间越靠后当然时间戳就越大),容易算出两饿时间之间间隔了多少秒,并可以转换为分,小时,天等。
比较灵活。
关于UNIX时间戳以及格式转换的详细信息可以查看php手册的time,date 和mktime等函数。