您的当前位置:首页>全部文章>文章详情

【PHP】用PHP从数据库到后端到前端完整实现一个中秋节祝福语项目

CrazyPanda发表于:2023-12-06 20:07:42浏览:445次TAG:

文章目录


中秋佳节即将来临!在这特殊的时刻,我们特别举办一场属于程序员的中秋征文活动,CSDN与你一起过中秋!本篇文章还是让我们用华为云云耀云服务器L实例作为支撑,一起带着大家实现一个用PHP从数据库到后端到前端的中秋节祝福语项目。

🚀一、前言

中秋节是我国国传统的重要节日之一,人们在这一天家人团聚、赏月、品尝月饼。也和亲朋好友诸多祝福往来。

b5a77db0cdbd436188c23d52d8838748.png

为了更加方便获取到非常有心意的祝福语,本文将利用PHPHTML + Jquery开发一个中秋节祝福语生成工具,通过点击按钮和输入姓名,然后就可以马上生成一条祝福语。我们还将使用MySQL数据库存放一些祝福语,保证每次生成的都不一样。

🚀二、开发环境准备

在开始之前,我们需要准备好开发环境。首先,确保你已经安装了PHPMySQLNginx服务器。搭建好环境后,我们可以开始编写代码了。

首先服务器上面是没有PHP环境的,然后执行下面的命令安装。

apt install php
apt install php-fpm
apt install php-mysqli
php --version

通过命令下面的输出可以看到是PHP8.1的版本,PHP环境一般是不会预装的,所以得我们自己装一下。
在这里插入图片描述

MySQL服务docker里面本身也有,直接连就行了。Nginx这些Web中间件也是预装的,下面直接就开始功能实现了。

在这里插入图片描述

🚀三、功能实现

🔎3.1 准备数据库和数据

🍁3.1.1 创建数据库及表结构

首先,我们需要创建一个MySQL数据库用于存储祝福语。打开MySQL命令行或者使用phpMyAdmin等工具,创建一个名为"blessings"的数据库。

CREATE DATABASE `blessings` CHARACTER SET 'utf8' COLLATE 'utf8_bin'

接下来,我们创建一个名为"messages"的数据表,用于存储祝福语。

CREATE TABLE messages (
    id INT AUTO_INCREMENT PRIMARY KEY,
    content VARCHAR(255) NOT NULL
);

用navicat创建表执行的效果如下。

在这里插入图片描述

🍁3.1.2 准备数据

这里我们插入一些数据进去,这些数据在后面程序里面会使用到。

insert into messages(content) values
('月圆人团圆,中秋节快乐!愿你与亲朋好友共享美好团聚时光!'),
('中秋团圆,心意相连,愿一轮明月带给你幸福和快乐!'),
('愿你拥有一颗明亮的心灵,如同中秋的明月般清澈!祝中秋快乐!'),
('祝你中秋快乐,万事如意!愿你的生活像满月一样圆满、美好!'),
('祝福你和家人团聚快乐,幸福美满,中秋节快乐!'),
('如同明月照亮夜空,愿你的人生也充满光明与美好。中秋节快乐!'),
('千里传一声祝福,千山传一份思念,愿你在中秋佳节感受到深深的关爱!'),
('中秋之夜,愿你的生活像明亮的月光一样温暖和谐!中秋快乐!'),
('中秋月饼甜蜜,祝福话语深情,愿你的中秋节充满关爱和温暖!'),
(' 中秋佳节,愿你的心中充满快乐和喜悦!祝福你度过一个美好的中秋!')

🔎3.2 后端开发

🍁3.2.1 连接数据库

在PHP代码中,我们需要连接到MySQL数据库。创建一个名为connect.php的文件,用于存放数据库连接相关的代码。

<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "blessings";

// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
mysqli_set_charset($conn, "utf8");

// 检测连接是否成功
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}else {
   echo "数据库连接成功\n";
}
?>

