源码可运行-PHP注册登录源码,PHP实现登陆后才能访问页面

news2025/2/25 17:01:26

最近有一个项目需要实现会员注册和页面登陆后才能访问,所以简单的HTML是无法实现的,就必须通过PHP、html和Mysql来实现,先给大家看一下登录和注册页的效果图。(注册完成后会自动跳转到登录窗口,即使A用户登陆后分享了网址,B用户也必须要先登陆后才能浏览)
在这里插入图片描述

程序是100%可以运营跑通的,下面我直接附上源码(CSS为非核心代码,代码比较长,你也可以自行修改。如果想完全复用我的,也可以私我):

如果完全复用代码,需要在mysql中新建数据库(aaaaa),密码为aaaaa,数据中新建表dlcs,表中有username、password。

一、登录源码

HTML前端登录样式

login.html文件

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <title>焰遐云会员管理系统平台</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="css/util.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
    
    <div class="limiter">
        <div class="container-login100">
            <div class="wrap-login100">
                <div class="login100-form-title" style="background-image: url(images/bg-01.jpg);">
                    <span class="login100-form-title-1">会员登录</span>
                </div>

                <form class="login100-form validate-form" action="login.php" method="post">
                    <div class="wrap-input100 validate-input m-b-26" data-validate="用户名不能为空">
                        <span class="label-input100">账号</span>
                        <input class="input100" type="text" name="username" placeholder="请输入账号">
                        <span class="focus-input100"></span>
                    </div>

                    <div class="wrap-input100 validate-input m-b-18" data-validate="密码不能为空">
                        <span class="label-input100">密码</span>
                        <input class="input100" type="password" name="password" placeholder="请输入密码">
                        <span class="focus-input100"></span>
                    </div>

                    <div class="flex-sb-m w-full p-b-30">
                        <div class="contact100-form-checkbox">
                            <input class="input-checkbox100" id="ckb1" type="checkbox" name="remember-me">
                            <label class="label-checkbox100" for="ckb1" type="checkbox" name="remember" value="yes">7天内自动登录</label>
                        </div>

                        <div>
                            <a href="javascript:" class="txt1">没有账号?立即注册</a>
                        </div>
                    </div>

                    <div class="container-login100-form-btn">
                        <input class="login100-form-btn" type="submit" name="login" value="提交">
                    </div>
                </form>
            </div>
        </div>
    </div>

    <script src="js/jquery-3.2.1.min.js"></script>
    <script src="js/main.js"></script>
<style>
.copyrights{text-indent:-9999px;height:0;line-height:0;font-size:0;overflow:hidden;}
</style>
</body>

</html>

login.php文件

<?php
// 告知浏览器我们是html,解码用utf-8,header()表示向客户端发送一个原始的http包头
 header('Content-type:text/html; charset=utf-8');
 // 开启Session,返回一个bool值
 // Session表示存储关于用户会话(session)的信息
 session_start();
 
 // 处理用户登录信息
 // $_POST[]的变量应该是请求的html页面中,通过‘name’被复制的变量
 if (isset($_POST['login'])) {
    # 接受用户的登录消息,trim去掉字符串中的空格
    $username = trim($_POST['username']);
    $password = trim($_POST['password']);
    // 判断提交的登录信息
    if (($username == '') || ($password == '')) {
        // 若为空,视为未填写,提示错误,并3秒后返回登录界面
        header('refresh:3; url=login.html');
        echo "用户名或密码不能为空,系统将在3秒后跳转到登录界面,请重新填写登录信息!";
        exit;
    } 
    // 连接数据库
   $link = mysqli_connect('127.0.0.1','aaaaa','lixiang123456','aaaaa');
    // 验证数据库的连接状态
    $query=mysqli_query($link,"SELECT username,password FROM dlcs WHERE username = '$username'");
    $row = mysqli_fetch_array($query);
    if (!$row) {
        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:weizhuang.php');
    }


}
?>

HTML前端注册样式

zhuce.html文件

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <title>焰遐云会员管理后台</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" href="fonts/font-awesome-4.7.0/css/font-awesome.min.css">
    <link rel="stylesheet" type="text/css" href="css/util.css">
    <link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>
    
    <div class="limiter">
        <div class="container-login100">
            <div class="wrap-login100">
                <div class="login100-form-title" style="background-image: url(images/bg-01.jpg);">
                    <span class="login100-form-title-1">会员管理系统</span>
                </div>

                <form class="login100-form validate-form" action="zhuce.php" method="get">
                    <div class="wrap-input100 validate-input m-b-26" data-validate="用户名不能为空">
                        <span class="label-input100">账号</span>
                        <input class="input100" type="text" name="username" placeholder="请输入账号">
                        <span class="focus-input100"></span>
                    </div>

                    <div class="wrap-input100 validate-input m-b-18" data-validate="密码不能为空">
                        <span class="label-input100">密码</span>
                        <input class="input100" type="password" name="password" placeholder="请输入密码">
                        <span class="focus-input100"></span>
                    </div>

                    

                    <div class="container-login100-form-btn">
                        <input class="login100-form-btn" type="submit" name="zhuce" value="立即注册">
                    </div>
                </form>
            </div>
        </div>
    </div>

    <script src="js/jquery-3.2.1.min.js"></script>
    <script src="js/main.js"></script>
