PHP+AJAX实现账号注册和登陆,附可用demo

2023-05-16

前言

登陆和注册已经是网站的标配了,所以这是我们web开发学习过程中必学的了。其实很容易实现,只需要懂数据库的增删改查,还有if_else的条件语句即可做出来。

目录

css
    --Login-Reg.css
    
server
    --LoginUser.php
    --RegUser.php
    
--LoginFrom.html
--RegForm.html

注册

RegForm.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>用户注册</title>
    <link rel="stylesheet" type="text/css" href="css/Login-Reg.css">
</head>
<body>
    <h2 id="Reg-text">用户注册</h2>
    <div id="Form-con">
    <form id="form1" onsubmit="return false" action="##" method="post">
        <input type="text" name="username" class="inputStyle" placeholder="请输入账号"><br/>
        <input type="password" name="password" class="inputStyle" placeholder="请输入密码"><br/>
        <input type="password" name="cpassword" class="inputStyle" placeholder="请确认密码"><br/>
        <input type="submit" class="btnStyle" value="注册" onclick="RegUser()">
    </div>
    <div id="Result"></div>
    </form>
</body>
<!-- AJAX提交表单 -->
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script type="text/javascript">
        function RegUser() {
            $.ajax({
                type: "POST",//方法
                url: "../server/RegUser.php" ,//表单接收url
                data: $('#form1').serialize(),
                success: function (data) {
                  //提交成功
                    var result=document.getElementById("Result");
                    result.innerHTML=data[0].result;
                    //注册后跳转
                    if (data[0].result == "注册成功") {
                        location.href="LoginFrom.html";
                    }
                },
                error : function(data) {
                  //提交失败
                    var result=document.getElementById("Result");
                    result.innerHTML="连接服务器失败";
                }
            });
        }
    </script>
</html>

RegUser.php

<?php
header("Content-type:application/json");
// 注册账号验证

$username = $_POST["username"];//获取表单POST过来的用户名
$password = $_POST["password"];//获取表单POST过来的密码
$cpassword = $_POST["cpassword"];//获取表单POST过来的重复密码

//表单过滤

$user = trim($username);//过滤空格
$psw = trim($password);//过滤空格
$cpsw = trim($cpassword);//过滤空格

//开始判断

if($user == "" && $psw == "" && $cpsw == ""){
    echo "[{\"result\":\"都还没填呢!\"}]";
}else if($user == "" && $psw == ""){
    echo "[{\"result\":\"账号和密码都还没填呢\"}]";
}else if ($psw == "" && $cpsw == "") {
    echo "[{\"result\":\"密码都还没填呢\"}]";
}else if($user == "" && $cpsw == ""){
    echo "[{\"result\":\"账号和重复密码还没填呢\"}]";
}else if ($user == "") {
    echo "[{\"result\":\"账号还没填呢\"}]";
}else if ($psw == "") {
    echo "[{\"result\":\"密码还没填呢\"}]";
}else if ($cpsw == "") {
    echo "[{\"result\":\"重复密码还没填呢\"}]";
}else if ($psw !== $cpsw) {
    echo "[{\"result\":\"两次输入密码不一样呢\"}]";
}else if (strlen($user) < 5){
    echo "[{\"result\":\"账号不能小于5位数\"}]";
}else if (strlen($psw) < 8){
    echo "[{\"result\":\"密码不能小于8位数\"}]";
}else if (preg_match('/^[\x{4e00}-\x{9fa5}]+$/u', $user)>0){
    echo "[{\"result\":\"账号不能为中文\"}]";
}else if (preg_match('/[\x{4e00}-\x{9fa5}]/u', $user)>0){
    echo "[{\"result\":\"账号不能存在中文\"}]";
}else if(preg_match("/[\'.,:;*?~`!@#$%^&+=)(<>{}]|\]|\[|\/|\\\|\"|\|/",$user)){
    echo "[{\"result\":\"账号不能存在特殊符号\"}]";
}else{
    //生成用户ID,为简单学习,随机生成随机数
    $uid = rand(10000,99999);
    //密码MD5加密
    $md5psw = MD5($psw);
    // 数据库连接
    $con = mysql_connect("localhost","root","root");
    mysql_select_db("test", $con);
    mysql_query("SET NAMES UTF8");

    //查询数据库是否有存在该用户
    $exist = mysql_query("SELECT * FROM userlist WHERE username = '$user'");
    $exist_result = mysql_num_rows($exist);
    if($exist_result){
        //如果存在该用户
        echo "[{\"result\":\"该账号已被注册\"}]";
    }else{
        //插入数据库
        mysql_query("INSERT INTO userlist (username, password, userid) VALUES ('$user', '$md5psw', '$uid')");
        echo "[{\"result\":\"注册成功\"}]";
    }
}
?>

