【网安小白成长之路】2.PHP与MySQL交互

🐮博主syst1m 带你 acquire knowledge!

✨博客首页——syst1m的博客💘

🔞 《网安小白成长之路(我要变成大佬😎!!)》真实小白学习历程,手把手带你一起从入门到入狱🚭

😘《CTF专栏》超级详细的解析,宝宝级教学让你从蹒跚学步到健步如飞🙈

😎《大数据专栏》大数据从0到秃头👽,从分析到决策,无所不能❕

🔥 《python面向对象(人狗大战)》突破百万的阅读量,上过各种各样的官方大型专栏,python面向对象必学之一!🐽

🎉希望本文能够给读者带来帮助,更好地理解这个问题或解决你的困惑🐾

前言

学习PHP与MySQL交互可以更好的为后续的学习做铺垫,可以知道前端与后端之间的一个基本交互原理。

PHP与MySQL交互

一、phpMyAdmin安装

由于现在还没有学习怎么使用指令创建数据,这里我们就用可视化去操作

在小皮面板中点击软件管理找到PHPMyAdmin,安装到网站
在这里插入图片描述

在这里插入图片描述

二、PHPMyAdmin的使用

1.打开phpMyAdmin

打开 Apache 和 MySQL

再用浏览器访问 127.0.0.1/phpMyAdimn4.8.5

在这里插入图片描述

登录数据库,用户名是 root 密码默认是root

2.新建表数据库

点击左侧列表的新建,进行创建数据库,名称随意,我写的test

在这里插入图片描述
在这里插入图片描述

创建完成之后就会在左侧的列表中啦
在这里插入图片描述

3.添加内容

创建一个表,名字随意,我这是test_1

在这里插入图片描述

添加userName和userPasd字段,类型选择 TEXT 可以限制一下长度 点击保存

插入数据,输入你想要的用户名和密码

执行之后点击浏览就会出现刚刚添加的内容

在这里插入图片描述

三.编写代码

1.HTML代码

写一个简单的登录界面,就两个输入框和一个提交按钮

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>用户登录</title>
  </head>
  <body>
    <!-- action 选择提交的php文件  method 提交方式 -->
    <form action="login.php" method="post">
      <!-- labael 点击跳转到input的输入框 -->
      <label for="userName">用户名:</label>
      <!-- type 文本类型 -->
      <input type="text" id="userName" name="userName" />
      <br />
      <label for="userPasd">密码:</label>
      <input type="password" id="userPasd" name="userPasd" />
      <br />
      <!-- submit 提交 -->
      <input type="submit" value="提交" />
    </form>
  </body>
</html>

2.PHP代码

开头的代码
<?php
// 告诉浏览器这是一个html页面,使用uft-8解码
header("Content-type:text/html; Charset=utf-8");
// 开启session
session_start();
获取表单内容

使用$_POST获取传过来的表单内容

// 获取输入的内容
// trim去除掉两侧的空白或者预定字符
$userName = trim($_POST['userName']);
$userPasd = trim($_POST['userPasd']);
// 判断是否填写了信息
if ($userName == '' || $userPasd == '') {
    // 三秒后刷新到login.html
    header('refresh:3; url=login.html');
    echo '用户名或密码不能为空,将在三秒后跳转回登录页面,请重新登录';
}

if里面的判断不要只写一个 = 号,我之前写的时候漏了给我找了好久才发现

连接数据库
// mysqli_connect('数据库地址', '用户名', '密码', '数据库');
$con = mysqli_connect('localhost', 'root', '123456', 'test');
判断是否成功连接到数据库
// 检查连接状态
if (mysqli_connect_errno()) {
    echo '连接数据库失败' . mysqli_connect_error();
    // 停止执行后面的代码
    exit();
}

mysqli_connect_errno() 检查连接状态

mysqli_connect_error() 可以返回连接失败的原因

与数据进行匹配

翻译一下 选择 * 来自 test_1里面的 userName是否等于提交的用户名 和 userPasd是否等于提交的密码

*是通配符就是选择所有,也可以写成 select userName,userPasd 只选择两个

