[实例]我的留言板

** 文件结构:
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. const与#define宏常量 , inline与#define

    1.预处理 预处理器是在真正的编译开始之前由编译器调用的独立程序.预处理器可以删除注释.包含其他文件以及执行宏替代. 预处理命令(宏定义#define..#undef. 文件包含#include. 条 ...

  2. TCP connection status

    A TCP connection progresses through a series of states during its lifetime. The following diagram il ...

  3. How To Install Tinc and Set Up a Basic VPN on Ubuntu 14.04

    Introduction In this tutorial, we will go over how to use Tinc, an open source Virtual Private Netwo ...

  4. svn利用TortoiseSVN忽略文件或文件夹

    忽略已经版本控制的文件 如果你不小心添加了一些应该被忽略的文件,你如何将它们从版本控制中去除而不会丢失它们?或许你有 自己的IDE配置文件,不是项目的一部分,但将会花费很多时间使之按照自己的方式工作. ...

  5. SQL Server xtype

    sysobjects 表 在数据库内创建的每个对象(约束.默认值.日志.规则.存储过程等)在表中占一行.只有在 tempdb 内,每个临时对象才在该表中占一行. 列名 数据类型 描述 name sys ...

  6. thinkphp添加后台的构思以及添加数据功能

    先写个表单提交,这就是个简单的后台了...其实也可以通过phpadmin...phpadmin也叫后台的吧...一切都是为了更方便快捷... 先弄个模板,简单了点,就是为了了解实现的流程和原理 < ...

  7. Ubuntu下如何将普通用户提升到root权限

    在ubuntu的系统操作中,我们经常会使用到系统权限的,因为权限不足,导致在一些操作当中非常麻烦.要获取权限,最长使用的方法就是使用sudo指令,但是来回使用还是比较麻烦,有没有直接提升我们的用户权限 ...

  8. [BS-22] Objective-C中nil、Nil、NULL、NSNull的区别

    Objective-C中nil.Nil.NULL.NSNull的区别 1.定义: nil:      OC语言定义:#define nil __DARWIN_NULL   /  #define __D ...

  9. JavaScript权威指南(第六版)--JavaScript概述 DEMO

    //所有在双斜线之后的内容都属于注释 //仔细阅读这里的注释:它们对JavaScript代码做了解释 //变量是表示值的一个符号名字 //变量是通过var关键字声明的 var x; //声明一个变量x ...

  10. HTMLCanvasElement.toDataURL()

    HTMLCanvasElement.toDataURL() 方法返回一个包含图片展示的 data URI .可以使用 type 参数其类型,默认为 PNG 格式.图片的分辨率为96dpi. 如果画布的 ...