PHP会话控制

简述
http协议是无状态的。那个浏览器如何区分每个用户呢?php会话控制会给每一个用户一把钥匙(加密的session_id).同时这个也是用户的一个标识,服务器端存放这把钥匙的所有信息(数据库、文件、内存数据库)。

那么这把钥匙放到那呢?两种方法:

1是存在每个url中
2是存在会话中,也就是常说的cookie.

传统的php session使用


//test1.php 启动一个会话并注册一个变量
session_start();
$_SESSION['user_var'] = "hello,codekissyoung!";
//这里的可以将$_SESSION理解为用户的箱子,实际的实现是php在服务器端生成的小文件
?>

//test2.php
session_start();
echo $_SESSION['user_var'];//通过钥匙访问自己的箱子内的变量
$_SESSION['user_var'] = "bey,codekissyoung!";
?>

//test3.php 销毁钥匙,一般在用户注销时,访问test3.php文件
session_start();
session_destroy();
?>

当你访问test1.php时候,当运行到session_start()的时候。php会根据此时的条件(用户ip,浏览器编号,时间等)去生成一个php session_id。当heep response 会客户端后。这个session_id就存到你的浏览器cookie了。每次当你访问这个url路由的时候,该session就会返回到服务器端,而这么session_id就是刚才所说的钥匙了。

怎么实现php跨域操作->session共享
多个子系统公用一套验证体系。即在一处登录后,其他部分不用登录,即可访问。
假设用户在A服务器上拿到一把钥匙。并且用这把钥匙去开B服务器上的箱子。结果呢?当然不行。
解决方案:简单说一下思路。用户无论访问A还是B都会生成一把钥匙,我们把钥匙放到C服务器上。每次访问A或者B的时候,都先去C上验证是否OK。OK的话,就打开箱子。

你可能感兴趣的:(php)