[实例]我的留言板

** 文件结构:
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. Magento white screen or how XML can break your site?

    Magento white screen or how XML can break your site? by SANDO on 02. OCT, 2012 in MAGENTO, SMALL TIP ...

  2. ligerui多选动态下拉框

    今天下午要求做一个支持多选的,并且插件用ligerui的,当时有点小懵了,因为没用过ligerui啊!而且按照API的介绍,我做得也很好啊,可是为什么就是显示不出来?据说有位小神比较厉害,请教来之,两 ...

  3. PySe-002-Py-简单示例及编码设定

    非常简单而又国际化的例子 Hello World!在控制台依次输入命令:python, print "This is first program %s" % "Hello ...

  4. Linux 中的零拷贝技术,第 2 部分

    技术实现 本系列由两篇文章组成,介绍了当前用于 Linux 操作系统上的几种零拷贝技术,简单描述了各种零拷贝技术的实现,以及它们的特点和适用场景.第一部分主要介绍了一些零拷贝技术的相关背景知识,简要概 ...

  5. python判断类型

    方法 isinstance(obj, type) 示例 >>> print isinstance(, int) True >>> print isinstance( ...

  6. html 二级联动(省市联动)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. jQuery框架的简单使用(H5)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. Xcode 6.x 添加Empty Application模板

    Xcode 6.x 添加Empty Application模板 在Apple最新的XCode6.x中没有了Empty Application模板,这对一个老人来说是不能别接受的,同时也可以看出Appl ...

  9. spring 怎样将枚举项注入到bean的数组字段中

    在配置文件的xmlns中引入util的scheam xmlns:util=http://www.springframework.org/schema/util 在配置文件的xmlns:util=&qu ...

  10. BenchmarkSQL测试脚本实现

    sqlTableCreates DROP SCHEMA IF EXISTS benchmarksql CASCADE; CREATE SCHEMA benchmarksql; create table ...