your_usernameyour_password替换为你的MySQL用户名和密码。记得数据要先创建,不然会报错。执行完成后可以php connect.php一下,看看能否链接成功。

在这里插入图片描述

🍁3.2.1 获取祝福语

在同一个connect.php文件中,我们添加获取随机祝福语的功能。

<?php
// ...

// 获取祝福语
function getRandomBlessing($conn) {
    $sql = "SELECT content FROM messages ORDER BY RAND() LIMIT 1";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        return $result->fetch_assoc()["content"];
    } else {
        return "没有找到祝福语";
    }
}

// ...
?>

🍁3.2.3 处理请求

创建一个名为generate.php的文件,用于处理前端发送过来的请求。

<?php
require_once "connect.php";

// 处理请求
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // 获取姓名
    $name = $_POST["name"];

    // 获取随机祝福语
    $blessing = getRandomBlessing($conn);

    // 拼接结果
    $result = $name . ":" . $blessing;

    // 返回结果
    echo $result;
}
?>

🍁3.2.4 配置Nginx与FPM

这一步是必须要走的,通过Nginx打通FPM,这是最佳实践。这里还是在sites-enabled下面建一个虚拟域名bless.conf,内容如下。

server {
   listen 80;
   server_name bless.heiye.net;
   location ~* ^/blessing {
       root /var/web/front/;
   }
   location / {
       fastcgi_pass unix:/run/php/php8.1-fpm.sock;
       fastcgi_index  index.php;
       fastcgi_param  SCRIPT_FILENAME /var/web/blessing$fastcgi_script_name;
       fastcgi_param  HTTP_PROXY  "";
       include        fastcgi_params;
   }
}

其中bless.heiye.net是虚拟域名,/run/php/php8.1-fpm.sockPFMsock端口,为什么是它,/etc/php/8.1/fpm/pool.d/www.conf这个里面有。配置完了,重启Nginx服务就行了。

如果遇到了下面的权限问题,去Nginx的主配置文件里面修改用户为www-data

在这里插入图片描述

🔎3.3 前端开发

🍁3.3.1 HTML布局

创建一个名为index.html的文件,用于展示按钮和输入框。

<!DOCTYPE html>
<html>
<head>
    <title>中秋节祝福语生成工具</title>
    <link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0/css/bootstrap.min.css">
<script src="https://cdn.staticfile.org/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.3.0/js/bootstrap.min.js"></script>
</head>
<body>
    <div class="container mt-5">
        <h1 class="text-center mb-4">中秋节祝福语生成工具</h1>
        <div class="form-group row">
            <label for="name" class="col-sm-2 col-form-label">姓名</label>
            <div class="col-sm-8">
                <input type="text" class="form-control" id="name" placeholder="请输入姓名">
            </div>
        </div>
        <div class="text-center mb-4">
            <button type="button" class="btn btn-primary" id="generate">生成祝福语</button>
        </div>
        <div class="form-group row">
            <label for="greeting" class="col-sm-2 col-form-label">祝福语</label>
            <div class="col-sm-8">
                <textarea class="form-control" id="greeting" readonly></textarea>
            </div>
        </div>
    </div>
    <script>
	
    </script>
</body>
</html>

🍁3.3.2 JQuery事件处理

在同一个index.html"文件中,添加Jquery事件处理的代码,用于发送请求和展示结果。

<!-- ... -->

<script>
$(document).ready(function(){
    $("#generate").click(function(){
        var name = $("#name").val();

        $.post("/generate.php",
        {
            name: name
        },
        function(data, status){
            $("#greeting").text(data);
        });
    });
});
</script>
</body>
</html>

🚀四、运行和测试

🔎4.1 绑定host

上面Nginx配置里面提到了bless.heiye.net这个域名,实际上这个域名不是真实存在的,要访问到需要配置一下,我是Mac,在/etc/hosts中修改,WindowsC:\Windows\System32\drivers\etc这个目录下面的host文件,放入下面这一行。

