PHP的会话控制

时间:2023-12-23 17:04:44

页面数据的作用域:

当前页共享数据:变量、常量

两个页面间传递数据:get,post

跟踪用户的多页面数据共享(会话):session、cookie

全局数据共享:文件、数据库、memcached

Cookie:

数据存储在浏览器文件中

数据通过请求头携带信息(Cookie:)进行页面cookie数据传递

基本使用:

 //设置cookie 参数(键,值,时间)
//时间不写或者为0,则会保存至关闭浏览器程序
//时间其他值为xx秒
setcookie("dong","dongxiaodong");
//保存一天,时间参数:当前时间戳+24小时*60分*60秒
setcookie("xiao1","wa wa wa",time()+24*60*60);
//数组数据
//获取:echo $_COOKIE["dong"]["d1"];
//数组键若留空,不可自动增长
setcookie("dong[d1]","dong11111"); //若cookie为第一次设置,则不可在当前页得到值
//以下为下一页内容
//-----------------------------
//打印所有
print_r($_COOKIE); echo $_COOKIE["xiao1"];
echo $_COOKIE["dong"]["d1"]; //删除cookie
//当前页第一次设置不可使用,时间小于当前时间则过期无效
setcookie("dong","",time()-10);

Session:

数据默认保存在服务器文件中

基本使用:

 //开启session
//将会向客户端发送一个sessionID,保存在客户端cookie中
session_start(); //得到sessionID的键
echo session_name();
//得到sessionID的值
//echo session_id(); //保存数据
$_SESSION["dong"]="dongxiaodong123";
//可在当前页获取数据
echo $_SESSION["dong"]; //清除某个数据
unset($_SESSION["dong"]);
//清除所有数据
$_SESSION=array(); //销毁session,删除服务器保存的session文件
session_destroy(); //自动保存的sessionID
//以下为下一页内容
//---------------------------------------------
//得到本地保存的sessionID
//echo $_COOKIE["PHPSESSID"];

服务器中Session保存位置:

PHP的会话控制

内容查看:

PHP的会话控制

解决客户端浏览器禁用Cookie

当客户端浏览器禁用cookie后服务器在客户端对应cookie中没有保存sessionID,所以当客户端页面刷新或者跳转时会重新生成session数据,即每次都会产生不同的sessionID,所以其数据可认为不能被共享。

解决方法是使用常量SID判断客户端的cookie是否被禁用,而自动匹配数据传递

起始页代码:

 session_start();
$_SESSION["dong"]="dongxiaodong1233";
//页面跳转携带使用SID可动态更加客户端有没有设置禁止cookie传递参数
echo "<a href='wan11.php?".SID."'>tiaotiao</a>";

第二页:

 //手动设置sessionID
//cookie被禁用时使用get传递sessionID时使用
if(!empty($_GET[session_name()])){
//设置sessionID
session_id($_GET[session_name()]);
}
session_start();
//获取sessionID对应的数据
echo $_SESSION["dong"];

使用memcache对session进行高效缓存:

第一步:管理员运行cmd,打开memcache服务器

PHP的会话控制

第二步:设置保存方式为memcache

PHP的会话控制

第三步:设置连接地址

PHP的会话控制

第四步:

重启web服务器,即可常规使用session即可

JSON数据的编码与解码:

编码json:$字符串名=json_encode($数组名);

解码json1:$对象=json_decode($json字符串);访问为$对象->原数组下标

解码json2:$数组=json_decode($json字符串,true);访问为$数组[‘数组下标’]

 简单的加密和解码:

         $passwd="123456";

         //md5加密,每次得到的结果是一样的,不可逆
echo "<br/>md5加密:".md5($passwd); //sha1加密,每次得到的结果一样,不可逆
echo "<br/>sha1加密:".sha1($passwd); //base64_encode加密,可逆
$bas_passwd=base64_encode ($passwd);//加密
echo "<br/>base64加密:".$bas_passwd;
echo "<br/>base64解密:".base64_decode($bas_passwd);//解密 //多重加密
$bas_passwd2=base64_encode (md5($passwd));//md5加密然后再base64加密
echo "<br/>base64加密:".$bas_passwd2;//输出加密后的结果
echo "<br/>base64解密:".base64_decode($bas_passwd2);//得到md5加密的值

页面跳转:

 //立即跳转
//header("Location:main.php");
//echo '<script>location="main.php"</script>'; //3秒后跳转
//echo '<script>setTimeout(\'location="main.php"\',3000)</script>'; //提示后跳转
echo "<script>alert('确定跳转页面');window.location.href='main.php';</script>";