Blogger Information
Blog 40
fans 0
comment 0
visits 27856
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
PHP基础:COOKIE/SESSION和命名空间
初见
Original
487 people have browsed it
  • 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. }
Correcting teacher:PHPzPHPz

Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post