在web中如果想储存一个用户的各种信息,一般都会使用session来实现,今天我们就来了解session如何使用及它的原理都有哪些吧。
一、session简介
Session如字面意思一样是一个会话。在计算机中,由于HTTP协议是无状态协议,为了保持浏览器与服务器之间的联系,Session就诞生了。Session一般用于在服务器端保存用户状态的协议。通常会用来保存用户的登录状态。
二、Session原理
我们在搭建网站服务器的时候,通常会启用服务器的Session,这个时候当我们访问一个服务器上面的网站,服务器就要为该用户创建一个SESSION,在创建这个SESSION的时候,服务器会先查询这个用户是否创建过对应的Session ID,如果没有就创建,反之不创建。这个SESSION ID是唯一的、不重复的、不容易找到规律的字符串。SessionID通常以Cookie的形式存储在客户端。每次HTTP请求,SessionId都会随着Cookie被传递到服务器端,这样我们就可以通过这个SessionId取到对应的信息,来判断这个请求来自于哪个客户端/用户。
三、session实现方式
1.cookie存储
我们在浏览器使用cookie存储SessionID的时候,都会写上存储周期,因为cookie有定时和临时的区分,临时就是指关闭浏览器对应的cookie就会被删除,所以我们通常都会给需要存储信息的指定cookie添加一个过期的时间。有时候用户会禁用浏览器的cookie功能,这个时候我们就要依赖于第二种方式了。
2.URL重写
在用户禁用了浏览器的cookie的时候,我们使用url重写的方法,把对应的sessionID附加网址之后,这样在访问下一个页面的时候,我们也可以获取到对应的SessionID。
https://www.itbiancheng.com/sess.php?Session=q78sb9c7539nt9jho7lnplr951
下面用一个实例来更加清楚的了解一下吧:
<?php //本来不需要写session_start(); if(isset($_GET['PHPSESSID'])){ session_id($_GET['PHPSESSID']); } session_start(); $sid=session_id();//当然也可以用全局变量系统提供的SID,所以下面要这样写&".SID." echo "<a href='Demo01process.php?bookid=sn001&bookname=tlbb&PHPSESSID=$sid'>天龙八部</a> "; echo "<br/><a href='Demo01process.php?bookid=sn002&bookname=sgyy&PHPSESSID=$sid'>三国演绎</a>"; echo "<br/><a href='showCart.php?PHPSESSID=$sid'>查看商品列表</a>"; ? > ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * Demo01process.php ** ** ** ** * <?php echo "<br/> < h1 > ** ** ** ** ** ** ** 购买成功了, 放入session ** ** ** ** ** ** </h1> < br / > "; if (isset($_GET['PHPSESSID'])) { session_id($_GET['PHPSESSID']); } session_start(); $sid = session_id(); $bookid = $_GET['bookid']; $bookname = $_GET['bookname']; $_SESSION[$bookid] = $bookname; echo "<br/><hr>"; echo "<br/>购买商品成功"; echo "<br/><a href='index.php?PHPSESSID=$sid'>返回购物大厅继续购买</a>"; //这里返回就是关键,在把$sid传回到首页,首页在if判断,反正这个if判断哪里都有 ? > ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * 以上 下面是正常获得session操作 < ? php echo "<a href='Demo01process.php?bookid=sn001&bookname=tlbb'>天龙八部</a>"; echo "<br/><a href='Demo01process.php?bookid=sn002&bookname=sgyy'>三国演绎</a>"; echo "<br/><a href='showCart.php'>查看商品列表</a>"; ? > ** ** ** ** ** ** ** ** ** ** ** <?php echo "<br/> < h1 > ** ** ** ** ** ** ** 购买成功了, 放入session ** ** ** ** ** ** </h1> < br / > "; session_start(); $bookid = $_GET['bookid']; $bookname = $_GET['bookname']; $_SESSION[$bookid] = $bookname; echo "<br/><hr>"; echo "<br/>购买商品成功"; echo "<br/><a href='jsToDemo01.php'>返回购物大厅</a>"; ? > ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * <?php echo "<h1>购物商品列表</h1> "; session_start(); foreach($_SESSION as $key => $val) { echo "<br/>$key---$val"; } ? > ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 完成 ** ** ** * 下面是合法验证 login.php-- -- -- -- --loginProcess.php[ if (合法) 跳转并把信息保存到session]-- -- -- -- -- --logininfo(session) -- -- - 合法--才到-- - empManage.php -- -- -- -- -- -- -- -- -- - loginProcess.php不合法返回ogin.php 每个模式里面都有一个小文件里面都是常用的小函数cpmmon.php, 所以把验证的函数也封装到里面, 因为每个页面都要用 例: function checkUserValidate() { session_start(); if (empty($_SESSION['loginUser'])) { header("Location:index.php?errno=1"); //只要是没登录成功过的,都打回登录页面 } } ** ** ** ** ** ** ** ** 然后要防止的地方加上这个就可以 require_once 'common.php'; checkUserValidate(); 别忘了在用户名密码验证成功的地方 session_start(); $_SESSION['loginUser'] = $id_admin; 开启session
以上就是今天关于session的所有内容了,想了解更多Java入门相关知识的话请一直关注我们吧。