[实例]我的留言板

** 文件结构:
conn.php
// 数据库配置
add.php
// 操作文件
list.php
//列表文件

** 步骤

建立数据库:

phpmyadmin:

建立数据库(数据库名):php100_bbs

执行建表SQL:
message table:

********这里必须要注意了, 我原来都不知道, 闹笑话了*********
*********包裹 表名/字段名等等 的 根本 不是 引号(单引号/双引号都不是)***************
********* 那是 短浪线 (我靠, 这么奇葩!!!) ************
create table 'message'{
'id' tinyint(1) not null auto_increment,
'user' varchar(25) not null, # 留言者
'title' varchar(50) not null, # 留言的标题
'content' text not null,
'lastdate' date not null,
primary key('id'),
} engine=InnoDB default charset=utf-8 auto_increment=1;
*******
// 正确的SQL
CREATE TABLE IF NOT EXISTS `message` (
`id` tinyint(1) NOT NULL AUTO_INCREMENT,
`user` varchar(25) NOT NULL,
`title` varchar(50) NOT NULL,
`content` text NOT NULL,
`lastdate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

(这是一个简单的实例, 所以数据库可以和PHP代码同时书写)

*** 下面 去建立连接php(conn.php)

<?php

//连接数据库
// @是忽略错误
$conn=@ mysql_connect("localhost","root","") or die("数据库不存在");
// 打开 数据库(传 库名)
mysql_select_db("ph100_bbs");
// 设置中文编码
// mysql_query("set names 'GBK'"); // 使用GBK中文编码

// echo $conn;

*** 之后, 建立增加留言的php(add.php)

执行 数据插入SQL:

<?php
header("content-type:text/html;charset=utf-8");

// 导入 连接数据库文件
include("conn.php");

// 最后, 这里用来处理提交
if (isset($_POST['sub'])) {
$sql="insert into message(id,user,title,content,lastdate) values('' ,'{$_POST['user']}','{$_POST['title']}' ,'{$_POST['content']}',now() )";
//注意看$_POST数组的调用格式,里面的索引还是需要用单引号的啊;
// 最后一个参数now() , 是mysql系统函数,到DBMS上才能正确执行;
// echo $sql;

$result=mysql_query($sql) // 成功后, 返回值>1
or die("Invalid query: " . mysql_error());

}

?>

<!-- 下面需要一个表单, 用于提交 -->

<form action="add.php" method="post">
用户:<input type="text" name="user"><br>
标题:<input type="text" name="title"><br>
内容:<textarea name="content"></textarea><br>

提交按钮<input type="submit" name="sub" value="发布留言">

</form>

***********list.php********************

<?php
header("content-type:text/html;charset=utf-8");
// echo "中文";

include("conn.php");

?>

<table width=500 border="0" align="center" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<?php

$query=mysql_query("select * from message");

while($line=mysql_fetch_array($query))
{

?>

<tr bgcolor="#eff3ff">
<td>标题:<?php echo $line["title"]; ?></td><td>用户:<?php echo $line["user"]; ?></td>
</tr>
<tr bgcolor="#ffffff">
<td colspan="2">内容:<?php echo $line["content"]; ?></td>
</tr>
<?php
}
?>

<!-- // 看到这里你就应该知道啦,嵌入的PHP现在就是放在这个括号组(<?PHP ?>)中才好使!!! -->

</table>

************************留言板  二 **********************************************

留言板二期知识点:(细节方面)
1. 提交表单Javascript验证
提交表单的时候, 可能有些字段不能为空,可以通过pHP,也可以通过js减轻服务器压力.

<form... name="myform" onsubmit="return CheckPost();">

<script language="javascript">
function CheckPost(){
if(myform.user.value==""){
...
myform.user.focus();
return false;
}
if(myform.title.value.length<5){
...
}
...
}

2. str_replace替换函数
str_replace(被替换值, 替换的值, 被替换的内容)
/*
输入框中的回车\n不是html中的<br>;
输入框空格不是html中的&nbsp;
所以要替换掉
*/
function htmltocode($content){
$content=str_replace(" ","&nbsp;",$content);
$content=str_replace("\n","<br>",$content);
return $content;
}

3. htmlspecialchars格式化html
功能:将html格式化, 防止在输出时被浏览器执行

htmlspecialchars(要格式化的对象, 定义单双引号, 编码)

4. md5加密函数
md5(加密对象)

5. COOKIE的使用和登陆

cookie的机制
保存在客户端的

setcookie("TEST","value",3600,"/dir",".domains.com",true)

test:cookie名
value: cookie值
3600: 保存时间
/dir: 保存路径
.domains.com: 起效域名**
true: http发送

注意: 刚设置的cookie不能当场生效, 需要刷新一次

实例演示部分:

在原页面加入导航(head.php文件)

登陆页面:
一个form提交表单的页面,然后用cookie记录登陆状态.

<!-- login.php -->
<?php
include("conn.php");
include("head.php"); if (isset($_GET["out"])) {
//清楚cookie
setcookie("cookie","out");
//刷新页面
echo "<script language=\"javascript\">location.href='login.php';</script>";
// location是一种windows对象
// href是location对象的属性
} if (isset($_POST['submit'])) {
if ($_POST['id']=='admin') {
$pw=md5($_POST['pw']);
// md5加密的结果 是一样的.
if ($pw=="6e0eba50b4fae046faad673c1e18a2d9") {
setcookie("cookie","ok");
echo "<script language=\"javascript\">location.href='login.php';</script>";// 这句话是为了让页面刷新
// 所以重新载入当前页面
}
}
}
// echo md5("l12abc"); if($_COOKIE['cookie']!='ok'){ ?> <script language="javascript">
function checkLogin(){
if (loginform.id.value=="") {
alert("用户名不能为空");
loginform.id.focus();
return false;
};
if (loginform.pw.value=="") {
alert("密码不能为空");
loginform.pw.focus();
return false;
};
}
</script> <form action="" method="post" name="loginform" onsubmit="return checkLogin();">
ID: <input type="text" name="id"><br>
PW: <input type="password" name="pw"><br>
<input type="submit" name="submit" value="登陆">
</form>
<?php
}else{
?> <a href="?out=login">锐出</a> <?php
}
?>

  

<!-- list.php -->
<?php
// header("content-type:text/html;charset=utf-8");
// echo "中文";
/*
[实例]我的留言板 ** 文件结构:
conn.php
// 数据库配置
add.php
// 操作文件
list.php
//列表文件 ** 步骤 建立数据库: phpmyadmin: 建立数据库(数据库名):php100_bbs 执行建表SQL:
message table: ********这里必须要注意了, 我原来都不知道, 闹笑话了*********
*********包裹 表名/字段名等等 的 根本 不是 引号(单引号/双引号都不是)***************
********* 那是 短浪线 (我靠, 这么奇葩!!!) ************
create table 'message'{
'id' tinyint(1) not null auto_increment,
'user' varchar(25) not null, # 留言者
'title' varchar(50) not null, # 留言的标题
'content' text not null,
'lastdate' date not null,
primary key('id'),
} engine=InnoDB default charset=utf-8 auto_increment=1;
*******
// 正确的SQL
CREATE TABLE IF NOT EXISTS `message` (
`id` tinyint(1) NOT NULL AUTO_INCREMENT,
`user` varchar(25) NOT NULL,
`title` varchar(50) NOT NULL,
`content` text NOT NULL,
`lastdate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; (这是一个简单的实例, 所以数据库可以和PHP代码同时书写) *** 下面 去建立连接php(conn.php) *** 之后, 建立增加留言的php(add.php) 执行 数据插入SQL: */
/**/ include("conn.php");
include("head.php"); ?> <table width=500 border="0" cellpadding="5" cellspacing="1" bgcolor="#add3ef">
<?php $query=mysql_query("select * from message"); while($line=mysql_fetch_array($query))
{ ?> <tr bgcolor="#eff3ff">
<td>标题:<?php echo $line["title"]; ?></td><td>用户:<?php echo $line["user"]; ?></td>
</tr>
<tr bgcolor="#ffffff">
<td colspan="2">内容:<?php echo tohtmlcode($line["content"]); ?></td>
</tr>
<?php
}
?> <!-- // 看到这里你就应该知道啦,嵌入的PHP现在就是放在这个括号组(<?PHP ?>)中才好使!!! --> </table>

  

<!-- add.php -->
<?php
// header("content-type:text/html;charset=utf-8"); // 导入 连接数据库文件
include("conn.php"); // 最后, 这里用来处理提交
if (isset($_POST['sub'])) {
$c=tohtmlcode($_POST['content']); $sql="insert into message(id,user,title,content,lastdate) values('' ,'{$_POST['user']}','{$_POST['title']}' ,'{$_POST['content']}',now() )";
//注意看$_POST数组的调用格式,里面的索引还是需要用单引号的啊;
// 最后一个参数now() , 是mysql系统函数,到DBMS上才能正确执行;
// echo $sql; $result=mysql_query($sql) // 成功后, 返回值>1
or die("Invalid query: " . mysql_error()); } include("head.php"); ?> <script language=javascript>
function checkPost(){
if (myform.user.value=="") {
alert("请填写用户名");
myform.user.focus();
return false;
};
if (myform.title.value.length<5) {
alert("标题不能少于5个字符");
myform.title.focus();
return false;
};
if (myform.content.value=="") {
alert("必须填写内容");
myform.content.focus();
return false;
};
}
</script> <!-- 下面需要一个表单, 用于提交 --> <form action="add.php" method="post" name="myform" onsubmit="return checkPost();">
用户:<input type="text" name="user"><br>
标题:<input type="text" name="title"><br>
内容:<textarea rows="30" cols="80" name="content"></textarea><br> 提交按钮<input type="submit" name="sub" value="发布留言"> </form>

  

<!-- conn.php -->
<?php //连接数据库
// @是忽略错误
$conn=@ mysql_connect("localhost","root","") or die("数据库不存在");
// 打开 数据库(传 库名)
mysql_select_db("ph100_bbs");
// 设置中文编码
// mysql_query("set names 'GBK'"); // 使用GBK中文编码 // echo $conn; /*
保存到数据库中的空格和回车都没问题, 问题是显示的html中有不同
所以在显示的时候转换它们就可以了
*/
function tohtmlcode($content){
return str_replace("\n", "<br>", str_replace(" ", " ", $content));
}

  

<!-- head.php - 用于制作导航功能 -->
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<title></title>
<link rel="stylesheet" href="images/css.css" type="text/css">
<b>
<a href="add.php">添加留言</a> |
<a href="list.php">浏览留言</a> |
<a href="login.php">登陆</a>
</b>
<hr size=1>

  

[PHP100]留言板(一)的更多相关文章

  1. AngularJs学习笔记(制作留言板)

    原文地址:http://www.jmingzi.cn/?post=13 初学Anjularjs两天了,一边学一边写的留言板,只有一级回复嵌套.演示地址 这里总结一下学习的过程和笔记.另外,看看这篇文章 ...

  2. dd——留言板再加验证码功能

    1.找到后台-核心-频道模型-自定义表单 2.然后点击增加新的自定义表单 diyid 这个,不管他,默认就好 自定义表单名称 这个的话,比如你要加个留言板还是投诉建议?写上去呗 数据表  这个不要碰, ...

  3. asp.net留言板项目源代码下载

    HoverTree是一个asp.net开源项目,实现了留言板功能. 前台体验网址:http://hovertree.com/guestbook/ 后台请下载源代码安装. 默认用户名:keleyi 默认 ...

  4. html的留言板制作(js)

    这次留言板运用到了最基础的localstorage的本地存储,展现的效果主要有: 1.编写留言2.留言前可以编辑自己的留言昵称.不足之处: 1.未能做出我喜欢的类似于网易的叠楼功能. 2.未能显示评论 ...

  5. 11月8日PHP练习《留言板》

    一.要求 二.示例页面 三.网页代码及网页显示 1.denglu.php  登录页面 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tran ...

  6. [课程设计]Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案)

    Scrum 3.7 多鱼点餐系统开发进度(留言板选择方案) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团队选题:餐厅到店点餐系统W ...

  7. [课程设计]Scrum 3.6 多鱼点餐系统开发进度(用户测试反馈页面构思&留言板设计)

    Scrum 3.6 多鱼点餐系统开发进度(用户测试反馈页面构思&留言板设计) 1.团队名称:重案组 2.团队目标:长期经营,积累客户充分准备,伺机而行 3.团队口号:矢志不渝,追求完美 4.团 ...

  8. 用 Express4 写一个简单的留言板

    Knowledge Dependence:阅读文本前,你需要熟悉 Node.js 编程.Express 以及相关工具和常用中间件的使用. Node.js 以其单线程异步非阻塞的特点,越来越被广大的 W ...

  9. 个人网页的留言板实现与sae的数据库账户配置

    个人网页(github)的留言板终于搞定了.总之后端的东西不会写,只有修改以前教程里面的文件.记录一下重要的过程. 使用了留言保存的send()函数,模版有注册登录功能.根据需求修改了一下,去掉了登录 ...