登陆

LoginFrom.html

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>用户登陆</title>
    <link rel="stylesheet" type="text/css" href="css/Login-Reg.css">
</head>
<body>
    <h2 id="Reg-text">用户登陆</h2>
    <div id="Form-con">
    <form id="form1" onsubmit="return false" action="##" method="post">
        <input type="text" name="username" class="inputStyle" placeholder="请输入账号"><br/>
        <input type="password" name="password" class="inputStyle" placeholder="请输入密码"><br/>
        <input type="submit" class="btnStyle" value="登陆" onclick="LoginUser()">
    </div>
    <div id="Result"></div>
    </form>
</body>
<!-- AJAX提交表单 -->
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script type="text/javascript">
        function LoginUser() {
            $.ajax({
                type: "POST",//方法
                url: "../server/LoginUser.php" ,//表单接收url
                data: $('#form1').serialize(),
                success: function (data) {
                    var result=document.getElementById("Result");
                    //提交成功
                    result.innerHTML=data[0].result;
                    if (data[0].result == "登陆成功") {
                        result.innerHTML="登陆成功";
                    }else if (data[0].result == "fail") {
                        result.innerHTML="登陆失败,账号或密码错误";
                    }
                },
                error : function(data) {
                  //提交失败的提示词或者其他反馈代码
                    var result=document.getElementById("Result");
                    result.innerHTML="连接服务器失败";
                }
            });
        }
    </script>
</html>

LoginUser.php

<?php
header("Content-type:application/json");
// 注册账号验证

$username = $_POST["username"];//获取表单POST过来的用户名
$password = $_POST["password"];//获取表单POST过来的密码

//表单过滤

$user = trim($username);//过滤空格
$psw = trim($password);//过滤空格

//开始判断

if($user == "" && $psw == ""){
    echo "[{\"result\":\"账号和密码都没填呢!\"}]";
}else if ($user == "") {
    echo "[{\"result\":\"账号还没填呢\"}]";
}else if ($psw == "") {
    echo "[{\"result\":\"密码还没填呢\"}]";
}else{
    // 数据库连接
    $con = mysql_connect("localhost","root","root");
    mysql_select_db("test", $con);
    mysql_query("SET NAMES UTF8");

    //校验MD5密码
    $md5psw = MD5($psw);

    //查询数据库账号密码是否一致
    $exist = mysql_query("SELECT * FROM userlist WHERE username = '$user' AND password = '$md5psw'");
    $exist_result = mysql_num_rows($exist);
    if($exist_result){
        echo "[{\"result\":\"登陆成功\"}]";
    }else{
        echo "[{\"result\":\"fail\"}]";
    }
}
?>

数据库

自增id --id --int(11)
用户id --userid -- varchar(32)
用户名 --username -- varchar(32)
密码 --password -- varchar(32)
注册时间 --regtime --timestamp

demo

http://www.likeyunba.com/demo...

