记录一下我在学习《十天学会 PHP》(第六版)的过程中的遇到的重难点,该课程是学习制作一个简单的留言板。

准备工作

  • XAMPP(Apache + MySQL + PHP + PERL) 是一个功能强大的建站集成软件包。现在 XAMPP 的官方版本使用的数据库是 MariaDB,但是国内使用 MySQL 数据库较多,视频里 XAMPP 的站点似乎也没了,反正我是没找到,后来在 php 中文网找到了和视频里一样的 XAMPP 版本,这个版本使用的是 MySQL 数据库,同时php中文网也是学习学习 PHP 等不错的网站。下载地址
  • PHP手册 一定要有,直接百度 php 手册就可以找到下载了。
  • Navicat 是一个数据库管理工具,破解版的安装方法在这篇博客( Navicat Premium 12 安装与破解),方便简单快捷,不需要任何花里胡哨的操作。
  • HTML 手册是学习 HTML 的很好的工具。

Navicat 的使用

  • 建立如下图所示的数据库,主要是我目前不知道不同字符集和排列规则会对数据造成什么样的影响,所以只能照搬视频里的样式建立数据库。


    image

代码

  • 把代码都放在 \xampp\htdocs 文件夹下面,其它具体的细节,现在有些遗忘了,通过代码回忆。
  • 先是一个 gbook.php 文件
<?php
include('connect.php');

