基于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 相关文章推荐
抓取YAHOO股票报价的类
May 15 PHP
PHP中冒号、endif、endwhile、endfor使用介绍
Apr 28 PHP
php表单转换textarea换行符的方法
Sep 10 PHP
php利用iframe实现无刷新文件上传功能的代码
Sep 29 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
PHP使用CURL获取302跳转后的地址实例
May 04 PHP
php用户注册时常用的检验函数实例总结
Dec 22 PHP
PHP基于文件存储实现缓存的方法
Jul 20 PHP
解析WordPress中的post_class与get_post_class函数
Jan 04 PHP
WordPress开发中短代码的实现及相关函数使用技巧
Jan 05 PHP
yii2中结合gridview如何使用modal弹窗实例代码详解
Jun 12 PHP
php将xml转化对象的实例详解
Nov 17 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中去掉字符串首尾空格的方法
2012/05/19 PHP
php中的strpos使用示例
2014/02/27 PHP
PHP获取文件行数的方法
2015/06/10 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
php+ajax 文件上传代码实例
2019/03/18 PHP
Jquery Ajax学习实例5 向WebService发出请求,返回泛型集合数据的异步调用
2010/03/17 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
javascript日期验证之输入日期大于等于当前日期
2015/12/13 Javascript
在网页中插入百度地图的步骤详解
2016/12/02 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
使用JS实现鼠标放上图片进行放大离开实现缩小功能
2021/01/27 Javascript
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
Django使用Mysql数据库已经存在的数据表方法
2018/05/27 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
详解python 爬取12306验证码
2019/05/10 Python
Python面向对象程序设计之类和对象、实例变量、类变量用法分析
2020/03/23 Python
突袭HTML5之Javascript API扩展2—地理信息服务及地理位置API学习
2013/01/31 HTML / CSS
微信浏览器取消缓存的方法
2015/03/28 HTML / CSS
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
实例讲解利用HTML5 Canvas API操作图形旋转的方法
2016/03/22 HTML / CSS
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
简洁自适应404页面HTML好看的404源码
2020/12/16 HTML / CSS
计算机相关的自我评价
2014/01/15 职场文书
教学改革实施方案
2014/03/31 职场文书
合作协议书模板2014
2014/09/26 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
个人先进事迹材料
2014/12/29 职场文书
销售员自我评价
2015/03/11 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL
mysql5.5中文乱码问题解决的有用方法
2022/05/30 MySQL