Author:TANKING
web:http://likeyunba.com
WeChat:likeyunba520
Date:2019-2-2

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP+AJAX实现账号注册和登陆,附可用demo 的相关文章

  • 网页版模仿Excel

    网页版模仿Excel 最近公司闲的dan疼 xff0c 非要模仿Excel做一个网页版的Excel xff0c 刚开始听说要做这么一个东西的时候瞬间觉得公司领导高 sang 瞻 xin 远 bing 瞩 kuang xff0c 只能头铁的接
  • 基于Kubernetes的容器云在万达的落地

    容器生态是现在非常火热的技术生态之一 xff0c 个人认为它主要囊括着四个方面的技术栈 xff1a 一是容器核心技术栈 xff08 包括 Docker rkt 及第三方公司自主研发的容器 Engine 等 xff09 xff1b 二是容器基
  • js利用时间戳的简单倒计时

    为了方便计算 xff0c 将时分秒等60进制的单位换算成毫秒 用户输入时间总的毫秒数 当前时间毫秒数 61 剩余时间毫秒数 再将剩余时间毫秒数换算成时分秒 xff0c 其中可先把毫秒转化成秒换算公式如下 xff1a xff08 自己笔算一下
  • Mealy和moore型状态机的主要区别

    状态机一般分为三种类型 xff1a 1 Moore型状态机 xff1a 下一状态只由当前状态决定 xff0c 即次态 61 f 现状 xff0c 输入 xff0c 输出 61 f xff08 现状 xff09 xff1b 2 Mealy 型
  • a padding to disable MSIE and Chrome friendly error page 填充禁用MSIE铬友好的错误页面

    一个网页在用户登录后 xff0c 应该自动刷新后 xff0c 显示登录用户信息 xff0c 但是没有自动刷新反而报错 xff0c 手动刷新后显示正常 显示如下 xff1a 检查代码 xff1a 可能原因 xff1a 文件读写权限 权限和用户
  • UML实例(四):在线购物系统顺序图

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 顺序图文档 1 图形文档 注册 xff1a 登录 xff1a 搜索商品 xff1a 订单维护 xff1a 商品管理 xff1a 退货处理 xff1a 购物车管理 xff1a
  • 内存时序对应的4个参数你们知道吗?ICMAX一文让你看懂

    小伙伴们大家好 xff0c 今天存储界的小王子ICMAX xff0c 为大家带来关于存储行业的各种小知识 xff0c 也欢迎各位小伙伴在评论中留下自己感兴趣的产品或者对于我们的意见和建议 宏旺半导体ICMAX此次为大家带来的是关于内存时序那
  • C语言里怎么输出6位以上的小数

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 C语言中 xff0c 输出double类型 双精度实型 以及float类型 单精度实型 时 xff0c 默认输出6位小数 比如这样的代码 xff1a double a
  • 过游戏保护NP或TP的几种方法和思路

    以前有很多这方面的文章 xff0c 但是大多涉及hook和汇编 xff0c 新手门都是看了等于没看 xff0c 还不如不看 但是本人通过实践 感觉就算是新手 xff0c 只要善于组合使用一些现成的工具 xff0c 依然可以达到目的 先说下最
  • 接口继承中一个常见问题的思考

    以前在设计DirectUI界面库 该界面库现已开源 xff0c 可到 这里 下载 架构时 xff0c 遇到一个接口继承相关的问题 xff0c 当时没有太好的解决方案 xff0c 却一直个耿耿于怀 xff0c 现在重新思考整理下 我们的Dir
  • 找不到 javax.servlet.http.HttpServletResponse 和 javax.servlet.http.HttpServletRequest 问题解决...

    时隔3个月 xff0c 我又回来了 xff01 在做完毕设之后 xff0c 由于对此过程中学到的一些东西疏于整理 xff0c 所以当再次打开我的project时有些手足无措 xff0c 以至于出现一些问题也要解决好半天 xff0c 我知错
  • Docker容器使用问题:Failed to get D-Bus connection: Operation not permitted

    刚开始接触Docker的朋友 xff0c 可能会遇到这么一个问题 xff0c 使用centos7镜像创建容器后 xff0c 在里面使用systemctl启动服务报错 针对这个报错 xff0c 我们接下来就分析下 xff01 docker r
  • Arch tty终端使用中文,Fbterm控制台配置

    参考 http www linuxidc com Linux 2011 08 40746p2 htm 安装 xff1a pacman S fbterm fcitx fbterm sudo gpasswd a YOUR USERNAME vi
  • js 求字符串中,某个字符出现的位置和次数

    先看一个简单的例子 xff0c 主要是对str indexOf 某字符 函数的应用 var str 61 39 你好啊好啊 39 console log str indexOf 39 好 39 1 console log str index
  • 解决dialog在横竖屏切换时消失

    以AlertDialog为例 一 将AlertDialog视图封装在dialogfragment fragmentdeAlertDialog子类 实例中 package com example t import android app Al
  • PowerShell压缩与解压缩

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 1 压缩 因为Powershell中没有提供关于压缩的命令 xff0c 所以需要调用 Net中的对象来完成压缩功能 NAME zip DESCRIPTION 压缩文件 PA
  • opensuse12.1的gnome3“系统错误无法恢复”的解决办法

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 我的opensuse12 1的susu用户不知道折腾什么了又无法进入gnome3 老是提示 系统错误并且无法恢复 xff0c 说什么什么bar插件有问题 xff0c 然后只
  • 前端如何获取http状态码400的返回值

    axios get 34 check mobile and sent code 34 withCredentials span style color 0000ff true span params mobile formInline mo
  • 空间权重矩阵(SWM)

    基本原理 如何利用数学 xff08 如用面积 距离等 xff09 建立空间数据和非空间数据之间的关系 xff1f 对于空间统计而言 xff0c 空间权重矩阵是一种有效的表达空间关系的方式 因此 xff0c 它是用量化的方法表示了数据之间的
  • Oracle: 输入的ADMIN 口令不符合Oracle建议的标准

    安装oracle 11g 发行版2时 xff0c 会出现如下提示 xff1a 管理口令 P INS 30011 输入的 ADMIN 口令不符合 Oracle 建议的标准 这是怎么会事儿呢 xff1f 其实很简单 xff0c 这个是Oracl

