使用$_SESSION设置和读取Session (PHP)

Session的中文是会话的意思,在Web编程中Session代表服务器与客户端之间的“会话”,意思是服务器与客户端在不断的交流。
在PHP中,使用$_SESSION[]可以存储特定用户的Session信息。并且每个用户的Session信息都是不同的。
当用户请求网站中任意一个页面时,若用户未建立Session对象,则服务器会自动为用户创建一个Session对象,它包含唯一的SessionID和其他Session变量,并保存在服务器内存中,不同用户的Session对象存着各自指定的信息。

Session信息的存储与读取

session_start(); //开启Session功能
session_id();//获取用户Session ID值,如需修改在括号中传值即可

利用Session变量存储信息:
$_SESSION["Session名称"]=变量或字符串信息;

读取Session变量信息(可赋值给一个变量或者直接输出):
变量=$_SESSION["Session名称"];

说明:
(1)使用Session前都需要在页面开头用session_start()方法开启Session功能。
(2)session_start()函数前不能有任何代码输出到浏览器,最好加在页面头部,或者先用ob_start()函数打开输出缓冲区。
(3)对于一个不存在的Session变量赋值,将自动创建该变量;给一个已经存在的Session变量赋值,将修改其中的值。
(4)如果新打开一个浏览器,则无法获取之前保存的Session信息。因为新打开一个浏览器相当于一个新的用户在访问。
(5)只要创建了Session变量,该Session变量就能被网站中所有页面访问。
(6)最好不要把大量的信息存入Session变量中,或者创建很大Session变量。如果Session变量保存的信息太多,同时访问网站的用户又很多会非常占用服务器资源。

演示代码:

//test1.php
";
	echo "用户名:{$_SESSION['name']} 
密码:{$_SESSION['password']}"; ?> //test2.php "; echo "用户名:{$_SESSION['name']}
密码:{$_SESSION['password']}"; ?>

运行截图

使用$_SESSION设置和读取Session (PHP)_第1张图片

使用$_SESSION设置和读取Session (PHP)_第2张图片

Session的生命期

Session对象的生命期指的是从用户在Session有效期内第一次访问网站直到不再访问网站为止的这段时间。

设置Session有效期:
ini_set('session_save_path','/tmp/');//设置保存路径
ini_set('session.gc_maxlifetime',60);//保存1分钟
setcookie(session_name(),session_id(),time()+6,"/");//设置会话cookie的过期时间
 
说明:
(1)关闭浏览器不会使一个Session结束,但会使这个Session永远无法访问。因为当用户打开新的浏览器窗口又会产生一个新的Session。
(2)Session对象不是一直有效,默认有效期为24分钟。
(3)增加Session的有效期会导致Web服务器保存用户Session的信息的时间增长,如果访问的用户很多,会加重服务器负担。
(4)不能单独对某个用户的Session设置有效期。

删除和销毁Session
删除Session常用来实现用户注销的功能,使得用户能够安全退出网站。
 
session_unset();//删除$_SESSION中所有session变量
session_destroy();//清除Session ID

说明:
(1)session_unset函数只能删除$_SESSION[]中的所有元素,不能删除对应的Session ID,也不能删除保存Session ID的文件。
(2)session_destroy函数只能删除Session ID,并销毁Session文件,但是不能删除$_SESSION[]中的所有元素。
(3)unset()方法也可以删除单个Session变量。

利用Session限制未登入用户访问(演示代码)

//login.php

	
		登入
	
	
		
					

帐号:

密码:

'; } else{ $name=$_POST["name"]; $pw=$_POST["pw"]; if($name=="admin"&&$pw==123456) { $_SESSION["name"]=$name; $_SESSION["pw"]=$pw; echo '登入成功,查看个人信息'; } else{ echo '帐号或密码错误!返回登入'; } } ?> //test.php "; echo "用户名:".$_SESSION["name"]."
"; echo "密码:".$_SESSION["pw"]."
"; echo '注销'; }else{ echo '未登入用户不允许访问,请登入'; } ?> //logout.php

运行截图

使用$_SESSION设置和读取Session (PHP)_第3张图片

使用$_SESSION设置和读取Session (PHP)_第4张图片

使用$_SESSION设置和读取Session (PHP)_第5张图片

使用$_SESSION设置和读取Session (PHP)_第6张图片

你可能感兴趣的:(php)