<style>
.copyrights{text-indent:-9999px;height:0;line-height:0;font-size:0;overflow:hidden;}
</style>
</body>

</html>

zhuce.php文件

<meta charset="UTF-8">
<?php
$username = 'aaaaa';
$password = 'lixiang123456';
$ip = '127.0.0.1';
$database = 'aaaaa';
$conn = new mysqli($ip,$username,$password,$database);
$logname = $_GET['username'];
$password = $_GET['password'];
 
$sql = "select * from dlcs where username = '$logname';";
$res = mysqli_query($conn,$sql);
 
if($res->num_rows > 0){
	echo '用户已存在,3秒后跳转,请重新输入。';
	header('Refresh:3,houtai.html');
}else{
	
		$sql = "insert into dlcs value('$logname','$password');";
		if(mysqli_query($conn,$sql)){
			echo'注册成功,3秒后返回登录页面。';
			header('Refresh:3,login.html');
		}else{
			echo'注册失败。';
		}
	
}
?>

前端注销样式

logout.php文件

<?php 
header('Content-type:text/html; charset=utf-8');
// 注销后的操作
session_start();
// 清除Session
$username = $_SESSION['username'];  //用于后面的提示信息
$_SESSION = array();
session_destroy();
 
// 清除Cookie
setcookie('username', '', time()-99);
setcookie('code', '', time()-99);
 
// 提示信息
echo "欢迎下次光临, ".$username.'<br>';
echo "<a href='login.html'>重新登录</a>";
 
 ?>

必须登陆后才能访问:
在需要登陆后才能访问的页面增加该文件即可:


<?php 
header('Content-type:text/html; charset=utf-8');
// 开启Session
session_start();
 
// 首先判断Cookie是否有记住了用户信息
if (isset($_COOKIE['username'])) {
# 若记住了用户信息,则直接传给Session
$_SESSION['username'] = $_COOKIE['username'];
$_SESSION['islogin'] = 1;
}
if (isset($_SESSION['islogin'])){
} else exit("<script language='javascript'>window.location.href='./login.html';</script>");
?>

``

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

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

相关文章

如何本地存储中的文件路径

文章目录 1. 概念介绍2. 实现方法3. 示例代码我们在上一章回中介绍了"如何实现本地存储"相关的内容,本章回中将介绍如何实现文件存储.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 我们在上一章回中介绍的本地存储只能存储dart语言中基本类型的数值,如果遇到…

从变更到通知:使用Python和MongoDB Change Streams实现即时事件监听

MongoDB提供了一种强大的功能&#xff0c;称为Change Streams&#xff0c;它允许应用程序监听数据库中的变更事件&#xff0c;并在数据发生变化时立即做出响应。这在mysql数据库是不具备没有这个功能的。又如&#xff1a;我们在支付环节想一直监听支付回调的状态&#xff0c;就…

Lua使用点号和冒号的区别

首先建立一个table&#xff0c;再分别定义两个方法&#xff0c;如下&#xff1a; local meta {}function meta:test1(...)print(self)print("")for k,v in pairs({...}) doprint(v)end endfunction meta.test2(...)print(self)print("")for k,v in pairs…

Metasploit使用

最近在学Metasploit&#xff0c;Metasploit是一个免费的、可下载的渗透测试框架&#xff0c;通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击&#xff0c;是一个集成了渗透测试全流程的渗透工具。 图一 模块&#xff1a;模块组织按照不同的用途分为7种类型的模块 &am…

如何“安装Android SDK“?

一、下载 https://android-sdk.en.softonic.com/ 二、解压&#xff08;不能有中文&#xff09; 三、配置环境变量 1、ANDROID_HOME&#xff1a;D:\android-sdk 2、在Path添加文件路径 四、验证 adb version

排查bug的通用思路

⭐️前言⭐️ APP点击某个按钮没有反应/PC端执行某个操作后&#xff0c;响应较慢&#xff0c;通用的问题排查方法: 从多个角度来排查问题 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f349;博主将持续更新学习记录收获&#xff0c;友友们有任何问题可以在评…

前端路径“@/“的使用和配置

环境&#xff1a;vitets 需要安装types/node npm install types/node --save-dev在tsconfig.json中添加 如果有tsconfig.app.json和tsconfig.node.json文件&#xff0c;则在app.json中添加 "compilerOptions": {"baseUrl":".","paths&q…