随机推荐

  1. jquery 日历插件datepicker格式调整

    <script> $(function() { $("#datepicker").datepicker({ dateFormat: "yy/mm/dd&quo ...

  2. MySQL学习笔记——存储引擎的索引特性

  3. kill 命令详解 系统信号

    kill  命令详解  系统信号 参考: 了解Linux的进程与线程 http://www.cnblogs.com/MYSQLZOUQI/p/4234005.html Linux就这个范儿 P532 ...

  4. centos shell编程6一些工作中实践脚本 nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志 直接送给bc做计算 gzip innobackupex/Xtrabackup 第四十节课

    centos   shell编程6一些工作中实践脚本   nagios监控脚本 自定义zabbix脚本 mysql备份脚本 zabbix错误日志  直接送给bc做计算  gzip  innobacku ...

  5. 30天,App创业从0到1【7.12西安站】

    活动概况 时间:2015年07月12日13:30-16:30 地点:汇天使咖啡(高新路36号智空间二楼) 主办:APICloud.UPYUN.万紫网络 网址:www.apicloud.com 费用:免 ...

  6. 使用 tox flake8 pytest 规范 python 项目

    使用 tox flake8 pytest 规范 python 项目 python 中有些很好的工作来规范整个项目的开发,而其中使用较多的就是使用 tox . flake8 . pytest . tox ...

  7. ie无法下载 无法打开该internet站点.请求的站点不可用或无法找到.请稍后重试

    PK找的: http://support.microsoft.com/kb/316431/ 症状 ... 如果服务器使用着安全套接字层 (SSL) 并且已将下面的两个 HTTP 标头或其中的一个添加到 ...

  8. 欢迎加入iOS开发初学者交流群:180080550

    本人现自学iOS开发,希望有志同道合的兄弟姐妹能一起交流学习, 欢迎加入iOS开发初学者交流群:180080550,期待与您一起进步,一起腾飞!

  9. Java基础——数组应用之StringBuilder类和StringBuffer类

    接上文:Java基础——数组应用之字符串String类 一.StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和 ...

  10. navicat premium 导出表结构

    1.右键 点击public,然后选择 数据传输 2.选择数据库对象,目标选择文件,选择文件的路径,然后开始