页面数据的做用域:php
当前页共享数据:变量、常量web
两个页面间传递数据:get,post数据库
跟踪用户的多页面数据共享(会话):session、cookiejson
全局数据共享:文件、数据库、memcached数组
Cookie:浏览器
数据存储在浏览器文件中缓存
数据经过请求头携带信息(Cookie:)进行页面cookie数据传递服务器
基本使用:cookie
1 //设置cookie 参数(键,值,时间) 2 //时间不写或者为0,则会保存相当闭浏览器程序 3 //时间其余值为xx秒 4 setcookie("dong","dongxiaodong"); 5 //保存一天,时间参数:当前时间戳+24小时*60分*60秒 6 setcookie("xiao1","wa wa wa",time()+24*60*60); 7 //数组数据 8 //获取:echo $_COOKIE["dong"]["d1"]; 9 //数组键若留空,不可自动增加 10 setcookie("dong[d1]","dong11111"); 11 12 //若cookie为第一次设置,则不可在当前页获得值 13 //如下为下一页内容 14 //----------------------------- 15 //打印全部 16 print_r($_COOKIE); 17 18 echo $_COOKIE["xiao1"]; 19 echo $_COOKIE["dong"]["d1"]; 20 21 //删除cookie 22 //当前页第一次设置不可以使用,时间小于当前时间则过时无效 23 setcookie("dong","",time()-10);
Session:session
数据默认保存在服务器文件中
基本使用:
1 //开启session 2 //将会向客户端发送一个sessionID,保存在客户端cookie中 3 session_start(); 4 5 //获得sessionID的键 6 echo session_name(); 7 //获得sessionID的值 8 //echo session_id(); 9 10 //保存数据 11 $_SESSION["dong"]="dongxiaodong123"; 12 //可在当前页获取数据 13 echo $_SESSION["dong"]; 14 15 //清除某个数据 16 unset($_SESSION["dong"]); 17 //清除全部数据 18 $_SESSION=array(); 19 20 //销毁session,删除服务器保存的session文件 21 session_destroy(); 22 23 //自动保存的sessionID 24 //如下为下一页内容 25 //--------------------------------------------- 26 //获得本地保存的sessionID 27 //echo $_COOKIE["PHPSESSID"];
服务器中Session保存位置:
内容查看:
解决客户端浏览器禁用Cookie
当客户端浏览器禁用cookie后服务器在客户端对应cookie中没有保存sessionID,因此当客户端页面刷新或者跳转时会从新生成session数据,即每次都会产生不一样的sessionID,因此其数据可认为不能被共享。
解决方法是使用常量SID判断客户端的cookie是否被禁用,而自动匹配数据传递
起始页代码:
1 session_start(); 2 $_SESSION["dong"]="dongxiaodong1233"; 3 //页面跳转携带使用SID可动态更加客户端有没有设置禁止cookie传递参数 4 echo "<a href='wan11.php?".SID."'>tiaotiao</a>";
第二页:
1 //手动设置sessionID 2 //cookie被禁用时使用get传递sessionID时使用 3 if(!empty($_GET[session_name()])){ 4 //设置sessionID 5 session_id($_GET[session_name()]); 6 } 7 session_start(); 8 //获取sessionID对应的数据 9 echo $_SESSION["dong"];
使用memcache对session进行高效缓存:
第一步:管理员运行cmd,打开memcache服务器
第二步:设置保存方式为memcache
第三步:设置链接地址
第四步:
重启web服务器,便可常规使用session便可
JSON数据的编码与解码:
编码json:$字符串名=json_encode($数组名);
解码json1:$对象=json_decode($json字符串);访问为$对象->原数组下标
解码json2:$数组=json_decode($json字符串,true);访问为$数组[‘数组下标’]
简单的加密和解码:
1 $passwd="123456"; 2 3 //md5加密,每次获得的结果是同样的,不可逆 4 echo "<br/>md5加密:".md5($passwd); 5 6 7 //sha1加密,每次获得的结果同样,不可逆 8 echo "<br/>sha1加密:".sha1($passwd); 9 10 11 //base64_encode加密,可逆 12 $bas_passwd=base64_encode ($passwd);//加密 13 echo "<br/>base64加密:".$bas_passwd; 14 echo "<br/>base64解密:".base64_decode($bas_passwd);//解密 15 16 //多重加密 17 $bas_passwd2=base64_encode (md5($passwd));//md5加密而后再base64加密 18 echo "<br/>base64加密:".$bas_passwd2;//输出加密后的结果 19 echo "<br/>base64解密:".base64_decode($bas_passwd2);//获得md5加密的值
页面跳转:
1 //当即跳转 2 //header("Location:main.php"); 3 //echo '<script>location="main.php"</script>'; 4 5 //3秒后跳转 6 //echo '<script>setTimeout(\'location="main.php"\',3000)</script>'; 7 8 9 //提示后跳转 10 echo "<script>alert('肯定跳转页面');window.location.href='main.php';</script>";