博客列表 >PHP基础:COOKIE/SESSION和命名空间

PHP基础:COOKIE/SESSION和命名空间

初见
初见原创
2021年10月23日 22:55:12484浏览
  • COOKIE
  1. //COOKIE 存在浏览器中 存在用户电脑中的 储存大小限制
  2. //setcookie(name, value, expire, path, domain, secure);
  3. /* name -- cookie的名字
  4. * value -- cookie的值,存放在客户端,不要存放敏感数据
  5. * expire -- Cookie 过期的时间。这是个 Unix 时间戳,即从 Unix 纪元开始的秒数。
  6. * path -- Cookie 在服务器端的有效路径。
  7. * domain -- 该 cookie 有效的域名。
  8. * secure -- 指明 cookie 是否仅通过安全的 HTTPS 连接传送。
  9. * 当设成 TRUE 时,cookie 仅在安全的连接中被设置。默认值为FALSE。
  10. */
  11. //创建cookie
  12. setcookie('name','ouyangke', time()+3600);//第一次存无法获取数据
  13. // 储存数组
  14. setcookie('php[id]',10);
  15. setcookie('php[name]','ouyangke');
  16. //Array ( [php] => Array ( [id] => 10 [name] => ouyangke )
  17. //删除
  18. setcookie('name','ouyangke', time()-3600);

