这篇博客实现用户登录验证以及使用cookie登录,它承接了前面的几个博客:
1. php连接mysql实例之新用户注册实现
2. php连接mysql实例之后台列表显示已注册的用户信息
3. php连接mysql实例之删除某条已注册的用户信息
4.php连接mysql实例之修改用户密码

我们先验证用户登陆,然后保存cookie,再次访问时不需要重复输入用户名和密码就可以登录。
首先介绍一下php中设置cookie的方法。
php中提供了一个函数来让我们设置cookie,这个函数是:

bool setcookie (
string 名字[,string 名 字 [ , s t r i n g 名字 [, string 值]
[, int 过期时间=0][,string 过 期 时 间 = 0 ] [ , s t r i n g 过期时间 = 0] [, string 路径]
[, string 域名][,bool 域 名 ] [ , b o o l 域名] [, bool 安全 = false]
[, bool http只读=false]);参数描述 h t t p 只 读 = f a l s e ] ) ; 参 数 描 述 http只读 = false] ); 参数 描述 名字 必需。规定 cookie 的名称。
值可选。规定cookie的值。 值 可 选 。 规 定 c o o k i e 的 值 。 值 可选。规定 cookie 的值。 有效期 可选。规定 cookie 的有效期。
路径可选。规定cookie的服务器路径。 路 径 可 选 。 规 定 c o o k i e 的 服 务 器 路 径 。 路径 可选。规定 cookie 的服务器路径。 域名 可选。规定 cookie 的域名。
安全可选。规定是否通过安全的HTTPS连接来传输cookie。 安 全 可 选 。 规 定 是 否 通 过 安 全 的 H T T P S 连 接 来 传 输 c o o k i e 。 安全 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。 http安读 可选。如果true,那么js就无法读取改cookie,增加安全性。

一般来说,我们其实用不到上面那么多参数,对于这个函数,我们一般这么用: setcookie(cookie名,cookie值,cookie有效期);

没错,就那么3个。如此一来,我们就可以在服务端通过$_COOKIE[‘name’] 来读取cookie了。
首先是一个用户登录的HTML文件—-denglu.html

<!DOCTYPE html>
<html>
<head></head>
<body>
<form action="cookie.php" method="POST"><div>用户名:<input type="text" name="username" />密  码:<input type="password" name="password" /><input type="submit" value="登录"></div>
</form>
</body>
</html>

对登录事件做出响应的就是cookie.php——她实现的功能有验证用户名与密码,如果正确则跳转到welcome.html,并切保存cookie。。。当下次需要访问时不必输入用户名和密码即可登录。cookie代码如下:

<?php
//第一次登陆的时候,通过用户输入的信息来确认用户
if ( ( $_POST['username'] != null ) && ( $_POST['password'] != null ) ) {$userName = $_POST['username'];$password = $_POST['password'];//从db获取用户信息//PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码$conn = mysqli_connect('localhost','root','password');mysqli_select_db($conn,'test');$sql = "select * from user where username = '$userName' ";$res = mysqli_query($conn,$sql);$row = mysqli_fetch_assoc($res);if ($row['password'] == md5($password)) {                           //md5(trim($_POST['password']))//密码验证通过,设置cookies,把用户名和密码保存在客户端setcookie('username',$userName,time()+60*60*24*30);//设置时效一个月,一个月后这个cookie失效setcookie('password',$password,time()+60*60*24*30);//最后跳转到登录后的欢迎页面header('Location: welcome.php' . "?username=$userName");}
}//再次访问的时候通过cookie来识别用户
if ( ($_COOKIE['username'] != null)  && ($_COOKIE['password'] != null) ) {$userName = $_COOKIE['username'];$password = $_COOKIE['password'];//从db获取用户信息//PS:数据库连接信息改成自己的 分别为主机 数据库用户名 密码$conn = mysqli_connect('localhost','root','password','test');$res = mysqli_query($conn,"select * from user where username =  '$userName' ");$row = mysqli_fetch_assoc($res);if ($row['password'] == md5($password)) {//验证通过后跳转到登录后的欢迎页面header('Location: welcome.php' . "?username=$userName");}
}?>

登录成功后的跳转的welcome页面如下:

<?php
$user = $_GET['username'];
?>
<html>
<head></head>
<body>
welcome,<?php echo $user;?>
</body>
</html>

这样,当我第一次访问cookie.php的时候,我需要输入用户名和密码,输入完毕后跳转到了welcome.php。然后我关闭浏览器,再次打开cookie.php,这次没有要求我输入用户信息,而是直接跳转到了welcome.php,因为之前我们存的cookie信息被浏览器自动发送到了服务端,服务端做完处理直接跳转到了welcome.php,服务器认识我们了!知道我是之前那个登陆过的用户,这样我们就通过cookie技术让无状态的HTTP协议保持了状态。

只不过!!!只不过!!!只不过!!!重要的事要说3遍,我们一般是不会把用户名和密码放到cookie中的,因为这并不安全,容易泄露自己的信息,请不要把重要的信息放到cookie中。我们这个只是一个学习cookie的例子。
本人也是菜鸟,也处在学习阶段,代码写的都很粗糙,大牛勿喷,如有错误烦请批评指正。

