页面数据的作用域:
当前页共享数据: 变量, 常量
两个页面间传递数据: 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 保存位置:
内容查看:
解决客户端浏览器禁用 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 服务器
第二步: 设置保存方式为 memcache
第三步: 设置连接地址
第四步:
重启 web 服务器, 即可常规使用 session 即可
JSON 数据的编码与解码:
编码 JSON:$ 字符串名 = json_encode($ 数组名);
解码 json1:$ 对象 = json_decode($JSON 字符串); 访问为 $ 对象 ->原数组下标
解码 json2:$ 数组 = json_decode($JSON 字符串, true); 访问为 $ 数组['数组下标']
页面跳转:
- // 立即跳转
- //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>";
来源: https://www.cnblogs.com/dongxiaodong/p/10123103.html