随机推荐

  • 2016年7月21日学习笔记

    2016年 7 月 21 日学习笔记 Linux安装以后出现的文件目录的作用 xff1a 文件系统的类型 LINUX有四种基本文件系统类型 xff1a 普通文件 目录文件 连接文件和特殊文件 xff0c 可用 file 命令来识别 普通文件
  • Java架构进阶之路——阿里大牛强力推荐书单(附赠电子版)

    1 深入理解Java虚拟机 xff1a JVM高级特性与最佳实践 本书适合所有Java程序员 系统调优师和系统架构师阅读 共分为五大部分 xff0c 围绕内存管理 执行子系统 程序编译与优化 高效并发等核心主题对JVM进行了全面而深入的分析
  • 给Hexo搭建的博客绑定域名

    前言 前几天利用闲置时间 xff0c 利用hexo在GitHub上搭建了一个静态博客 xff0c 那么既然是个人博客 xff0c 当然要上自己的域名了 step 1 首先你得你得搭建 XXX github io 这样的博客 xff0c he
  • chrome浏览器提取网页视频

    http blog csdn net pipisorry article details 37728839 在我们平时上网看视频听音乐时都会产生缓存 xff0c 可是我们非常难通过一些软件把当中的视频和音乐文件提取出来 网页抓取视频的方法
  • js 统计一个字符串中,出现最多的字符和出现次数

    运用到的关键函数是str charAt index xff1a 根据位置返回字符 另外 xff0c 建立一个对象o xff0c 其中存放的key为字符串的各不重复的字母 xff0c 键值为出现的次数 代码 xff1a span class
  • IdentityServer4 配置负载均衡

    如果使用 IdentityServer4 做授权服务的负载均衡 xff0c 默认情况下是不可以的 xff0c 比如有两个授权服务站点 xff0c 一个资源服务绑定其中一个授权服务 xff08 Authority配置 xff09 xff0c
  • android 打开串口log,user版本如何打开uart,让android log从串口kernel log输出

    数据流控制是否正确 xff0c 一般需关闭 xff0c 下面为RS232的三种流控制模式介绍 xff1a DTR DSR xff1a 硬件上要有对应接口 xff0c 软件上实现对应协议 xff0c 才能实现此流控制 具体实现起来 xff0c
  • 安装flashplugin提示依赖libgdk-pixbuf2.0-0

    为什么80 的码农都做不了架构师 xff1f gt gt gt 今天安装flashplugin 出现问题 xff0c sudo apt get install adobe flashplugin 结果提示 xff1a 下列软件包有未满足的依
  • Python新手入门教程,从环境准备到掌握基本编程

    Lesson 1 准备好学习Python的环境 下载的地址是 xff1a www python org 为了咱们的便当 xff0c 我在校内作了copy xff1a http 10 1 204 2 tool compiler amp IDE
  • mariadb使用C语言编程,MHA实现mariadb的高可用的详细步骤及配置参数详解

    MHA实现mariadb的高可用的详细步骤及配置参数详解 A 实验环境说明 a 4台centos7主机 b 角色说明 xff1a a MHA xff1a 192 168 36 35 b Master mariadb xff1a 192 16
  • c语言中sizeof函数的作用是,c语言中sizeof函数的用法

    C语言sizeof函数如何使用 xff1f 怎样利用sizeofCSS布局HTML小编今天和大家分享各种数据类型占用的字节数 xff1f 1 sizeof不是函数 xff0c 它只是一个操作符 operator 2 sizeof的作用是返回
  • AutoCAD快捷键大全

    送给学习AutoCAD的朋友 xff0c 最后一张图片是可以打印的键盘标签 xff0c 可以打印出来贴在键盘上方便记住 xff01 如果感觉模糊的话 xff0c 可以单击文章图片进行查看 xff01
  • 如何恢复U盘里的删除文件?

    对于经常使用到U盘的用户来说 xff0c 误删U盘内重要数据的情况经常发生 xff0c U盘内重要的资料从电脑上被删除后 xff0c 不经过回收站 xff0c 我们很难从回收站中还原数据 那么 xff0c 如何恢复u盘删除文件 xff1f
  • maven maven.compiler.source和maven.compiler.target的坑

    最近建议产品组把jdk 1 7升级到1 8 xff0c 昨晚开发报了个问题过来 xff0c 说maven compiler source和maven compiler target改成1 8之后 xff0c 编译出来的代码还是1 7 xff
  • 1‘b0 什么意思

    在看datasheet 中有类似表达式如下 xff1a 3 39 b000 1 39 b1 1 39 b0 3 39 b000这个表示 xff1a b代表二進制 3代表位元數 1 39 b1 xff1a 宣告為一位元二進制之值為1 xff0
  • css 识别软件测出来的尺寸和代码设置的不一样

    这是我在模仿网页时遇到的问题 xff0c 困扰了一会儿 xff0c 情况是这样的 我下载了参考的网页html文件 xff0c 为了测量某个box的高度 xff0c 用了一款可以截图识别的软件 xff1a 量出来的box高度是30px xff
  • SpringBoot中注入ApplicationContext对象的三种方式

    在项目中 xff0c 我们可能需要手动获取spring中的bean对象 xff0c 这时就需要通过 ApplicationContext 去操作一波了 xff01 1 直接注入 xff08 Autowired xff09 span clas
  • vue中$attrs你会用吗?

    这篇文章的知识点是父子组件通讯 xff0c 如果你了解 props 但是还没了解过 attrs xff0c 那么建议你花1分钟时间阅读 xff0c 了解它的优点 xff0c 并学会在项目中使用 关于 attrs的介绍 包含了父作用域中不作为
  • 企业微信三方应用开发(二)授权开通及登录流程

    何谓企业微信第三方应用 一句话简介 一个S商场 企业微信 里入驻了D商站 xff08 服务商 xff09 在卖他的C产品 xff08 三方应用 xff09 三句话路径 我们申请成为企业微信服务商 xff0c 入驻到企业微信 然后经过 应用开
  • PHP+AJAX实现账号注册和登陆,附可用demo

    前言 登陆和注册已经是网站的标配了 xff0c 所以这是我们web开发学习过程中必学的了 其实很容易实现 xff0c 只需要懂数据库的增删改查 xff0c 还有if else的条件语句即可做出来 目录 css Login Reg css s