PHP会话机制之SESSION操作

session会话
1,一种会话技术
2,保存在服务器上的一个文件
3,session是基于session id的查询方式


session原理:用户第一次来访问服务器的时候,把登录信息存储到服务商的一个session文件中,并且产生一个sessionid号,并且会向客户端浏览器发送一个产生cookie文件的请求,将该sessionid好存储到该cookie当中,用户第二次访问的时候会携带一个sessionid号码,一起来访问服务器,服务器根据cookie中的sessionid号找到文件,从而获取到对应信息。


session的操作
a,添加session
session不允许有任何的输出
使用之前,先要开启session;
1,session_start();
2,添加值直接向$_SESSION()数组中
b,查找session
直接查询$_SESSION 数组即可
c,修改session
直接修改$_SESSION数组即可
d,删除session和删除文件
session_start();
$_SESSION=array();或者是$_SESSION=null;
/*
1,启动session
session_start();
session_start();第一次开才会产生一个文件
以后开启是不会产生文件的
2,清空数组
$_session=array();
3,删除cookie文件
setcookie(session_name(),'',time()-3600,"/");
4,删除session文件
session_destroy();
执行完上面四部会彻底清空
*/
将session信息植入空数组
c,设置session存活的时间
SESSION_ID(); session的id号码
SESSION_NAME(); session的名字
setcookie(session_name(),session_id(),time()+3600,"/");
设置session的有效期一小时和cookie设置类似。
默认情况下,添加session后,会产生一个保存sessionid的cookie,这时候的有效期是关闭浏览器,如果想延长设置session的时间,就使用
setcookie(session_name(),session_id(),time()+3600,"/");
session配置
在php.ini文件中,设置session.save_path="D:/sessiom"
就可以将session文件保存到d盘上
session文件是将数值序列化之后保存的
/*
session也可以如下设置,设置成二维数组甚至多维信息,保存信息
$_SESSION['admin']['username']=$username;
$_SESSION['admin']['id']=1;
$_SESSION['admin']['is_Login']=1;
*/
禁用cookoe的情况下,session传参
1,默认情况下,禁用cookie和session将无法使用
     每次有session_start()都会产生一个文件
     因为不知道是否是一个人创建的
2,解决办法:
1,我们可以在页面和页面之间通过get传参,
链接格式:1.php?session_name()."=".session_id();
参数不需要手动接收,可以使用session自动获取
2,直接在链接上添加.SID  它会自己判断浏览器是否支持,如果不支持它会自动加上session的id
示例:echo "<a href='3.php?".SID."'>个人中心</a>";
输出:
3.php?PHPSESSID=adhis0dp0hql51n00botn1eaq7&PHPSESSID=adhis0dp0hql51n00botn1eaq7
3,环境方面
如果设置了SID,可以SID号码,但是不能传递值,检查php.ini
session.user_only_cookies=1改成0即可
session.use_trans_sid = 1
检查以上两个参数
总结:
cookie和session的区别
1,cookie保存在客户端上,session是服务器上的
2,cookie设置值不能直接对数组赋值,必须使用setcookie对cookie进行设置
3,$_session是可以直接对数组进行赋值,但是必须开session_start();
4,cookie删除时需要使用setcookie对cookie的值进行设置,而$_session是直接将数组进行清空即可
5,cookie修改必须用setcookie修改即可
6,$_session直接进行赋值修改即可
联系:

1,session是将sessionid号保存在cookie中的,如果客户端禁止cookie,将无法使用。但是可以根据get传值就行

<?php 
header("content-type: text/html; charset=utf-8");

 ?>
 <!DOCTYPE html>
 <html lang="en">
 <head>
 	<meta charset="UTF-8">
 	<title>Document</title>
 </head>
 <body>
 	<form action="2.php" method="post">
		姓名<input type="text" name="username">
		密码<input type="text" name="password">
		<input type="submit" value="提交">
 	</form>
 </body>
 </html>
<?php  
header("content-type:text/html; charset=utf-8");

$username=$_POST['username'];
$password=$_POST['password'];
if($username=='admin'){
	session_start();
	$_SESSION['username']=$username;
	$_SESSION['password']=$password;
	echo "<a href='3.php?".SID."'>个人中心</a>";
}else{
	echo "登录失败";
}
?>
<?php 
header("content-type:text/html; charset=utf-8");
session_start();
if(empty($_SESSION['username'])){
	echo $_SESSION['username'];
}
var_dump($_SESSION);
var_dump($_SESSION['username']);
echo $_SESSION['username'];




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值