124.70.177.136 bless.heiye.net

🔎4.2 开始测试

connect.phpgenerate.phpindex.html文件放置到对应的服务器目录下,并启动服务器。在浏览器中访问http://bless.heiye.net/blessing/index.html,你将看到一个输入框和一个按钮。

在输入框中输入你的名字,点击按钮后,页面将展示一条随机的祝福语,并将你的名字添加到祝福语的前面。

在这里插入图片描述

如上图,姓名我输入黑夜开发者,就为我生成了一条不错的祝福语,是不是满满的仪式感呢。

🚀五、总结

本篇文章通过华为云云耀云服务器L实例进行支持开发,用PHPHTML + Jquery开发一个中秋节祝福语生成工具。通过点击按钮和输入姓名,后端随机返回一条祝福语,并将名字加到祝福语的前面展示出来。同时,我们还使用MySQL数据库存放后端的祝福语。希望本文能够加深你理解PHPHTML + Jquery这种全栈开发模式,并能在真实的项目中提供一些实用的开发思路。

到现在为止,我的L实例上面已经部署了很多服务了,有Python的Flask服务,自动化测试脚本服务,中秋节祝福语项目,Presta Shop跨境商城。在一个2核2G的服务器上面能够玩这么多东西还是非常不错的。

感谢CSND,华为云本次测评邀请,希望华为云越来越好,希望中国的云事业更上一层楼,我作为一个普通开发者,也将不断参与与见证这一伟大的技术探索与变革。

在这里插入图片描述

猜你喜欢

