基于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 相关文章推荐
PHP4之真OO
Oct 09 PHP
php与XML、XSLT、Mysql的结合运用实现代码
Nov 19 PHP
深入理解PHP几个算法:PHP冒泡、PHP二分法、PHP求素数、PHP乘法表
Jun 06 PHP
解析PHP中的正则表达式以及模式匹配
Jun 19 PHP
PHP程序员基本要求和必备技能
May 09 PHP
服务器上配置PHP运行环境教程
Feb 12 PHP
如何使用php脚本给html中引用的js和css路径打上版本号
Nov 18 PHP
网页的分页下标生成代码(PHP后端方法)
Feb 03 PHP
php使用curl并发减少后端访问时间的方法分析
May 12 PHP
php查询及多条件查询
Feb 26 PHP
phpcms实现验证码替换及phpcms实现全站搜索功能教程详解
Dec 13 PHP
laravel 时间格式转时间戳的例子
Oct 11 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
2006/12/14 PHP
分割GBK中文遭遇乱码的解决方法
2013/08/09 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
php安全配置记录和常见错误梳理(总结)
2017/03/28 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
PHP从零开始打造自己的MVC框架之入口文件实现方法详解
2019/06/03 PHP
禁止F5等快捷键的JS代码
2007/03/06 Javascript
Js控制弹窗实现在任意分辨率下居中显示
2013/08/01 Javascript
基于Jquery实现表单验证
2020/07/20 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
IE8兼容Jquery.validate.js的问题
2016/12/01 Javascript
vue-router 中router-view不能渲染的解决方法
2017/05/23 Javascript
vue 怎么创建组件及组件使用方法
2017/07/27 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
2018/08/07 Javascript
vue柱状进度条图像的完美实现方案
2019/08/26 Javascript
vue利用全局导航守卫作登录后跳转到未登录前指定页面的实例代码
2020/05/19 Javascript
Python实现读取TXT文件数据并存进内置数据库SQLite3的方法
2017/08/08 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
Python中的sys.stdout.write实现打印刷新功能
2020/02/21 Python
对Matlab中共轭、转置和共轭装置的区别说明
2020/05/11 Python
python 多进程和协程配合使用写入数据
2020/10/30 Python
Pycharm安装Qt Design快捷工具的详细教程
2020/11/18 Python
用Python实现童年贪吃蛇小游戏功能的实例代码
2020/12/07 Python
html5+css3进度条倒计时动画特效代码【推荐】
2016/03/08 HTML / CSS
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
成人教育自我鉴定
2013/11/01 职场文书
出纳岗位职责模板
2013/11/27 职场文书
自荐信写法介绍
2014/01/25 职场文书
发展部经理职责规定
2014/02/22 职场文书
保证书格式范文
2014/04/28 职场文书
支部鉴定材料
2014/06/02 职场文书
限期整改通知书
2015/04/22 职场文书
黑暗中的舞者观后感
2015/06/18 职场文书
pytorch finetuning 自己的图片进行训练操作
2021/06/05 Python