$sql = "select * from test_1 where userName = '$userName' and userPasd = '$userPasd'";
// 返回的结果
$result = mysqli_query($con, $sql);

mysqli_query(数据库,MySQL语句)

判断返回值是否成功

mysqli_num_rows() 查看内容的行数

如果匹配成功的话返回值的行数就有很多数据,匹配失败的话就是空的

if (mysqli_num_rows($result) > 0) {
    echo "登录成功";
} else {
    header('refresh:3; url=login.html');
    echo '用户名或密码错误,将在三秒后跳转回登录页面,请重新登录';
}
PHP的全部代码
<?php
// 告诉浏览器这是一个html页面,使用uft-8解码
header("Content-type:text/html; Charset=utf-8");
// 开启session
session_start();
// 获取输入的内容
// trim去除掉两侧的空白或者预定字符
$userName = trim($_POST['userName']);
$userPasd = trim($_POST['userPasd']);
// 判断是否填写了信息
if ($userName == '' || $userPasd == '') {
    // 三秒后刷新到login.html
    header('refresh:3; url=login.html');
    echo '用户名或密码不能为空,将在三秒后跳转回登录页面,请重新登录';
}
// 连接数据库
//                     数据库地址   用户名    密码     数据库
$con = mysqli_connect('localhost', 'root', '123456', 'test');
// 检查连接状态
if (mysqli_connect_errno()) {
    echo '连接数据库失败' . mysqli_connect_error();
    // 停止执行后面的代码
    exit();
}
// 查看传入的数据是否与数据库中的相同
$sql = "select * from test_1 where userName = '$userName' and userPasd = '$userPasd'";
// 返回的结果
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
    echo "登录成功";
} else {
    header('refresh:3; url=login.html');
    echo '用户名或密码错误,将在三秒后跳转回登录页面,请重新登录';
}

四、测试是否能成功登录

输入开始时自己在数据库中添加的用户名和密码

在这里插入图片描述

成功返回的页面

在这里插入图片描述

失败返回的页面

在这里插入图片描述

五、总结

代码量稍稍有些多,但是跟着文章一步一步的来,还是很简单易懂的,大体就是使用php接收前端传来的数据,与数据库连接后使用MySQL语句进行数据匹配。如果你还有什么问题的话,可以私信我哦!

相关推荐

  1. 前端的学习(Vue2 一)

    2024-03-31 10:12:06       28 阅读
  2. 前端的学习(Vue2 二)

    2024-03-31 10:12:06       40 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-31 10:12:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-31 10:12:06       101 阅读
  3. 在Django里面运行非项目文件

    2024-03-31 10:12:06       82 阅读
  4. Python语言-面向对象

    2024-03-31 10:12:06       91 阅读

热门阅读

  1. 一梦三四年,回首UG在大学的往事(开篇)

    2024-03-31 10:12:06       32 阅读
  2. Python读取PDF文字 去掉页眉页脚

    2024-03-31 10:12:06       42 阅读
  3. vue 透传 Attributes(二)

    2024-03-31 10:12:06       36 阅读
  4. 使用 R 读取Excel文件的特定列

    2024-03-31 10:12:06       36 阅读
  5. SVG XML 格式定义图形入门介绍

    2024-03-31 10:12:06       46 阅读
  6. Kotlin语言教程

    2024-03-31 10:12:06       35 阅读
  7. FastAPI+React全栈开发16 设置一个React工作流

    2024-03-31 10:12:06       41 阅读
  8. Ecology9 分部(单位)获取示例

    2024-03-31 10:12:06       40 阅读
  9. I/O密集型任务和CPU密集型任务的理解与对比

    2024-03-31 10:12:06       36 阅读
  10. 给网站添加安全措施 -- http -> https

    2024-03-31 10:12:06       40 阅读
  11. vue 透传 Attributes

    2024-03-31 10:12:06       36 阅读
  12. 40个学习网站合集

    2024-03-31 10:12:06       34 阅读
  13. MySql的下载与安装

    2024-03-31 10:12:06       42 阅读