//数组只能删除值
setcookie(‘php[id]’,’ouyangke’, time()-3600);

  • SESSION
  1. //SESSION 存在服务器上的 是基于COOKIE储存大小无限制
  2. //在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
  3. //session_start() 函数必须位于 <html> 标签之前
  4. //启动会话
  5. session_start();
  6. //存储 Session 变量
  7. $_SESSION['views']=1;
  8. $_SESSION['name']='Joy';
  9. //Array ( [views] => 1 [name] => Joy )
  10. //销毁 Session
  11. //如果您希望删除某些 session 数据,可以使用 unset() 或 session_destroy() 函数。
  12. unset($_SESSION['views']);//unset() 函数用于释放指定的 session 变量
  13. session_unset(); //先清空了变量的值 释放内存中的变量 session 被注销了
  14. //通过调用 session_destroy() 函数彻底销毁 session
  15. session_destroy(); //先注销了 再删除但是内存中变量和值是存在的
  16. // 常用函数
  17. //1.session_start — 启动新会话或者重用现有会话
  18. //2.session_status() —用于返回当前会话状态。
  19. //返回值
  20. //PHP_SESSION_DISABLED 会话是被禁用的。
  21. //PHP_SESSION_NONE 会话是启用的,但不存在当前会话。
  22. //PHP_SESSION_ACTIVE 会话是启用的,而且存在当前会话。
  23. //
  24. //3.session_abort()----放弃会话数组更改并完成会话
  25. //4.session_id ()—获取会话id
  26. //5.session_name ();返回当前会话名称。如果指定 name 参数,那么此函数会更新会话名称,并且 返回 原来的 会话名称
  27. //6.session_unset ();无参数释放当前会话注册的所有会话变量
  28. // 其他函数
  29. //session_cache_expire — 返回当前缓存的到期时间
  30. //session_cache_limiter — 读取/设置缓存限制器
  31. //session_commit — session_write_close 的别名
  32. //session_create_id — Create new session id
  33. //session_decode — 解码会话数据
  34. //session_destroy — 销毁一个会话中的全部数据
  35. //session_encode — 将当前会话数据编码为一个字符串
  36. //session_gc — Perform session data garbage collection
  37. //session_get_cookie_params — 获取会话 cookie 参数
  38. //session_module_name — 获取/设置会话模块名称
  39. //session_regenerate_id — 使用新生成的会话 ID 更新现有会话 ID
  40. //session_register_shutdown — 关闭会话
  41. //session_reset — Re-initialize session array with original values
  42. //session_save_path — 读取/设置当前会话的保存路径
  43. //session_set_cookie_params — 设置会话 cookie 参数
  44. //session_set_save_handler — 设置用户自定义会话存储函数
  45. //session_write_close — Write session data and end session
  • 实例演示
  1. //判断是否登录
  2. if(empty($_COOKIE['id'])){
  3. echo '<script>window.location.href="login.php";</script>';
  4. exit;
  5. }
  1. //登录页面
  2. <!doctype html>
  3. <html lang="en">
  4. <head>
  5. <meta charset="UTF-8">
  6. <meta name="viewport"
  7. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  8. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  9. <title>用户登录</title>
  10. <link rel="stylesheet" href="list.css">
  11. </head>
  12. <body>
  13. <h2>用户登录</h2>
  14. <form action="" method="post" >
  15. <!-- <form action="" method="post" onsubmit="return false">-->
  16. <div class="adds">
  17. <div class="tli" id="tips" style="color: red"> </div>
  18. <div class="tli">
  19. <label for="name">账号:</label>
  20. <input type="text" id="name" name="name" placeholder="请输入用户名" required autofocus value=""/>
  21. </div>
  22. <div class="tli">
  23. <label for="name">密码:</label>
  24. <input type="password" id="pass" name="pass" placeholder="请输入密码" required value=""/>
  25. </div>
  26. <div class="tli">
  27. <button type ="button" onclick="check(this.form)">登录</button>
  28. </div>
  29. </div>
  30. </form>
  31. </body>
  32. </html>
  33. <script>
  34. function check(ele){
  35. //1、获取表单上的账号和密码
  36. let acc= ele.name.value.trim();
  37. let pass= ele.pass.value.trim();
  38. if(acc.length === 0|| pass.lenth === 0){
  39. document.getElementById('tips').innerHTML = "请输入账号和密码";
  40. return false;
  41. }
  42. //2、把账号密码加密成json数据
  43. let user =JSON.stringify({name:acc,pass:pass});
  44. //3、把数据提交到接口中
  45. fetch('check.php',{method:'post',body : user})
  46. .then(response=>response.json())
  47. .then(json=>{
  48. if(json.status != 0){
  49. document.getElementById('tips').innerHTML = json.msg;
  50. return false;
  51. }
  52. document.getElementById('tips').innerHTML = "登录成功,等待跳转";
  53. setTimeout($=>(window.location.href="list.php"),1000)
  54. })
  55. }
  56. </script>
  1. //验证页面
  2. <?php
  3. header('Content-Type:application/json');
  4. require_once 'fun.php';
  5. $data = trim(file_get_contents('php://input'));
  6. //print_r($data);
  7. $user= json_decode($data,true);
  8. $find= find('user','*','name="'.$user['name'].'"');
  9. if(empty($find)){
  10. echo json_encode(['status'=>1,'msg'=>'账号错误']);
  11. exit;
  12. }
  13. //print_r($find['id']);
  14. //if($find['name']!= $user['name']){
  15. // echo json_encode(['status'=>1,'msg'=>'账号错误']);
  16. //}
  17. elseif($find['pass']!= md5($user['pass'])){
  18. echo json_encode(['status'=>1,'msg'=>'密码错误']);
  19. exit;
  20. }
  21. else{
  22. echo json_encode(['status'=>0,'msg'=>'登录成功']);
  23. setcookie('id',$find['id']);
  24. setcookie('name',$find['name']);
  25. }
  26. ?>
  1. //退出页面
  2. <?php
  3. if(empty($_COOKIE['id'])){
  4. echo '<script>window.location.href="login.php";</script>';
  5. exit;
  6. }else{
  7. setcookie('id',$_COOKIE['id'],time()-3600);
  8. setcookie('name',$_COOKIE['name'],time()-3600);
  9. echo '<script>window.location.href="login.php";</script>';
  10. }
  • session实战
  1. session_start();// 开启会话
  2. //判断是否登录
  3. if(empty($_SESSION['id'])){
  4. echo '<script>window.location.href="login.php";</script>';
  5. exit;
  6. }
  1. //登录页面
  2. <?php
  3. session_start();// 开启会话
  4. if(!empty($_SESSION['id'])){
  5. echo '<script>window.location.href="list.php";</script>';
  6. exit;
  7. }
  8. ?>
  9. <!doctype html>
  10. <html lang="en">
  11. <head>
  12. <meta charset="UTF-8">
  13. <meta name="viewport"
  14. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  15. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  16. <title>用户登录</title>
  17. <link rel="stylesheet" href="list.css">
  18. </head>
  19. <body>
  20. <h2>用户登录</h2>
  21. <form action="" method="post" >
  22. <!-- <form action="" method="post" onsubmit="return false">-->
  23. <div class="adds">
  24. <div class="tli" id="tips" style="color: red"> </div>
  25. <div class="tli">
  26. <label for="name">账号:</label>
  27. <input type="text" id="name" name="name" placeholder="请输入用户名" required autofocus value=""/>
  28. </div>
  29. <div class="tli">
  30. <label for="name">密码:</label>
  31. <input type="password" id="pass" name="pass" placeholder="请输入密码" required value=""/>
  32. </div>
  33. <div class="tli">
  34. <button type ="button" onclick="check(this.form)">登录</button>
  35. </div>
  36. </div>
  37. </form>
  38. </body>
  39. </html>
  40. <script>
  41. function check(ele){
  42. //1、获取表单上的账号和密码
  43. let acc= ele.name.value.trim();
  44. let pass= ele.pass.value.trim();
  45. if(acc.length === 0|| pass.lenth === 0){
  46. document.getElementById('tips').innerHTML = "请输入账号和密码";
  47. return false;
  48. }
  49. //2、把账号密码加密成json数据
  50. let user =JSON.stringify({name:acc,pass:pass});
  51. //3、把数据提交到接口中
  52. fetch('check.php',{method:'post',body : user})
  53. .then(response=>response.json())
  54. .then(json=>{
  55. if(json.status != 0){
  56. document.getElementById('tips').innerHTML = json.msg;
  57. return false;
  58. }
  59. document.getElementById('tips').innerHTML = "登录成功,等待跳转";
  60. setTimeout($=>(window.location.href="list.php"),1000)
  61. })
  62. }
  63. </script>
  1. //验证页面
  2. <?php
  3. header('Content-Type:application/json');
  4. session_start();// 开启会话
  5. require_once 'fun.php';
  6. $data = trim(file_get_contents('php://input'));
  7. //print_r($data);
  8. $user= json_decode($data,true);
  9. $find= find('user','*','name="'.$user['name'].'"');
  10. if(empty($find)){
  11. echo json_encode(['status'=>1,'msg'=>'账号错误']);
  12. exit;
  13. }
  14. //print_r($find['id']);
  15. //if($find['name']!= $user['name']){
  16. // echo json_encode(['status'=>1,'msg'=>'账号错误']);
  17. //}
  18. elseif($find['pass']!= md5($user['pass'])){
  19. echo json_encode(['status'=>1,'msg'=>'密码错误']);
  20. exit;
  21. }
  22. else{
  23. echo json_encode(['status'=>0,'msg'=>'登录成功']);
  24. // setcookie('id',$find['id']);
  25. $_SESSION['id']=$find['id'];
  26. // setcookie('name',$find['name']);
  27. $_SESSION['name']=$find['name'];
  28. }
  29. ?>
  1. //注销登录
  2. <?php
  3. session_start();// 开启会话
  4. //判断session
  5. if(empty($_SESSION['id'])){
  6. echo '<script>window.location.href="login.php";</script>';
  7. exit;
  8. }else{
  9. session_unset();
  10. echo '<script>window.location.href="login.php";</script>';
  11. }