node.js中实现GETPOST请求

创建基本的服务器 const express require(express); const indexRouter require(./router); // 引入路由 const app express(); const port 3000; // 挂载路由 app.use(/api, indexRouter); app.listen(port, () > {console.log(Server is running on http://localhost…

【Python】练习【24.12.8】

题目出处 《Python程序设计基础&#xff08;第2版&#xff09;》&#xff0c;李东方等 主编&#xff0c;电子工业出版社&#xff0c;北京&#xff0c;2020.1 第 3 章&#xff1a;《Python程序的基本流程控制》 题目描述 1、编写程序&#xff0c;从键盘输入两点的坐标(x1, y…

多项式拟合之Math.NET Numerics

**多项式拟合 今日新认识的工业编程思想之传感器测温&#xff1b;热敏电阻测温如何计算通过温度计算阻值的方式&#xff1a;多项式拟合&#xff0c;通常C#中使用Math.NET Numerics Math.NET Numerics 旨在为数值计算提供方法和算法 在科学、工程和日常使用中。涵盖的主题包括…

「Mac玩转仓颉内测版46」小学奥数篇9 - 基础概率计算

本篇将通过 Python 和 Cangjie 双语实现基础概率的计算&#xff0c;帮助学生学习如何解决简单的概率问题&#xff0c;并培养逻辑推理和编程思维。 关键词 小学奥数Python Cangjie概率计算 一、题目描述 假设有一个袋子中有 5 个红球和 3 个蓝球&#xff0c;每次从袋子中随机…

hhdb数据库介绍(10-45)

安全 数据加密 加密规则列表页 仅加载当前页面配置&#xff1a;添加、删除、编辑加密规则&#xff0c;触发局部同步加载。加载成功后&#xff0c;添加配置才能生效。同样也可以执行整体同步加载&#xff08;页面右上角&#xff09;&#xff0c;来同步加密规则。 搜索&#x…

六安市第二届网络安全大赛复现

misc 听说你也喜欢俄罗斯方块&#xff1f; ppt拼接之后 缺三个角补上 flag{qfnh_wergh_wqef} 流量分析 流量包分离出来一个压缩包 出来一张图片 黑色代表0白色代表1 101010 1000 rab 反的压缩包 转一下 密码&#xff1a;拾叁拾陆叁拾贰陆拾肆 密文&#xff1a;4p4n5758…

深度学习入门课程学习笔记(第24周)

目录 摘要 Abstracts 一、何为决策树 1、决策树的组成 2、决策树的构建 二、基尼系数&#xff08; CART 算法选用的评估标准&#xff09; 三、决策树中的预剪枝处理&#xff08;正则化&#xff09; 1、限制决策树的深度 2、限制决策树中叶子结点的个数 3、限制决策树…

聊一聊常用类System

大家好&#xff0c;我是G探险者&#xff01; 今天来聊一聊java常用类System。 事情的起因是项目里面使用了Jasypt 框架对配置项进行加密&#xff0c;主要是密码相关的配置&#xff0c;项目里面的application.yml有关密码的配置项&#xff0c;使用了占位符${PASSWORD}进行了占…

在windows系统用Anaconda搭建运行PyTorch识别安全帽项目的环境

一.背景 我期望基于开源项目实现工业场景中安全帽识别。之前的各种尝试&#xff0c;也不太顺利。发现安全帽识别的开源项目使用的是基于Python的PyTorch实现训练的。上一篇写了Python的安装&#xff0c;发现后续安装其他的并不方便。我为什么选择&#xff0c;下面再详细说原因。…

Elasticsearch入门之HTTP基础操作

RESTful REST 指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是 RESTful。Web 应用程序最重要的 REST 原则是&#xff0c;客户端和服务器之间的交互在请求之间是无状态的。从客户端到服务器的每个请求都必须包含理解请求所必需的信息。如果服务器在…

Unix、GNU、BSD 风格中 ps 参数的区别

注&#xff1a;本文为“不同风格中 ps 命令参数的区别”相关文章合辑。 未去重。 BSD 风格和 UNIX 风格中 ps 参数的区别 作者&#xff1a;Daniel Stori 译者&#xff1a;LCTT Name1e5s | 2017-06-17 10:53 One Last Question ps aux 以及 ps -elf 都是查看进程的方式&…

设计模式の单例工厂原型模式

文章目录 前言一、单例模式1.1、饿汉式静态常量单例1.2、饿汉式静态代码块单例1.3、懒汉式单例&#xff08;线程不安全&#xff09;1.4、懒汉式单例&#xff08;线程安全&#xff0c;同步代码块&#xff09;1.5、懒汉式单例&#xff08;线程不安全&#xff0c;同步代码块&#…

深入理解Java的 JIT(即时编译器)

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…