热门标签 | 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. ?> 

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


推荐阅读
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解 SQL 视图、存储过程与事务
    本文详细介绍了SQL中的视图、存储过程和事务的概念及应用。视图为用户提供了一种灵活的数据查询方式,存储过程则封装了复杂的SQL逻辑,而事务确保了数据库操作的完整性和一致性。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 在计算机技术的学习道路上,51CTO学院以其专业性和专注度给我留下了深刻印象。从2012年接触计算机到2014年开始系统学习网络技术和安全领域,51CTO学院始终是我信赖的学习平台。 ... [详细]
  • 本文详细介绍了如何使用PHP检测AJAX请求,通过分析预定义服务器变量来判断请求是否来自XMLHttpRequest。此方法简单实用,适用于各种Web开发场景。 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 如何配置Unturned服务器及其消息设置
    本文详细介绍了Unturned服务器的配置方法和消息设置技巧,帮助用户了解并优化服务器管理。同时,提供了关于云服务资源操作记录、远程登录设置以及文件传输的相关补充信息。 ... [详细]
  • 网络攻防实战:从HTTP到HTTPS的演变
    本文通过一系列日记记录了从发现漏洞到逐步加强安全措施的过程,探讨了如何应对网络攻击并最终实现全面的安全防护。 ... [详细]
  • 360SRC安全应急响应:从漏洞提交到修复的全过程
    本文详细介绍了360SRC平台处理一起关键安全事件的过程,涵盖从漏洞提交、验证、排查到最终修复的各个环节。通过这一案例,展示了360在安全应急响应方面的专业能力和严谨态度。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文详细介绍了macOS系统的核心组件,包括如何管理其安全特性——系统完整性保护(SIP),并探讨了不同版本的更新亮点。对于使用macOS系统的用户来说,了解这些信息有助于更好地管理和优化系统性能。 ... [详细]
  • 解决MongoDB Compass远程连接问题
    本文记录了在使用阿里云服务器部署MongoDB后,通过MongoDB Compass进行远程连接时遇到的问题及解决方案。详细介绍了从防火墙配置到安全组设置的各个步骤,帮助读者顺利解决问题。 ... [详细]
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社区 版权所有