热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP中session共享和登录验证的实现方法

我们先来讲述一下利用session来登录,登录页面05php的代码如下:<?phpsession_start();初始化sessionif(isset($_SESSION[&39;shili&39;

我们先来讲述一下利用session来登录,登录页面05.php的代码如下:

  1. //初始化session 
  2. if (isset ($_SESSION[&#39;shili&#39;])){ 
  3. header ("Location:shili.php") ;   //重新定向到其他页面 
  4. exit ; }  ?> 
  5.  
  6.  
  7. "center"
  8. "260" border="1" bgcolor="#D8EFFA"
  9. "login" method="post" action="06.php" OnSubmit="return checklogin()"
  10. "center"
  11. "30" colspan="2">class="style1">管理系统登录 
  12.  
  13.  
  14. "90" align="center" class="style1">管理员:  
  15. "170" height="20" align="left" valign="middle">"username" type="text" id="username" size="20"
  16.  
  17.  
  18. "center" class="style1">密码:  
  19. "20" align="left" valign="middle">"password" type="password" id="password" size="20"
  20.  
  21.  
  22. "center" class="style1">  ;  
  23. "20" align="center">"submit" name="Submit" value="登 录"
  24.  
  25.  
  26.  
 

该程序是一个管理员登录界面,首先初始化session,然后通过检测session变量是否已经注册来检测用户是否已经登录过,如果登录过,则无需再次登录,直接定向到其他页面。这里还使用了Javascript来判断是否输入了用户名和密码。

验证登录的页面,06.php的代码如下:

  1. //初始session 
  2. if (isset ($_SESSION[&#39;shili&#39;])){ 
  3. header ("Location:shili.php") ;  //重新定向到其他页面 
  4. exit ; }    //登录过的话立即结束 
  5. $shili_name=$_POST[&#39;username&#39;] ;  //获取参数 
  6. $password=$_POST[&#39;password&#39;] ; 
  7. //验证管理员名称和密码是否正确,这里采用直接验证,没有连接数据库 
  8. if ($shili_name=="mr" and $password=="mrsoft"){ 
  9. session_register ("shili") ;   //注册新的变量,保存当前会话的昵称 
  10. $shili = $shili_name ; 
  11. echo "登录成功!" ; 
  12. header ("Location:shili.php") ;  //登录成功重定向到管理页面 
  13. }else
  14. echo "" ; 
  15. echo "账号或密码错误,或者不是管理员账号
    "
     ; 
  16. echo "登录失败!
    请重新输入"
  17. echo "" ; }    
  18. ?> 

该程序同样是先通过session变量检测用户是否已经登录,如果没有,则要对输入的用户名和密码进行验证,正确则注册session变量,输出登录成功!。如不正确,则提示登录失败。

这是一个简单的用户登录验证的程序,通过session变量阻止了那些没有登录而直接浏览的用户。如果想要对某个页面限制浏览的用户,可以使用同样的方式,只要把如下的代码放在该页面的开头即可:

  1. if (!isset ($_SESSION[&#39;shili&#39;])){ 
  2. echo "" ; 
  3. echo "" ; 
  4. echo "你没有登录,请登录!" ; 
  5. echo "

    " ; 
  6. exit () ;  }   
  7. ?> 

利用session_id实现共享登录

多服务器共享session问题,这个大家应该都能够理解的,当一个网站的用户量过大,就会使用服务器集群,例如专门有一个登录用的服务器。用户通过登录服务器登录之后,登录服务器保存了用户的登录信息session,而其他受访问的服务器,例如电影服务器没有这个session,那么我们就要通过一个session的唯一标识来共享这个session了——具体session的共享超出了本文的范围,请自行查阅资料。

第二个用途就是,验证同一用户的不同会话,这个比较难理解。这样说吧,一个用户并非通过浏览器来请求连接,而是通过socket或者其它方式来请求数据的时候,我们首先要对他进行用户登录验证,验证成功之后,就下发一个sessionid给他,然后他每次请求的时候就携带这个sessionid,我们通过这个sessionid来判断session是否已经存在,如果存在我们就认定用户已经登录……

对于第一个问题,我们可以把sessionid保存在数据库中得以实现,这个方法比较安全而且应用广泛,但是不是我们讨论的范围哦,首先验证的时候产生一个sessionid;代码如下:

  1. Session_start();  
  2. $sessionId = session_id();//得到sessionid  
  3. //将session下发给客户端  
  4. .........  
  5. ?> 

客户端携带sessionid这个变量来请求数据,代码如下:

  1. Session_id(‘$sessionid&#39;);//注意这个时候session_id()这个函数是带有参数的  
  2. Session_start();//这个函数必须在session_id()之后  
  3. ?> 

好了不问题己得到了很好的解决有需要了解的朋友可以参考一下。


推荐阅读
  • 本文探讨了如何解决PHP文件无法写入本地文件的问题,并解释了PHP文件中HTML代码无效的原因,提供了一系列实用的解决方案和最佳实践。 ... [详细]
  • 使用PHP实现网站访客计数器的完整指南
    本文详细介绍了如何利用PHP构建一个简易的网站访客统计系统。通过具体的代码示例和详细的解释,帮助开发者理解和实现这一功能,适用于初学者和有一定经验的开发人员。 ... [详细]
  • 本文详细介绍了一种通过MySQL弱口令漏洞在Windows操作系统上获取SYSTEM权限的方法。该方法涉及使用自定义UDF DLL文件来执行任意命令,从而实现对远程服务器的完全控制。 ... [详细]
  • 本文深入探讨了MySQL中常见的面试问题,包括事务隔离级别、存储引擎选择、索引结构及优化等关键知识点。通过详细解析,帮助读者在面对BAT等大厂面试时更加从容。 ... [详细]
  • 1.执行sqlsever存储过程,消息:SQLServer阻止了对组件“AdHocDistributedQueries”的STATEMENT“OpenRowsetOpenDatas ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 苹果系统频繁弹窗提示无法验证服务器身份?竟是网易邮箱证书过期所致
    近日,众多苹果用户发现iOS、iPadOS和macOS系统频繁弹出无法验证服务器身份的警告。问题根源在于网易邮箱未能及时更新其数字证书,导致原证书过期后无法被信任。 ... [详细]
  • Symfony是一个功能强大的PHP框架,以其依赖注入(DI)特性著称。许多流行的PHP框架如Drupal和Laravel的核心组件都基于Symfony构建。本文将详细介绍Symfony的安装方法及其基本使用。 ... [详细]
  • 本章详细介绍SP框架中的数据操作方法,包括数据查找、记录查询、新增、删除、更新、计数及字段增减等核心功能。通过具体示例和详细解析,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • 本文详细介绍了 phpMyAdmin 的安装与配置方法,适用于多个版本的 phpMyAdmin。通过本教程,您将掌握从下载到部署的完整流程,并了解如何根据不同的环境进行必要的配置调整。 ... [详细]
  • 本文详细介绍了如何检查和配置电脑上的PHP环境,包括位数、运行支持以及文件格式的打开方式。适合初学者了解PHP的基础知识和操作方法。 ... [详细]
  • vivo Y5s配备了联发科Helio P65八核处理器,这款处理器采用12纳米工艺制造,具备两颗高性能Cortex-A75核心和六颗高效能Cortex-A55核心。此外,它还集成了先进的图像处理单元和语音唤醒功能,为用户提供卓越的性能体验。 ... [详细]
  • 访问一个网页的全过程
    准备:DHCPUDPIP和以太网启动主机,用一根以太网电缆连接到学校的以太网交换机,交换机又与学校的路由器相连.学校的这台路由器与一个ISP链接,此ISP(Intern ... [详细]
  • 使用JS、HTML5和C3创建自定义弹出窗口
    本文介绍如何结合JavaScript、HTML5和C3.js来实现一个功能丰富的自定义弹出窗口。通过具体的代码示例,详细讲解了实现过程中的关键步骤和技术要点。 ... [详细]
  • 本文介绍了一个基于 Java SpringMVC 和 SSM 框架的综合系统,涵盖了操作日志记录、文件管理、头像编辑、权限控制、以及多种技术集成如 Shiro、Redis 等,旨在提供一个高效且功能丰富的开发平台。 ... [详细]
author-avatar
牛仔曼宁
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有