【PHP】从零搭建php8环境
从零搭建php环境-php8一、下载1、https://www.php.net/distributions/php-8.0.0.tar.gz下载到本地,文件传输上传到 /usr/local/src/2、wget -P /usr/local/src/ https://www.php.net/distributions/php-8.0.0.tar.gz二、解压、编译、安装1、解压缩&gt;&nbsp;cd&nbsp;/usr/local/src/ &gt;&nbsp;tar&nbsp;xzf&amp;nbs
发表于:2024-01-01 浏览:274 TAG:
【PHP】如何在ThinkPHP6中使用MongoDB进行数据存储
随着互联网的不断发展,数据的存储和处理越来越成为一个重要的方向。而mongodb则是一种适用于大规模数据和高性能应用场景的nosql数据库,它的高性能和可扩展性得到了众多开发者的拥护。在这篇文章中,我们将介绍如何在thinkphp6中使用mongodb进行数据存储。一、安装MongoDB拓展首先,我们需要在服务器上安装MongoDB拓展,以便我们在ThinkPHP6中使用MongoDB进行数据存储。在这里,我以Windows系统为例,讲解MongoDB的安装方法。1.下载MongoDB拓展我们可
发表于:2024-05-28 浏览:313 TAG:
【PHP】workerman-jsonRpc 与 thinkphp6结合 的方法
1.下载workerman-jsonRpc的包2.将包内 vendor / workerman 下的内容放进tp的vendor目录下并加载(我先用composer装了GatewayWorker,然后把文件覆盖进去了) 3.创建一个tp的命令行,并给这个命令行添加2个自定义参数 4.将workerman-jsonrpc根目录下的start.php内容复制到你创建的命令行类的执行方法里,并把引入vendor那行删掉 5.打开workerman扩展的目录,找到Worker.php类文件 找到其中的
发表于:2024-05-27 浏览:287 TAG:
【PHP】php常见的集群有哪些
php常见的集群有LAMP集群、Nginx集群、Memcached集群、Redis集群和Hadoop集群。详细介绍:1、LAMP集群,LAMP是指Linux、Apache、MySQL和PHP的组合,是一种常见的PHP开发环境,在LAMP集群中,多个服务器运行相同的应用程序,并通过负载均衡器将请求分发到不同的服务器上;2、Nginx集群,Nginx是一种高性能的Web服务器等等。本教程操作系统:windows10系统、PHP 8.1.3版本、DELL G3电脑。PHP是一种广泛使用的服务
发表于:2023-12-06 浏览:368 TAG:
【PHP】PHP常见漏洞的防范
一、常见PHP网站安全漏洞对于PHP的漏洞,目前常见的漏洞有五种。分别是Session文件漏洞、SQL注入漏洞、脚本命令执行漏洞、全局变量漏洞和文件漏洞。这里分别对这些漏洞进行简要的介绍。1、session文件漏洞Session攻击是黑客最常用到的攻击手段之一。当一个用户访问某一个网站时,为了免客户每进人一个页面都要输人账号和密码,PHP设置了Session和Cookie用于方便用户的使用和访向。2、SQL注入漏洞在进行网站开发的时候,程序员由于对用户输人数据缺乏全面判断或者过滤不严导致服务器执
发表于:2024-03-11 浏览:347 TAG:
【PHP】php怎么使用正则匹配去掉html
php使用正则匹配去掉html方法:1、创建一个php示例文件;2、定义一个HTML标签的字符串“$html_string”;3、使用正则表达式“/1dad84ea0069e7538b7dfc1ec7547c1e/”匹配所有html标签;4、使用“preg_replace(&quot;/1dad84ea0069e7538b7dfc1ec7547c1e/&quot;,$html_string)”语法删除html标签即可。本教程操作系统:Windows10系统、php8.1.3版本、Del
发表于:2023-12-19 浏览:334 TAG:
【PHP】ThinkPHP如何防止SQL注入攻击
在ThinkPHP中,参数绑定是一种安全的方式,用于处理用户输入,特别是在构建数据库查询时。参数绑定可以防止SQL注入攻击,因为绑定的参数会被自动转义,而不是直接插入到SQL语句中。以下是在ThinkPHP中使用参数绑定的一些建议。1. 控制器中的参数绑定:在控制器中,可以使用bind方法进行参数绑定。以下是一个简单的示例:public&nbsp;function&nbsp;index($id) { &nbsp;&nbsp;&nbsp;&nbsp;$result&nbsp;=&nbsp;Db::
发表于:2024-01-04 浏览:334 TAG:
【PHP】SQL查询优化方法
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中使用!=或&lt;&gt;操作符,否则将引擎放弃使用索引而进行全表扫描。3.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select&nbsp;id&nbsp;from&nbsp;t&nbsp;where&nbsp;num&nbsp;is&nbsp;null可以在num上设置默认值0,确保表
发表于:2024-07-15 浏览:259 TAG: #mysql
【PHP】php解析大量数据json文件方式
1. 在处理超大文件时,我们可以使用逐行读取的方式来解析JSON数据。具体步骤如下:打开文件并逐行读取数据。每次读取一行数据后,使用json_decode()函数将其解析为JSON对象。对解析后的JSON对象进行处理,例如提取需要的数据或进行其他操作。继续读取下一行,重复步骤2和步骤3,直到文件读取完毕。下面是一个示例代码,演示了如何使用以上步骤来解析超大JSON文件:$file&nbsp;=&nbsp;fopen(&#39;large_file.json&#39;,&nbsp;&#39;r&amp;#
发表于:2024-08-13 浏览:281 TAG: #php #json
【PHP】ThinkPHP与Laravel一样吗
thinkphp和laravel是不一样的。thinkphp和laravel虽然都是php开发框架,但是有很多区别:1、渲染末班的方式不同,thinkphp用“$this-&gt;display()”的方式渲染模版,laravel使用“return view()”方法;2、laravel是一个重路由的框架,而thinkphp要有控制器方法才能正常访问。thinkphp和laravel不一样ThinkPHP是免费开源的,快速的,简单的,面向对象的轻量级PHP开发框架,ThinkPHP可以支持win
发表于:2024-07-14 浏览:299 TAG: