对于许多web应用程序而言,数据库都是其核心所在。数据库几乎可以用来存储所有你想要检索和更新的任何信息,下面是一个通过PDO操作MySQL数据库来实现用户登陆注册功能的案例

效果图展示:

  1. 这是登陆和注册的页面
  2. 注册信息格式错误,则在输入框右侧显示错误
    注册信息格式正确且该用户名未被使用,则弹出js消息提示框提示注册成功,并显示所有注册用户的信息
  3. 账号不存在或密码错误,则提示错误信息,并回到登陆页面
    账号密码正确,则提示登陆成功,并进入java学习网站页面

代码部分:

  1. 先创建数据库regist和数据库表user,其中name和pass为user表中的必须字段
create database regist;
use regist
create table user(name varchar(255) primary key not null,pass varchar(255) not null,email varchar(255),phone varchar(255)
)default charset=utf8;
  1. connection.php文件
    由于登陆和注册时都需要用到regist数据库中的user表,所以这里我将连接regist数据库的部分独立出来,在需要连接regist数据库的时候,再引用该文件即可,这样可以增加代码的复用性
<meta charset="utf-8">
<?phptry{$dbtype="mysql";//使用的数据库类型$servername="localhost";//数据库服务器主机名$user="root";//数据库连接用户名$pass="root";//数据库连接密码$dbname="regist";//选用的数据库//这里注意,=号两边不能存在空格,不然会报错,如:dbname = $dbname这样写就会报错$conn=new PDO("$dbtype:host=$servername;dbname=$dbname",$user,$pass);}catch(PDOException $e){print "error!".$e->getMessage();die();}
?>
  1. regist.html文件
    这里实现的是注册界面
<meta charset="utf-8">
<!DOCTYPE html>
<html>
<head><title>注册页面</title></head>
<body><header><h2>&emsp;&emsp;<a href="regist.html">注册</a>&emsp;&emsp;<a href="login.html">登陆</a></h2>&emsp;&emsp;&emsp;&emsp;&emsp;<font size="4" face="隶书" color="red">* 必需字段</font><br><br></header><form action="regist.php" method="POST">&emsp;用户名:<input type="text" name="username" placeholder="请输入姓名"><font color="red">*</font><font color="red"><?php echo $usernameErr;?></font><br><br>&emsp;密&emsp;码:<input type="password" name="userpass" placeholder="请输入密码"><font color="red">*</font><font color="red"><?php echo $userpassErr;?></font><br><br>确认密码:<input type="password" name="confirmpassword" placeholder="请确认密码"><font color="red">*</font><font color="red"><?php echo $confirmpasswordErr;?></font><br><br>Q&nbsp;Q邮箱:<input type="text" name="qqemail" placeholder="请输入qq邮箱"><font color="red"><?php echo $qqemailErr;?></font><br><br>手机号码:<input type="text" name="mobilephone" placeholder="请输入手机号"><font color="red"><?php echo $mobilephoneErr;?></font><br><br>&emsp;&emsp;<input type="submit" name="submit" value="注册">&emsp;&emsp;<input type="reset" name="reset" value="重置"></form></body>
</html>
  1. regist.php文件
    该文件中包含对form表单提交的数据进行验证 和 操作数据库两部分,
    再判断提交数据的格式正确且用户名未被注册后,将数据保存到regist数据库的user表中
<meta charset="utf-8">
<?php//先启动sessionsession_start();/*1.表单验证部分*///获取表单提交数据$username=$_POST['username'];$userpass=$_POST['userpass'];$confirmpassword=$_POST['confirmpassword'];$qqemail=$_POST['qqemail'];$mobilephone=$_POST['mobilephone'];//格式错误信息提示$usernameErr=$userpassErr=$confirmpasswordErr=$qqemailErr=$mobilephoneErr="";//验证姓名if (empty($_POST["username"])){$usernameErr = "名字是必需的";include_once('regist.html');die();      }else{if (!preg_match("/^[a-zA-Z ]+$/",$username)){$usernameErr = "只允许字母"; include_once('regist.html');die();      }}  //验证密码if (empty($_POST["userpass"])){$userpassErr = "密码是必需的";include_once('regist.html');die();}else{if (!preg_match("/^[\w]{6}$/",$userpass)){$userpassErr = "只允许字母或数字且长度为6"; include_once('regist.html');die();}}  //再次确认密码if (empty($_POST["confirmpassword"])){$confirmpasswordErr = "请确认密码";include_once('regist.html');die();}else{if ($userpass!=$confirmpassword){$confirmpasswordErr = "密码不一致";include_once('regist.html');die();}}//验证邮箱if (!empty($_POST["qqemail"])){if (!preg_match("/^[\w]+@{1}[q]{2}(\.[c]{1}[o]{1}[m]{1})$/",$qqemail)){$qqemailErr = "只支持QQ邮箱"; include_once('regist.html');die();}}//验证手机号码if (!empty($_POST["mobilephone"])){if (!preg_match("/^[1][358]\d{9}$/",$mobilephone)){$mobilephoneErr = "手机号格式错误"; include_once('regist.html');die();} }/*2.操作数据库部分*///引用connection.php文件连接数据库include_once('connection.php');//使用预处理语句执行查询操作,判断用户是否已存在$stmt=$conn->prepare("select*from user where name=:name");//使用bind_param()函数绑定参数$stmt->bindParam(':name',$username);$stmt->execute();if($count=$stmt->rowcount()>0){echo "用户已存在,请重新注册!"."<a href='regist.html'>去注册</a>"."<br>";echo $count;die();}if($qqemail!=""&&$mobilephone!=""){//判断该用户未注册后,使用预处理语句将其插入到user表中$stmt=$conn->prepare("insert into user(name,pass,email,phone) values(:name,:pass,:email,:phone)");//使用bind_param()函数绑定参数$stmt->bindParam(':name',$name); $stmt->bindParam(':pass',$pass); $stmt->bindParam(':email',$email); $stmt->bindParam(':phone',$phone);//为绑定的参数赋值$name=$username;$pass=$userpass;$email=$qqemail;$phone=$mobilephone;//执行$result=$stmt->execute();if($result){//插入成功后,弹出消息提示框echo "<script>alert('注册成功')</script>"."<br>";}else{die();}}if($qqemail!=""){//判断该用户未注册后,使用预处理语句将其插入到user表中$stmt=$conn->prepare("insert into user(name,pass,email) values(:name,:pass,:email)");//使用bind_param()函数绑定参数$stmt->bindParam(':name',$name); $stmt->bindParam(':pass',$pass); $stmt->bindParam(':email',$email);  //为绑定的参数赋值$name=$username;$pass=$userpass;$email=$qqemail;//执行$result=$stmt->execute();if($result){//插入成功后,弹出消息提示框echo "<script>alert('注册成功')</script>"."<br>";}else{die();}}if($mobilephone!=""){//判断该用户未注册后,使用预处理语句将其插入到user表中$stmt=$conn->prepare("insert into user(name,pass,phone) values(:name,:pass,:phone)");//使用bind_param()函数绑定参数$stmt->bindParam(':name',$name); $stmt->bindParam(':pass',$pass); $stmt->bindParam(':phone',$phone);  //为绑定的参数赋值$name=$username;$pass=$userpass;$phone=$mobilephone;//执行$result=$stmt->execute();if($result){//插入成功后,弹出消息提示框echo "<script>alert('注册成功')</script>"."<br>";}else{die();}}if($qqemail==""&&$mobilephone==""){//判断该用户未注册后,使用预处理语句将其插入到user表中$stmt=$conn->prepare("insert into user(name,pass) values(:name,:pass)");//使用bind_param()函数绑定参数$stmt->bindParam(':name',$name); $stmt->bindParam(':pass',$pass); //为绑定的参数赋值$name=$username;$pass=$userpass;$result=$stmt->execute();if($result){//插入成功后,弹出消息提示框echo "<script>alert('注册成功')</script>"."<br>";}else{die();}}$stmt=$conn->prepare("select*from user");//执行execute()函数返回的是一个PDOStatement对象,表示执行成功或失败$result=$stmt->execute();if($result){//fetch()方法用于获取结果集的下一行(fetch()方法是一行一行进行检索的),并放入到关联数组,然后通过while()循环输出结果集//众所周知,我们平时获取数组的值时,一般都是通过数字索引或者是其字符串键来获取的//结果集的返回方式通过fetch()方法的参数来控制,参数为PDO::FETCH_ASSOC,即通过列名作为数组索引来获取//参数为PDO::FETCH_NUM时,通过列号作为索引来获取,参数为PDO::FETCH_BOTH时,即可通过列名来获取也可通过列号来获取,不写默认为PDO::FETCH_BOTH//具体可以看:https://www.jb51.net/article/105797.htm或http://www.php.cn/php-weizijiaocheng-361205.htmlecho "注册用户<br>";while($row=$stmt->fetch()){echo $row['name']." " .$row['pass']." ".$row['email']." ".$row['phone']."<br>";// echo $row['0']." " .$row['1']." ".$row['2']." ".$row['3']."<br><br>";}//输出结果集中的行数echo "注册人数为:".$count=$stmt->rowcount()."<br>";}//关闭数据库连接,释放资源$conn=null;session_destroy();?>
  1. login.html文件
    这里实现的是登陆界面
<meta charset="utf-8">
<!DOCTYPE html>
<html>
<head><title>登陆页面</title>
</head>
<body><header><h2>&emsp;&emsp;<a href="regist.html">注册</a>&emsp;&emsp;<a href="login.html">登陆</a></h2>&emsp;&emsp;&emsp;&emsp;<font size="4" face="隶书" color="red">* 必需字段</font></header><br><form action="login.php" method="POST">姓名: <input type="text" name="username" placeholder="请输入姓名"><font color="red"> *</font><br><br>密码: <input type="password" name="userpass" placeholder="请输入密码"><font color="red"> *</font><br><br>&emsp;&emsp;<input type="submit" name="submit" value="登陆">&emsp;&emsp;<input type="reset" name="reset" value="重置"></form></body>
</html>

6.login.php文件
查询user表中的数据,判断是否含有该用户的信息,有则登陆成功,并跳转到pagehome.html (java学习网站界面)

<meta charset="utf-8">
<?php//先启动sessionsession_start();//获取表单提交数据$username=$_POST['username'];$userpass=$_POST['userpass'];//判断提交信息是否为空if($username==""||$userpass==""){//弹出消息提示框echo "<script>alert('用户名或密码为空')</script>";die();}
?>
<?php//引用connection.php文件连接数据库include_once('connection.php');//预处理sql语句$stmt=$conn->prepare("select*from user where name=:name and pass=:pass");//使用bindParam()方法绑定参数$stmt->bindParam(':name',$name);$stmt->bindParam(':pass',$pass);//为绑定的参数赋值$name=$username;$pass=$userpass;//执行$stmt->execute();//判断结果集中的行数是否大于0if($count=$stmt->rowcount()>0){//弹出消息提示框echo "<script>alert('登陆成功!')</script>";//跳转到主页面include_once('homepage.html');}else{//弹出消息提示框echo "<script>alert('用户名或密码错误!')</script>";//跳转会登陆页面include_once('login.html');}//关闭数据库连接$conn=null;//删除sessionsession_destroy();
?>
  1. pagehome.html文件
    这是用户登陆成功后跳转到的界面(java学习网站界面)
<meta charset="utf-8">
<!DOCTYPE html>
<html>
<head><title>主页面</title>
</head>
<body><center><font face="隶书" size="7" color="gray">java学习网站</font></center><a href="https://www.bjsxt.com/download.html"><font face="隶书" size="5">北京尚学堂官网--【强烈推荐,视频均可免费下载而且很全】</font></a><br><br><a href="http://how2j.cn/"><font face="隶书" size="5">how2j的java教程</font></a><br><br><a href="http://www.atguigu.com/download.shtml#semst"><font face="隶书" size="5">尚硅谷</font></a><br><br><a href="http://www.runoob.com"><font face="隶书" size="5">菜鸟教程</font></a><br><br><a href="https://github.com/"><font face="隶书" size="5">github开源社区</font></a><br><br><a href="https://blog.csdn.net/weixin_42950079"><font face="隶书" size="5">CD4356的博客</font></a><br><br><a href="https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000"><font face="隶书" size="5">缪雪峰的git教程</font></a><br><br><a href="https://github.com/CyC2018/CS-Notes"><font face="隶书" size="5"> 面试必备基础知识</font></a><br><br><a href="https://m.aliyun.com/jiaocheng/"><font face="隶书" size="5">阿里云教程</font></a><br><br></body>
</html>

完整代码可到此处下载

扩展:

php操作MySQL数据库的方法和解析

用户登陆注册功能(PHP)相关推荐

  1. java wed登录面 代码_JavaWeb实现用户登录注册功能实例代码(基于Servlet+JSP+JavaBean模式)...

    下面通过通过图文并茂的方式给大家介绍JavaWeb实现用户登录注册功能实例代码,一起看看吧. 一.Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBea ...

  2. php注册登录描述,基于PHP实现用户登录注册功能的详细教程

    教程前先给大家看看小编的实现成果吧! 图1: 图2: 图3: 教程: 实现这个功能我们需要五个php文件: login.php (登录界面,如图2) 登录 登录页面 用户名: required=&qu ...

  3. Android 实现简单的登陆注册功能(SharedPreferences和SQLite)

    最近刚好做了一个Android的登录注册界面,将数据利用SharedPreferences或者SQLite绑定到Android程序中,实现简单的登陆注册功能,本文未涉及到与服务器的交流. 首先,对于登 ...

  4. vue+node---使用element框架实现的前后台用户登录注册功能

    为了更进一步清晰地了解前台数据向后台提交的过程,更好地加强巩固前端开发学习,整理了基础的[前后台用户登录注册功能]实现代码.后台通过node.js开发,数据存储在sqlite中,前台vue+eleme ...

  5. jsp的MVC模式设计用户登陆注册

    jsp的MVC模式设计用户登陆注册 用户登陆功能 1.实验内容 2.实验步骤 3.实验结果 4.实验分析 用户登陆功能 通过设计用户的登陆和注册,来学习jsp的MVC模式,熟练掌握MVC模式各部分的内 ...

  6. 小程序登陆注册功能的实现

    我们在开发小程序时,难免会用到登陆注册功能.通常小程序有为我们提供用户授权登陆的功能,但是这个只能获取用户的头像和昵称,我们该怎么样来实现小程序账号密码的注册和登陆呢,今天就来手把手的带大家学习小程序 ...

  7. java实现用户登录注册功能(用集合框架来实现)

    需求:实现用户登录注册功能(用集合框架来实现) 分析: A:需求的类和接口 1.用户类 UserBean 2.用户操作方法接口和实现类 UserDao UserDaoImpl 3.测试类 UserTe ...

  8. python用户登录(输入用户名和密码)dic_Python使用装饰器模拟用户登陆验证功能示例...

    本文实例讲述了Python使用装饰器模拟用户登陆验证功能.分享给大家供大家参考,具体如下: # -*- coding:utf-8 -*- #!python3 user_list = [ {'name' ...

  9. MVC框架实现用户登录注册功能(连接数据库)

    目录 一.简单理解MVC框架 二.项目结构 三.项目源码 3.1 User 3.2 UserDao 3.3 RegisterDao 3.4 servletControll 3.5 servletCon ...

最新文章

  1. 反馈网络信息改善用户体验
  2. padding影响整个div的实际宽度
  3. 列注释_机器学习 Pandas 03:基础 前16题 ( 带答案、注释 )
  4. Visual C++ 2008入门经典 第九章类的继承和虚函数(二)
  5. python经典题库及答案文库_Python100经典练习题
  6. matlab线旋转成面,用matlab怎么绘制一条曲线绕z轴旋转生成的曲面?
  7. 未来教育计算机二级考生文件夹打不开,未来教育计算机二级office题库
  8. selenium对验证码识别校验解决方法
  9. java理论笔试题_Java基础笔试题及答案
  10. SAP PI SLD RZ70 系统架构目录数据提供者 HTTP(S) 配置
  11. java拼图_java实现拼图游戏
  12. ICP备案不等于ICP许可证
  13. Makefile编译忽略warning或者将warning视为error
  14. 如何计算摄影参数:分区基准面高程、相对航高、绝对航高、基线长度、航线间隔、航线数、每条航线的相片数、总相片数。
  15. PLSQL--表空间管理
  16. CRMEB 商城订单发货功能
  17. 机器学习——支持向量机(SVM)之超平面、间隔与支持向量
  18. getline()的用法详解
  19. java会导致蓝屏么_原来有这么多原因会导致电脑蓝屏啊
  20. 服装制鞋业的特点及管理(转)

热门文章

  1. JS-面向对象--创建具有私有属性的对象(2个方法)
  2. 使用Jenkins来实现内部的持续集成流程(上)
  3. C语言中fgetc函数返回值为什么是int?
  4. [转]Oracle_ProC编程
  5. 网页动态加载图片 通过JS和jquery实现。
  6. Java入门教程[9天快速入门JAVA]
  7. IT职场健康杀手与应对宝典 (虽然是IT职场,可是对于常上网的ggmm也是很有用的)...
  8. 01 安装ansible
  9. 【快速入门ORM框架之Dapper】大牛勿进系列
  10. LeetCode : Number of Segments in a String