$sql = "SELECT * FROM msg ORDER BY id DESC";
$mysqli_result = $db->query($sql);
if ($mysqli_result === false) {
    echo "SQL错误";
    exit;
}
while ($row = $mysqli_result->fetch_array(MYSQL_ASSOC)) {
    $rows[] = $row;
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>留言本</title>
        <style>
            .wrap{
                width: 600px;
                margin: 0px auto;
            }
            .add{
                overflow: hidden;
            }
            .add .content{
                width: 598px;
                margin: 0;
                padding: 0;
            }
            .add .user{
                float: left;
            }
            .add .btn{
                float: right;
            }
            .msg{
                margin: 20px 0px;
                background: #ccc;
                padding: 5px;
            }
            .msg .info{
                overflow: hidden;
            }
            .msg .user{
                float: left;
                color: blue;
            }
            .msg .time{
                float: right;
                color: #999;
            }
            .msg .content{
                width: 100%;
            }
        </style>
    </head>
    <body>
        <div class="wrap">
            <!-- 发表留言 -->
            <div class="add">
                <form action="save.php" method="post">
                    <textarea name="content" class="content" cols="50" rows="5"></textarea>
                    <input name="user" class="user" type="text" />
                    <input class="btn" type="submit" value="发表留言" />
                </form>
            </div>

            <?php
            foreach ($rows as $row) {
            ?>
                <!-- 查看留言 -->
                <div class="msg">
                    <div class="info">
                        <span class="user"><?php echo $row['user'];?></span>
                        <span class="time"><?php echo date("Y-m-d H:i:s", $row['intime']);?></span>
                    </div>
                    <div class="content">
                        <?php echo $row['content'];?>
                    </div>
                </div>
            <?php
            }
            ?>
        </div>
    </body>
</html>
  • 然后是 connect.php 文件
<?php
//预先定义数据库链接参数
$host = '127.0.0.1';
$dbuser = 'root';
$password = '123456';
$dbname = 'php10';

$db = new mysqli($host, $dbuser, $password, $dbname);

if ($db->connect_errno <> 0) {
    die('链接数据库失败');
}
//设定数据库数据传输䣌编码
$db->query("SET NAME UTF8");
?>
  • 接着是 input.php 文件
<?php
class input{
    function post($content) {
        if ($content == '') {
            return false;
        }
        //禁止使用的用户名
        $n = ['张三','李四','王五'];
        foreach ($n as $name) {
            if ($content == $name) {
                return false;
            }
        }
        return true;
    }
}
?>
  • 最后是 sava.php 文件
<?php
include('input.php');
include('connect.php');

$content = $_POST['content'];
$user = $_POST['user'];

$input = new input();

//调用函数,检查留言内容
$is = $input->post($content);
if ($is == false) {
    die('留言内容的数据不正确');
}

//调用函数,检查留言人
$is = $input->post($user);
if ($is == false) {
    die('留言人的数据不正确');
}

//数据入库
$time = time();
$sql = "INSERT INTO msg(content, user, intime) VALUES ('{$content}', '{$user}', '{$time}')";
$is = $db->query($sql);
header("location: gbook.php");
?>

《十天学会 PHP》的重难点的更多相关文章

  1. 李洪强漫谈iOS开发[C语言-008]- C语言重难点

      C语言学习的重难点 写程序的三个境界: 照抄的境界,翻译的境界,创新的境界 1  伪代码: 描述C语言的编程范式 范式: 规范的一种表示 对于C的范式学会的话,C, C++ Java 都会了 2 ...

  2. 标准之路网站上一篇文章《十天学会web标准(div+css)》的营养精华

    以下精华出自如下链接,“http://www.aa25.cn/special/10day/index.shtml”,<十天学会web标准(DIV+CSS)>. 这个内容不要删掉:“< ...

  3. 十年学会编程 著者: Peter Norvig 翻译: Dai Yuwen

    为何人人都这么着急? 信步走进任何一家书店,你会看到名为<如何在7天内学会Java>的书,还有各 种各样类似的书: 在几天内或几小时内学会Visual Basic, Windows, In ...

  4. PHP学习过程_Symfony_(3)_整理_十分钟学会Symfony

    这篇文章主要介绍了Symfony学习十分钟入门教程,详细介绍了Symfony的安装配置,项目初始化,建立Bundle,设计实体,添加约束,增删改查等基本操作技巧,需要的朋友可以参考下 (此文章已被多人 ...

  5. 《十天学会单片机和C语言编程》

    <十天学会单片机和C语言编程> 大家注意了这个文件只有最新版迅雷可以下载,下面的lesson几就是第几课.点击右键使用迅雷下载. ed2k://|file|[十天学会单片机和C语言编程]. ...

  6. “全栈2019”Java多线程第二十九章:可重入锁与不可重入锁详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  7. DIV+CSS专题:十天学会DIV+CSS

    DIV+CSS专题:十天学会DIV+CSS,在网上看到的.感觉蛮好,推荐一下. 十天学会DIV+CSS(WEB标准)CHM格式文件下载 第十天 div+css网页标准布局实例教程(三) 第十天 div ...

  8. English--音标重难点

    English|音标重难点 在拥有了,音标的元音与辅音的基础之后,需要对于这些音标进行加以区分,毕竟方言对于口型的影响非常的大. 前言 目前所有的文章思想格式都是:知识+情感. 知识:对于所有的知识点 ...

  9. 这是一份非常适合收藏的Android进阶/面试重难点整理

    写在前面 记得我大二时“不务正业”地自学Android并跟了老师做项目,到大三开始在目前的公司实习,至今毕业已有几年多,学习Android已经6.7年多了!但总感觉知识点很零散,并且不够深入,遇到瓶颈 ...

随机推荐

  1. HttpContext对象下的属性Application、Cache、Request、Response、Server、Session、User

    概述: HttpContext封装关于单个HTTP请求的所有HTTP特定信息. HttpContext基于HttpApplication的处理管道,由于HttpContext对象贯穿整个处理过程,所以 ...

  2. exception内置对象

    当当前页面可能发生异常的时候,此页面将此异常交给另外一个页面处理 在page处添加    errorPage="处理异常的页面.jsp" 在异常处理的页面的page处应该添加  i ...

  3. 自动化发送邮件之SMTP

    一.思路 1.若是QQ邮箱需要在设置-账户里面开启服务 2.在python中smtplib库是专门用来处理邮件 3.自动化邮件发送实操 a.要处理的邮件主题,寄件人,收件人,邮件正文,附件, b.邮件 ...

  4. 树莓派linux shell

    ls命令用来显示目录下有哪些文件和文件夹 pi@raspberry ~ $ ls 蓝色表示文件夹 白色是文件 ls -R列出所有文件夹的内容(R表示递归) ls -l 查看详细信息 包括文件权限 最后 ...

  5. [Javascript] Check Promise is Promise

    const isPromise = obj => Boolean(obj) && typeof obj.then === 'function'; This can be a to ...

  6. Tips on Blind Source Separation

    盲源分离是指在不知道源信号和信道传输参数的情况下,根据输入信号的统计特性,仅由观测信号恢复出源信号各个独立成分的过程.盲源分离研究的信号模型主要有三种:线性混合模型.卷积混合模型和非线性混合模型. 1 ...

  7. inflection point

    http://blog.thefirehoseproject.com/posts/learn-to-code-and-be-self-reliant/ kill will develop 1.repe ...

  8. 验证符号文件的又一方法(!itoldyouso)

    如果您正在开发软件,很可能遇到了“不匹配的PDB”调试器错误.当您将调试器指向错误的符号路径时,通常会发生这种情况. 但有时你确信你所指向的符号是正确的符号,这让你想知道为什么调试器认为这些符号不匹配 ...

  9. 3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(HTTP介绍,TCP实现HTTP下载文件)

    https://www.cnblogs.com/yangfengwu/p/10357564.html 看了好多文章.....唉,还是自己亲自动手用网络监控软件测试吧 先看这个节安装WEB服务器.... ...

  10. CSS系列之后代选择器、子选择器和相邻兄弟选择器

    后代选择器比子选择器的范围大,包含子选择器,且包含子选择器的“子孙”选择器,后代选择器使用"空格"符号间隔选择器 子选择器:子选择器只是父选择器的一级子元素,使用"> ...