PHP --- 登录界面构建与mysql交互

news2024/9/25 15:25:46

登录界面构建与mysql交互

环境准备

win2003server
phpstudy2016
vscode

(1)login.html

  • 利用input表单就可构建简单登录界面
  • <fieldset>标签:框住标签内容
  • <legend>标签:为filedset标签添加标题
  • <label>标签:点击字体,聚焦后面的控件
  • <li>标签:列表标签,ul标签代表着下方li标签将无序显示,ol标签代表有序显示
  • checkbox:复选圆框表单元素
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>1234567</title>
</head>
<body>
    <form action="login.php" method="post">
        <fieldset>
            <legend>用户登录</legend>
            <ul>
                <li>
                    <label>用户名:</label>
                    <input type="text" name="username" id="">
                </li>
                <li>
                    <label>密码:</label>
                    <input type="password" name="password" id="">
                </li>
                <li>
                    <label></label>
                    <input type="checkbox" name="remember" value="yes">7天自动登录
                </li>
                <li>
                    <label></label>
                    <input type="submit" name="login" value="登录">
                </li>
            </ul>
        </fieldset>
    </form>
</body>
</html>

(2)login.php

<?php
header('Content-type:text/html;charset=utf-8');
// 开启session
session_start();
// 处理用户登录信息
if (isset($_POST['login'])){
    # 接受用户登录信息
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    // 判断提交的登录信息
    if (($username == '') || ($password == '')){
        // 若为空,视为未填写,提示错误,3秒后返回登录界面
        header('refresh:3; url=login.html');
        echo " 用户名或密码不能为空,系统将在3秒后跳转到登录界面,重新填写登录信息! ";
        exit;
    } 
    // 连接数据库
    $con = mysqli_connect('localhost','root','123456');
    //                      ip地址   用户名   mysql密码
    // 验证数据库连接状态
    if(mysqli_errno($con)){
        echo "连接失败,请重试".mysqli_error($con);
        exit;
    }
    // 设置解码方式
    mysqli_set_charset($con,'utf-8');
    // 设置datebase
    mysqli_select_db($con,'test');
    // 查看传入的用户名、用户密码与数据库中的值是否相同
    $sql = "select * from login where username = '$username'and password = '$password'";
    // 存放返回的数据
    $result = mysqli_query($con,$sql);
    // 查看当前的数据有几行
    $num = mysqli_num_rows($result);
    if (!$num){
        # 用户名或密码错误,同空的处理方式
        header('refresh:3;url=login.html');
        echo "用户名或密码错误,系统将在3秒后跳转到登录界面,请重新填写登录信息!";
        exit;
    }else{
        # 用户名和密码都正确,用户新信息保存到session中
        $_SESSION['username'] = $username;
        $_SESSION['islogin'] = 1;
        // 若勾选7天内自动登录,则将其保存到cookie中并保存7天
        if ($_POST['remember'] == 'yes'){
            setcookie( 'username' , $username , time() + 7*24*60*60);
            setcookie( 'code' ,md5($username.md5($password)), time() + 7*24*60*60);
        } else {
            // 未勾选则删除cookie
            setcookie('username', '', time()-999);
            setcookie('code', time()-999);
        }
        // 处理完附加项后跳转到登录成功的首页
        header('location:index1.php');
        echo "登录成功";
        mysql_close($con);
    }
}
?>

(3)在win2003server端的phpstudy创建数据库

方法一:在phpstudy的界面创建


方法二:命令行创建

(4)检测连接情况

1:正常登录


2:密码错误


3:用户名或密码为空


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/696297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

UE5.1.1 C++从0开始(15.作业4个人作业分享)

教程链接&#xff1a;https://www.bilibili.com/video/BV1nU4y1X7iQ 好吧这个作业应该是之前写的&#xff0c;但是我发现我没写&#xff0c;后面我又回去自己写了一遍再看代码&#xff0c;感觉上大差不差&#xff0c;各位可以看着我的和老师的还有自己的对比下。 SBTService_…

display:flex的用法

flex: 元素以弹性布局方式显示&#xff0c;可以通过设置父元素的 display: flex 属性来实现子元素的弹性布局。常用于实现响应式布局和灵活的元素排列。 当使用 display: flex; 将元素容器设置为弹性布局时&#xff0c;子元素会自动填充容器&#xff0c;并根据容器的宽度进行调…

python实现磨皮效果

主要是借鉴了这个文章&#xff0c;写的非常棒&#xff0c;会比直接使用保边滤波好很多&#xff0c;能够高保真&#xff0c;不会糊掉。 我使用python简单的实现了一下&#xff0c;看起来还不错 import time import numpy as np import cv2def mopi(src):high_pass src.copy()…

【Docker】Docker运行时间长,空间不足no space left on device: unknown

空间不足no space left on device: unknown问题解决 1.执行出错2.解决方法3.dump文件是否可以删除 1.执行出错 在运行 docker restart 容器Id查看磁盘空间占用 df -h2.解决方法 这个问题是由与 /run 的空间使用完了&#xff0c;清理/run的空间,经过查找使用最大的是 /run/u…

Linux 情景分析

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序 Linux设备驱动开发详解 深入理解Linux虚拟内存管理 Linux 情景分析 文章目录 系列文章目录一、存储管理1、外部设备存储空间的地址映射&#xff08;1&#xff09;ioremap&#xff08;2&#xff09;g…

力扣 513. 找树左下角的值