php链接mysql实例之用户登录验证以及使用cookie登录相关推荐

  1. Mysql —— C语言链接mysql数据库,用户 角色 权限(用户根据角色的不同拥有增删改查的权限、用户有三种认证方式)

    db_修改过(用户 角色 权限): 1.新增用户时候id 改为最大id值加一,之前用的select查看出来的记录数加一,删除后再增加会出错: 2.删除用户时候,若该用户创建过其他用户(不能改此用户名. ...

  2. APP新用户注册、手机号绑定、用户登录验证新方式——一键登录(免密登录)验证方式新趋势

    传统的手机APP应用注册通常需要用户输入用户名,填写用户密码,同时通过获取验证码绑定手机号.用户一旦注册后再次登录传统的方式都是提供用户名加密码,或者凭手机验证码登录.当然现在许多APP为了获取更多的 ...

  3. Django之使用自定义用户表(AbstractUser)/自定义登录验证(jwt)/获取当前登录用户

    基本步骤: 一.自定义用户表: 1.自定义的用户表继承AbstractUser: 2.settings.py添加配置,指向用户表:AUTH_USER_MODEL = 'myUser.Account'( ...

  4. python 登录验证_Python实现简单登录验证

    这篇文章主要为大家详细介绍了Python实现简单登录验证的相关资料,需要的朋友可以参考下 本文实例为大家分享了简单的Python登录验证,供大家参考,具体内容如下 编写登录接口 要求:1.输入用户名密 ...

  5. mysql 实例与用户_MySQL(17):用户登录实例

    1.理解程序流程 2.创建用户表userinfos 表结构为:id.uname.upwd.isdelete 注意:需要对密码进行加密.如果使用md5加密,则密码包含32个字符:如果使用sha1加密,则 ...

  6. html设置网页登录认证,四、登录验证:使用自定义界面登录

    2.自定义登录界面(thymeleaf) 1.html文件,放在resources/templates下为后面权限校验做准备,权限校验看五.的security配置类 1) login.html Doc ...

  7. 如何实现一台机器上运行多个MySQL实例?

    在一台机器上一个MySQL服务器运行多个MySQL实例有什么好处?这里我先入为主给大家介绍这样做至少存在两个好处(看完这篇文章后理解会更透彻): (1)减轻服务器链接负担 (2)为不同的用户提供不同的 ...

  8. Mysql —— C语言链接mysql数据库,实现可以增删改查的角色权限登录系统

    /******************************************************************** * 标题:C语言链接mysql数据库,实现可以增删改查的角色 ...

  9. qt调用mysql加密接口_Qt实现客户端/服务器端登录验证|数据传输使用md5加密 | 学步园...

    要完成两个模块:客户端和服务器端.即实现通过客户端向远程服务器段发送数据来验证,以此来实现简单的认证功能.同时,客户端在向服务器段发送的数据通过md5加密后再传送. 开发环境与工具 开发操作系统:Wi ...

最新文章

  1. mac curl命令下载文件
  2. IKE phase 2
  3. 参加浙江中医药大学第十一届程序设计竞赛(ACM赛制)的总结
  4. 破解百度翻译页面api参数加密
  5. [MyBatisPlus]乐观锁和悲观锁
  6. scp选择二进制_二进制传输与文本传输区别
  7. SQLExecption:Operation not allowed after ResultSet closed解决办法
  8. cp 过程中目录突然挂了_怎么解决管材激光切割机切管过程中出现的过烧及挂渣...
  9. NYOJ-心急的C小加(贪心)
  10. 李雅普诺夫和MIT两个MRAC案例的xcos模型
  11. 《metasploit渗透测试魔鬼训练营》学习笔记第九章--meterpreter
  12. .net core 部署应用程序注意事项
  13. HTML中常见的其它标签
  14. Oracle VM VirtualBox Ubuntu1804虚拟机磁盘扩容
  15. iis启动服务时提示在本地计算机 无法启动iis admin服务,iis 依存服务和组没法启动...
  16. 关于Vs配置Opencv出现的错误“ 0x000007fefdf6a06d (KernelBase.dll) 处最可能的异常: Microsoft C++ 异常:”!!!
  17. Oracle LOB
  18. Mac上启动、关闭、重启MySQL服务
  19. 2018年南京大学计算机专业录取分数线,南京大学2018年录取分数线
  20. 【网络】默认路由(路由黑洞,路由终结)

热门文章

  1. 速成视频教程集锦|疯狂模渲大师正式版——折叠版从第A到O章节,本套教程在2020年6月1日之后将成为又一个旧版本教程,以后是图文
  2. Linux(CentOS7)在VMware上的安装以及认识操作系统
  3. 新生代单身男人会享受
  4. 华为emui10.0能升级鸿蒙吗,华为正式发布EMUI 11,后续可优先升级到鸿蒙2.0
  5. 手绘板的制作——画布保存(6)
  6. 鸿蒙哪些机型可以用,鸿蒙系统可以在哪些手机上使用 鸿蒙系统升级名单
  7. 小型开关电源特性测试
  8. NECCS|全国大学生英语竞赛C类|词汇和语法|词汇题|21:03~21:53
  9. Android货拉拉面试题,【货拉拉 产品 offer】货拉拉、Soul、不止少年最全面经!
  10. 处理机调度之进程调度