基于PHP实现用户登录注册功能的详细教程


Posted in PHP onAugust 04, 2020

教程前先给大家看看小编的实现成果吧!

图1:

基于PHP实现用户登录注册功能的详细教程

图2:

基于PHP实现用户登录注册功能的详细教程

图3:

基于PHP实现用户登录注册功能的详细教程

教程:
实现这个功能我们需要五个php文件:

login.php
(登录界面,如图2)

<!DOCTYPE html>
<html><head>
<title>登录</title>
<meta name="content-type"; charset="UTF-8">
</head><body> 
<div class="content" align="center"> <!--头部-->
 <div class="header"> <h1>登录页面</h1> </div> 
<!--中部--> 
<div class="middle">
 <form id="loginform" action="loginaction.php" method="post"> 
<table border="0"> <tr> 
 <td>用户名:</td> 
<td> <input type="text" id="name" name="username" 
required="required" value="<?php
echo isset($_COOKIE[""]) ? $_COOKIE[""] : ""; ?>"> </td> </tr> 
<tr> <td>密 码:</td> <td><input type="password" id="password" name="password"></td> 
</tr> <tr> <td colspan="2"> <input type="checkbox" name="remember"><small>记住我 </td> </tr> <tr> <td 
colspan="2" align="center" style="color:red;font-size:10px;"> <!--提示信息--> <?php
$err = isset($_GET["err"]) ? $_GET["err"] : "";
switch ($err) {
 case 1:
  echo "用户名或密码错误!";
  break;

 case 2:
  echo "用户名或密码不能为空!";
  break;
} ?> </td> </tr> <tr> <td colspan="2" align="center"> 
<input type="submit" id="login" name="login" value="登录"> <input type="reset" id="reset" 
name="reset" value="重置"> </td> </tr> 
<tr> 
 <td colspan="2" align="center"> 还没有账号,快去<a href="register.php" rel="external nofollow" >注册</a>吧</td>
</tr> 
</table> 
</form> 
</div> 
<!--脚部--> 
<div class="footer"> <small>Copyright © 版权所有·欢迎翻版 </div> </div>
</body>
</html>

loginaction.php
(使login.php实现与数据库的连接,并校正输入)

<?php
// $Id:$ //声明变量
$username = isset($_POST['username']) ? $_POST['username'] : "";
$password = isset($_POST['password']) ? $_POST['password'] : "";
$remember = isset($_POST['remember']) ? $_POST['remember'] : ""; //判断用户名和密码是否为空
if (!empty($username) && !empty($password)) { //建立连接
 $conn = mysqli_connect('localhost', '', '', 'user'); //准备SQL语句
 $sql_select = "SELECT username,password FROM usertext WHERE username = '$username' AND password = '$password'"; //执行SQL语句
 $ret = mysqli_query($conn, $sql_select);
 $row = mysqli_fetch_array($ret); //判断用户名或密码是否正确
 if ($username == $row['username'] && $password == $row['password']) 
 { //选中“记住我”
  if ($remember == "on") 
  { //创建cookie
   setcookie("", $username, time() + 7 * 24 * 3600);
  } //开启session
  session_start(); //创建session
  $_SESSION['user'] = $username; //写入日志
  $ip = $_SERVER['REMOTE_ADDR'];
  $date = date('Y-m-d H:m:s');
  $info = sprintf("当前访问用户:%s,IP地址:%s,时间:%s /n", $username, $ip, $date);
  $sql_logs = "INSERT INTO logs(username,ip,date) VALUES('$username','$ip','$date')";
  //日志写入文件,如实现此功能,需要创建文件目录logs
  $f = fopen('./logs/' . date('Ymd') . '.log', 'a+');
  fwrite($f, $info);
  fclose($f); //跳转到loginsucc.php页面
  header("Location:loginsucc.php"); //关闭数据库,跳转至loginsucc.php
  mysqli_close($conn);
 }
 else 
 { 
  //用户名或密码错误,赋值err为1
  header("Location:login.php?err=1");
 }
} else { //用户名或密码为空,赋值err为2
 header("Location:login.php?err=2");
} ?>

loginsucc.php
(登录成功后界面,如图3)

<!DOCTYPE html>
<html>
<head>
<title>登录成功</title>
<meta name="content-type";
 charset="UTF-8">
</head>
<body> 
<div> 
<?php
// $Id:$ //开启session
session_start(); //声明变量
$username = isset($_SESSION['user']) ? $_SESSION['user'] : ""; //判断session是否为空
if (!empty($username)) { ?> 
<h1>登录成功!</h1> 欢迎您!
<?php
 echo $username; ?> 
<br/> <a href="login.php" rel="external nofollow" rel="external nofollow" >退出</a> //跳转至主网页
<?php
} else { //未登录,无权访问
  ?>
 <h1>你无权访问!!!</h1> 
<?php
} ?> </div>
</body>
</html>

register.php
(注册界面,如图1)