命名空间

  • namespace
  1. //命名空间 namespace
  2. namespace one;
  3. function php(){
  4. return '我是one 空间的php函数';
  5. }
  6. namespace two;
  7. function php(){
  8. return '我是two 空间的php函数';
  9. }
  10. echo \one\php(); //我是one 空间的php函数
  11. echo '<hr />';
  12. echo php(); //我是two 空间的php函数
  13. echo '<hr />';
  • 变量,类,函数,命名空间 四大类
  1. // 变量,类,函数,命名空间 四大类
  2. namespace {
  3. $name = '小明';
  4. //跟空间命名
  5. function php(){
  6. return '我是根空间的php函数';
  7. }
  8. class Title
  9. {
  10. }
  11. }
  12. namespace one{
  13. $name = '小花';
  14. function php(){
  15. return '我是one空间的php函数';
  16. }
  17. class Title
  18. {
  19. }
  20. }
  21. namespace two{
  22. $name = '小花';
  23. function php(){
  24. return '我是two空间的php函数';
  25. }
  26. class Title
  27. {
  28. }
  29. echo '<hr />';
  30. echo \one\php();
  31. echo '<hr />';
  32. echo \php();
  33. //必须在{}内访问
  34. }
  35. //echo \one\php(); 无法在{}外访问
  • 一个文件,一个类,一个命名空间
  1. //一个文件,一个类,一个命名空间
  2. //命名空间namespace 放在代码第一行,但可以放在严谨函数下一行
  3. namespace one;
  4. $name = '小明';
  5. //跟空间命名
  6. function php(){
  7. return '我是根空间的php函数';
  8. }
  9. class Title
  10. {
  11. }
  • 子命名空间
  1. declare (strict_types = 1); //严谨模式
  2. namespace one{
  3. $name = '小明';
  4. //跟空间命名
  5. function php(){
  6. return '我是根空间的php函数';
  7. }
  8. class Title
  9. {
  10. }
  11. }
  12. namespace one\php{
  13. }
  14. namespace one\php\not{
  15. }
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议