题目来源&#xff1a;https://leetcode.cn/problems/find-bottom-left-tree-value/description/ C题解1&#xff1a;是寻找最底层最左边的节点&#xff0c;不是最底层的左子树节点&#xff01; &#xff01; 使用层序遍历&#xff0c;判断左右子树是不是叶子节点&#xff0c;进…

snmp_exporter监控交换机网络流量

一.背景与需求 最近收到机房账单多出了将近70M下行带宽&#xff0c;多交了8K多的费用&#xff0c;很是蛋疼。IDC机房使用每月保底带宽模式, 例如保底100M带宽/月&#xff0c;如果利用955计费方式&#xff0c;没超出100M则只收机柜和保底带宽的费用&#xff0c;如果超出1M则按照…

资本和技术的两个死结

技术与资本的两个死结 资本从一开始就俘获了技术 没有资本主义 就没有科学和技术 以前肯定是科技的崇拜者 现在多了一个视角 趣讲大白话&#xff1a;自己给自己挖坟 【趣讲信息科技210期】 **************************** 搞科学的看不起搞技术的 科学和技术确实是两码事 但最后…

LabVIEW里计算当前时间起前几个月的时间段

在查询数据时&#xff0c;可能会用到从某个时间开始&#xff0c;前几个月的数据&#xff0c;这时就需要计算出查询的历史时间&#xff0c;该如何计算呢&#xff1f;如图&#xff1a; 注意点&#xff1a; 1、日应该是当前日期的后一天。 2、当前的月数与历史的月数相等时的处置…

使用shiro框架进行认证拦截

01.需要添加依赖 在springboot项目中&#xff0c;使用shiro框架需要在pom.xml文件中去添加依赖&#xff1a; org.apache.shiro shiro-spring 1.4.1 02.shiro核心对象配置 这里需要配置一个配置类&#xff0c;使用的注解是Configuration&#xff0c;这表示修饰的类会有多个注…

Nacos集群版本升级2.2.3

官方传送 官方文档传送门 记录日期 2023-06-28 背景简介 当前Nacos版本为2.1.0&#xff0c;集群部署与官方文档一致&#xff0c;通过阿里云负载均衡SLB服务挂载3台ECS提供服务&#xff0c;如图&#xff1a; 近期有漏洞Nacos 内网集群Raft 反序列化漏洞披露。 影响版本 …

leecode-寻找重复数字

题目 题目 分析 哇哦&#xff0c;原来vector可以这样初始化&#xff0c;学到了&#xff01;&#xff01; 不初始化会直接报错嘞&#xff01; 代码 class Solution { public:int findDuplicate(vector<int>& nums) {vector<bool> v(nums.size(),false);//…

解决vue3+vite项目中引入mockjs失败的问题--无法找到模块“mockjs”的声明文件

看到上面报错&#xff0c;根据提示 修改声明方式 declare module mockjs 我们修改一下引入的声明&#xff0c;发现修改之后仍然报错&#xff1b; 解决方法&#xff1a; 需要在vite-env.d.ts文件中&#xff0c;添加 declare module mockjs&#xff0c;保存即可 然后就可以正常使…

CI/CD持续测试的未来...

如果您想知道为什么持续测试如此重要&#xff0c;请考虑以下几点&#xff1a;在过去&#xff0c;软件测试通常是在编写代码并发送给 QA 部门进行独立测试之后进行的。当发现错误时&#xff0c;代码将返回给开发人员进行更正。虽然这种测试方法有效&#xff0c;但非常耗时。如今…

Java的||或者是什么意思?

1.|| a||b 短路或 ab 全为 false 时&#xff0c;计算结果为 false&#xff0c;否则为 true。 2<1||3>4 false 具体解释就是&#xff1a;||表示或&#xff0c;只要有一个为true&#xff0c;结果就为true&#xff0c;两个为false结果才为false 2.&& a&&b 短…

【算法题】动态规划基础阶段之三步问题、 连续数列、按摩师

动态规划基础阶段 前言一、三步问题1.1、思路1.2、代码实现 二、 连续数列2.1、思路2.2、代码实现 三、按摩师3.1、思路3.2、代码实现 总结 前言 动态规划&#xff08;Dynamic Programming&#xff0c;简称 DP&#xff09;是一种解决多阶段决策过程最优化问题的方法。它是一种…

python spider 爬虫 之 scrapy框架 企业级

Scrapy定义 它是一个为了爬取网站的数据&#xff0c;提取结构性数据而编写的应用框架。可以应用在包括数据挖掘信息处理或存储历史数据等一系列的程序中 Scrapy 安装 pip install scrapy 安装过程中可能出现的错误&#xff1a; 报错1&#xff1a;building ‘twisted.test.r…

如何将银行卡拍照转为excel?

如果您手头上有很多的银行卡&#xff0c;并且需要录入到电脑&#xff0c;怎么办&#xff1f;手工一张一张、一个数字一个数字地敲键盘打字&#xff1f;太麻烦了&#xff0c;效率低&#xff0c;而且银行卡上的卡号数字可不短&#xff0c;传统的人工打字录入很容易出错&#xff0…

基于模糊控制算法的水位控制研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Qt 动态手势识别“手掌随动”+“握拳选择”

系列文章目录 通过Qt实现手势识别控制软件操作相关系列技术方案 &#xff08;一&#xff09;Qt 将某控件、图案绘制在最前面的方法&#xff0c;通过QGraphicsScene模块实现 &#xff08;二&#xff09;Qt QGraphicsScene模块实现圆点绘制在所有窗体的最前方&#xff0c;实现圆…