<!DOCTYPE html>
<html>
<head><title>注册</title>
<meta name="content-type"; charset="UTF-8">
</head><body> 
<div class="content" align="center"> <!--头部--> 
<div class="header"> <h1>注册页面</h1> </div> <!--中部--> 
<div class="middle"> 
<form action="registeraction.php" method="post"> <table border="0"> 
<tr> <td>用户名:</td> 
<td><input type="text" id="id_name" name="username" required="required"></td> 
</tr> <tr>
 <td>密 码:</td> <td><input type="password" id="password" name="password" 
required="required"></td> 
</tr> <tr>
 <td>重复密码:</td> <td><input type="password" id="re_password" 
name="re_password" required="required"></td> </tr> <tr>
 <td>性别:</td> <td> <input type="radio" id="sex" name="sex" value="mam">男 <input type="radio" id="sex" name="sex" value="woman">女 </td> </tr> <tr>
 <td>QQ:</td> <td><input type="text" id="qq" name="qq" required="required"></td> </tr> <tr> 
<td>Email:</td> <td><input type="email" id="email" name="email" required="required"></td> </tr> <tr> 
<td>电话:</td> <td><input type="text" id="phone" name="phone" required="required"></td> </tr> <tr> 
<td>地址:</td> <td><input type="text" id="address" name="address" required="required"></td> </tr> 
<tr> <td colspan="2" align="center" style="color:red;font-size:10px;"> <!--提示信息--> 
<?php
$err = isset($_GET["err"]) ? $_GET["err"] : "";
switch ($err) {
 case 1:
  echo "用户名已存在!";
  break;

 case 2:
  echo "密码与重复密码不一致!";
  break;

 case 3:
  echo "注册成功!";
  break;
}
?> 
</td> </tr> <tr> <td colspan="2" align="center"> 
<input type="submit" id="register" name="register" value="注册">
 <input type="reset" id="reset" name="reset" value="重置"> </td></tr> 
 <tr> <td colspan="2" align="center"> 
如果已有账号,快去<a href="login.php" rel="external nofollow" rel="external nofollow" >登录</a>吧! </td> </tr> </table> </form> </div> 
<!--脚部--> 
<div class="footer"> <small>Copyright © 版权所有·欢迎翻版 </div> </div></body></html>

registeraction.php
(实现register.php连接数据库,并向指定表单插入数据)

<?php
// $Id:$ //声明变量
$username = isset($_POST['username']) ? $_POST['username'] : "";
$password = isset($_POST['password']) ? $_POST['password'] : "";
$re_password = isset($_POST['re_password']) ? $_POST['re_password'] : "";
$sex = isset($_POST['sex']) ? $_POST['sex'] : "";
$qq = isset($_POST['qq']) ? $_POST['qq'] : "";
$email = isset($_POST['email']) ? $_POST['email'] : "";
$phone = isset($_POST['phone']) ? $_POST['phone'] : "";
$address = isset($_POST['address']) ? $_POST['address'] : "";
if ($password == $re_password) { //建立连接
 $conn = mysqli_connect("localhost", "", "", "user"); //准备SQL语句,查询用户名
 $sql_select = "SELECT username FROM usertext WHERE username = '$username'"; //执行SQL语句
 $ret = mysqli_query($conn, $sql_select);
 $row = mysqli_fetch_array($ret); //判断用户名是否已存在
 if ($username == $row['username']) { //用户名已存在,显示提示信息
  header("Location:register.php?err=1");
 } else { //用户名不存在,插入数据 //准备SQL语句
  $sql_insert = "INSERT INTO usertext(username,password,sex,qq,email,phone,address) 
VALUES('$username','$password','$sex','$qq','$email','$phone','$address')"; //执行SQL语句
  mysqli_query($conn, $sql_insert);
  header("Location:register.php?err=3");
 } //关闭数据库
 mysqli_close($conn);
} else {
 header("Location:register.php?err=2");
} ?>

建议将五个文件存于本地,便于更改,当然不介意用linux的文本编辑器也可以直接上传后在服务器端修改。保存好文件后:

1.创建数据库及表单

小编这里是通过phpmyadmin可视化界面创建的数据库和表单,进入ip/phpmyadmin后登陆数据库:

基于PHP实现用户登录注册功能的详细教程

登陆myadmin后创建数据库user和表单usertext:

基于PHP实现用户登录注册功能的详细教程

基于PHP实现用户登录注册功能的详细教程

2.php文件中操作数据库的函数

这里小编先解释下列php数据库操作函数的作用:
(1)mysqli_connect(“localhost”, “服务器名”, “数据库密码”, “连接的数据库名”);
参数描述:
“localhost”,不需要更改,新手切忌不要改成服务器的ip地址,因为创建数据库的默认的有权限访问用户为:

基于PHP实现用户登录注册功能的详细教程

“连接的数据库名”,是数据库不要填表单,第一步的user是数据库,usertext是表单。

(2)mysqli_query()函数执行某个针对数据库的查询:
mysqli_query(connection,query,resultmode);
参数描述:
connection必需。规定要使用的 MySQL 连接。
query必需,规定查询字符串。
(这是一个存放mysql命令的字符串,命令内容要用该函数才可实现)
resultmode
可选。一个常量。可以是下列值中的任意一个:
MYSQLI_USE_RESULT(如果需要检索大量数据,请使用这个)
MYSQLI_STORE_RESULT(默认)
eg:

(3)mysqli_fetch_array() 函数
从结果集中取得一行作为关联数组,或数字数组,或二者兼有。
mysqli_fetch_array(result,resulttype);
参数描述:
result必需。规定由 mysqli_query()、mysqli_store_result() 或 mysqli_use_result() 返回的结果集标识符。
resulttype可选。规定应该产生哪种类型的数组。可以是以下值中的一个:
MYSQLI_ASSOC
MYSQLI_NUM
MYSQLI_BOTH

3修改php文件实现登录注册

下面我们来对loginaction.php和registeraction.php两个文件进行更改
如果数据库创建和第1步时一样,那只需要对两个文件中的:
mysqli_connect(“localhost”, “服务器名”, “数据库密码”, “user”);
进行用户信息填写即可。
如果数据库名称或表单不一样,则需要找到下面语句:
mysqli_connect(“localhost”, “服务器名”, “数据库密码”, “user”);
SELECT;
INSERT INTO;(只在registeraction.php有)
将上述语句中的(数据库名)user和(表单名)usertext修改成你的数据库名和表单名。

4进一步完善

有兴趣的朋友可以试着向小编一样创建超链接,登录成功后跳转到指定网页;
在loginsucc.php中找到退出将login.php改为其他网页(直接写文件名的话需要放于同一目录下)

基于PHP实现用户登录注册功能的详细教程

点击链接:

基于PHP实现用户登录注册功能的详细教程

当然有进必有出,这里小编设置了一个退出登录modal
(bootstrap使用:https://getbootstrap.com/docs/4.3/getting-started/introduction/)

基于PHP实现用户登录注册功能的详细教程

到此这篇关于基于PHP实现用户登录注册功能的详细教程的文章就介绍到这了,更多相关PHP实现用户登录注册内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
[转帖]PHP世纪万年历
Dec 06 PHP
PHP 错误之引号中使用变量
May 04 PHP
PHP中读取文件的8种方法和代码实例
Aug 05 PHP
PHP写日志的实现方法
Nov 05 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
PHP图片添加水印功能示例小结
Oct 03 PHP
php基于单例模式封装mysql类完整实例
Oct 18 PHP
PHP实现电商订单自动确认收货redis队列
May 17 PHP
ajax+php实现无刷新验证手机号的实例
Dec 22 PHP
Docker搭建自己的PHP开发环境
Feb 24 PHP
thinkphp5+layui实现的分页样式示例
Oct 08 PHP
PHP与Web页面的交互示例详解二
Aug 04 #PHP
PHP与Web页面的交互示例详解一
Aug 04 #PHP
基于php+MySql实现学生信息管理系统实例
Aug 04 #PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 #PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 #PHP
PHP Ajax跨域问题解决方案代码实例
Aug 01 #PHP
PHP生成图表pChart的示例解析
Jul 31 #PHP
You might like
PHP中比较时间大小实例
2014/08/21 PHP
php设计模式之备忘模式分析【星际争霸游戏案例】
2020/03/24 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
Javascript 模式实例 观察者模式
2009/10/24 Javascript
使用jquery.validate自定义方法实现&quot;手机号码或者固话至少填写一个&quot;的逻辑验证
2014/09/01 Javascript
javascript中typeof操作符和constucor属性检测
2015/02/26 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
浅谈Sizzle的“编译原理”
2015/04/14 Javascript
javascript顺序加载图片的方法
2015/07/18 Javascript
jQuery实现点击按钮文字变成input框点击保存变成文字
2016/05/09 Javascript
基于vuejs+webpack的日期选择插件
2020/05/21 Javascript
微信小程序新手教程之启动页的重要性
2019/03/03 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
js对象数组和对象的使用实例详解
2019/08/27 Javascript
在Python中处理列表之reverse()方法的使用教程
2015/05/21 Python
Python实现的RSS阅读器实例
2015/07/25 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
深入浅析python 中的匿名函数
2018/05/21 Python
Python中的函数式编程:不可变的数据结构
2018/10/08 Python
详解Python用户登录接口的方法
2019/04/17 Python
pandas.cut具体使用总结
2019/06/24 Python
opencv实现简单人脸识别
2021/02/19 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
python的scipy.stats模块中正态分布常用函数总结
2021/02/19 Python
基于注解实现 SpringBoot 接口防刷的方法
2021/03/02 Python
用HTML5制作视频拼图的教程
2015/05/13 HTML / CSS
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
惠普新加坡官方商店:HP Singapore
2020/04/17 全球购物
Sql面试题
2013/03/20 面试题
几个Shell Script面试题
2012/08/31 面试题
2014年机关植树节活动方案
2014/02/27 职场文书
国土资源局开展党的群众路线教育实践活动整改措施
2014/09/26 职场文书
openstack中的rpc远程调用的方法
2021/07/09 Python
缓存替换策略及应用(以Redis、InnoDB为例)
2021/07/25 Redis
PostgreSQL数据库创建并使用视图以及子查询
2022/04/11 PostgreSQL