zoukankan      html  css  js  c++  java
  • [PHP100]留言板(一)

    [实例]我的留言板

    ** 文件结构:
    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(被替换值, 替换的值, 被替换的内容)
    /*
    输入框中的回车 不是html中的<br>;
    输入框空格不是html中的&nbsp;
    所以要替换掉
    */
    function htmltocode($content){
    $content=str_replace(" ","&nbsp;",$content);
    $content=str_replace(" ","<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("
    ", "<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>
    

      

  • 相关阅读:
    测试一下你的T-SQL基础知识-count
    测试一下你的T-SQL基础知识-subquery
    Microsoft SQL Server 2012 管理 (2): Auditing
    Webpack
    react
    Webpack 傻瓜式指南(一)
    谈谈react-router学习
    使用Flexible 实现手淘H5 页面的终端适配学习
    Promise 让异步更优
    基于LeanCloud云引擎的Web全栈方案
  • 原文地址:https://www.cnblogs.com/lizunicon/p/4136578.html
Copyright © 2011-2022 走看看