博主信息
博文 49
粉丝 0
评论 3
访问量 35680
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
实例演示设置cookie与session以及登录,验证,注册与退出
P粉479712293
原创
1410人浏览过

1.demo1.php文件:

  1. <?php
  2. // *设置客户端cookie
  3. namespace _221206a;
  4. // *设置客户端cookie
  5. setcookie('site','php中文网');
  6. // *查看
  7. echo $_COOKIE['site'].'<br>';

2.浏览器效果图:

1.php文件:

  1. <?php
  2. // *采用setrawcookie()在客户端设置单个及多个cookie
  3. namespace _221206b;
  4. // *1 采用setrawcookie()设置单个cookie
  5. setrawcookie('site', 'php中文网');
  6. // *2. 查看
  7. echo $_COOKIE['site'].'<br>'?? '未定义site<br>' .'<br>';
  8. //* 3.采用setrawcookie()多个cookie
  9. setrawcookie('user[name]', 'admin');
  10. setrawcookie('user[email]', 'admin@qq.com');
  11. setrawcookie('user[age]', 40);
  12. // *如果有一个user数组的cookie存在,则遍历数组中每个键,并打印出该键及键值
  13. if (isset($_COOKIE['user'])) {
  14. foreach ($_COOKIE['user'] as $key=>$value) {
  15. printf('[%s] => %s<br>', $key, $value);
  16. }
  17. } else {
  18. echo '未定义user';
  19. }
  20. // *删除cookie
  21. // setcookie('site', 'php中文网',time()-3600);
  22. // setcookie('user[name]', 'admin',time()-3600);
  23. // setcookie('user[email]', 'admin@qq.com',time()-3600);
  24. // setcookie('user[age]', 40,time()-3600);

2.浏览器效果图:

题目3:会话

1.php文件:

  1. <?php
  2. // *会话
  3. namespace _221206c;
  4. // *1.启动会话
  5. session_start();
  6. // *2.会话
  7. $_SESSION['email']='admin@php.cn';
  8. $_SESSION['password']=sha1(md5('123456'));
  9. // *3更新(修改)会话
  10. // $_SESSION['email']='guangyunchang@php.cn';
  11. // *4删除会话
  12. // session_unset();

2.浏览器效果图:

题目4:样式文件:

1.index.css文件:

  1. nav {
  2. height: 40px;
  3. background-color: deepskyblue;
  4. padding: 0 20px;
  5. display: flex;
  6. justify-content: space-between;
  7. align-items: center;
  8. }
  9. nav > a {
  10. color: white;
  11. text-decoration: none;
  12. }

2.style.css文件:

  1. body {
  2. display: flex;
  3. flex-direction: column;
  4. text-align: center;
  5. color: #555;
  6. font-weight: 300;
  7. /* background-color: lightcyan; */
  8. background: linear-gradient(to left, lightcyan, white);
  9. }
  10. body h3 {
  11. font-weight: 300;
  12. font-size: 20px;
  13. margin-bottom: 10px;
  14. }
  15. body form {
  16. width: 240px;
  17. padding: 20px;
  18. box-sizing: border-box;
  19. background: linear-gradient(to left top, lightskyblue, white);
  20. color: white;
  21. text-shadow: 0.5px 0.5px 0.5px #000;
  22. margin: auto;
  23. border-radius: 5px;
  24. box-shadow: 0 0 5px #aaa;
  25. }
  26. body form > div {
  27. height: 36px;
  28. display: flex;
  29. justify-content: space-between;
  30. align-items: center;
  31. }
  32. body form div:last-of-type {
  33. display: flex;
  34. justify-content: center;
  35. }
  36. body form input {
  37. border: none;
  38. outline: none;
  39. padding-left: 5px;
  40. height: 20px;
  41. }
  42. body form input:hover {
  43. box-shadow: 0 0 5px #aaa;
  44. }
  45. body form button {
  46. flex: auto;
  47. height: 30px;
  48. background-color: green;
  49. color: white;
  50. border: none;
  51. outline: none;
  52. }
  53. body form button:hover {
  54. background-color: lightcoral;
  55. cursor: pointer;
  56. box-shadow: 0 0 5px #aaa;
  57. }
  58. body a {
  59. color: #888;
  60. text-decoration: none;
  61. margin-top: 15px;
  62. }
  63. body a:hover {
  64. color: lightcoral;
  65. font-weight: bold;
  66. }

题目5:对登录,退出,注册的操纵

1.handle.php文件:

  1. <?php
  2. namespace _221206d;
  3. use PDO;
  4. // *开启会话:必须写在顶部
  5. session_start();
  6. //*连接数据库
  7. $db = new PDO('mysql:dbname=phpedu1', 'root', 'root');
  8. // *$stmt:对sql语句进行预处理对象
  9. $stmt = $db->prepare('SELECT * FROM `user`;');
  10. // *如果执行成功,则获取user的全部关联数据
  11. if ($stmt->execute()) {
  12. $users = $stmt->fetchAll(PDO::FETCH_ASSOC);
  13. } else {
  14. // *反之获取其犯错信息
  15. print_r($stmt->errorInfo());
  16. }
  17. // *获取用户操作类型(转为小写)
  18. $action = strtolower($_GET['action']);
  19. switch ($action) {
  20. // *1. 登录
  21. // *当为登录时
  22. case 'login':
  23. if ($_SERVER['REQUEST_METHOD'] === 'POST') {
  24. // *获取登录用户的数据:邮箱和密码
  25. $email= $_POST['email'];
  26. $password= sha1($_POST['password']);
  27. $result = array_filter($users, function ($user) use ($email, $password) {
  28. return $user['email'] === $email && $user['password'] === $password;
  29. });
  30. if (count($result) === 1) {
  31. //* 登录成功,写入session
  32. $_SESSION['user'] = serialize(array_pop($result));
  33. exit('<script>alert("验证通过");location.href="index.php"</script>');
  34. }
  35. // echo '请求类型错误'; die;
  36. exit('请求类型错误或还未注册');
  37. }
  38. // *2. 退出
  39. //*不需break
  40. case 'logout':
  41. if (isset($_SESSION['user'])) {
  42. session_destroy();
  43. exit('<script>alert("退出成功");location.href="index.php"</script>');
  44. }
  45. // *注册
  46. // *no break
  47. case 'register':
  48. //* 1. 获取新用户的数据
  49. $email= $_POST['email'];
  50. $name= $_POST['name'];
  51. $password= sha1($_POST['p2']);
  52. $register_time = time();
  53. //* 2. sql
  54. $sql = <<< SQL
  55. INSERT `user`
  56. SET `name`= ?,
  57. `email`= ?,
  58. `password`= ?,
  59. `register_time`= ?;
  60. SQL;
  61. $stmt = $db->prepare($sql);
  62. $data = [$name,$email,$password, $register_time];
  63. if ($stmt->execute($data)) {
  64. if ($stmt->rowCount() > 0) {
  65. // 注册成功之后,让用户自动登录
  66. $sql='SELECT * FROM `user` WHERE `id` = ' . $db->lastInsertId();
  67. $stmt = $db->prepare($sql);
  68. $stmt->execute();
  69. $newUser =$stmt->fetch(PDO::FETCH_ASSOC);
  70. $_SESSION['user'] = serialize($newUser);
  71. exit('<script>alert("注册成功");location.href="index.php"</script>');
  72. } else {
  73. exit('<script>alert("注册失败");location.href="register.php"</script>');
  74. }
  75. } else {
  76. print_r($stmt->errorInfo());
  77. }
  78. // *no break
  79. default:
  80. exit('参数非法或未定义操作');
  81. }

2.浏览器效果图:

题目6:首页/入口文件

1.index.php文件:

  1. <?php
  2. namespace _221206a;
  3. // *用户(浏览器)向服务器提出会话的请求
  4. session_start();
  5. //* 判断是否已登录?
  6. // *如果服务器存在一个user的session
  7. if (isset($_SESSION['user'])) {
  8. // *通过反序列化获取这个叫user的session
  9. $user = unserialize($_SESSION['user']);
  10. }
  11. // print_r($user);
  12. ?>
  13. <!DOCTYPE html>
  14. <html lang="zh-CN">
  15. <head>
  16. <meta charset="UTF-8">
  17. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  18. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  19. <title>首页/入口文件</title>
  20. <link rel="stylesheet" href="css/index.css">
  21. </head>
  22. <body>
  23. <nav>
  24. <a href="index.php">我的博客</a>
  25. <?php if (isset($user)) : ?>
  26. <span style="margin-left: 300px"><?=$user['name']?></span>
  27. <a id="logout">退出</a>
  28. <?php else: ?>
  29. <a href="login.php">登录</a>
  30. <?php endif ?>
  31. </nav>
  32. <script>
  33. //*为退出按钮创建事件监听器
  34. document.querySelector('#logout').addEventListener('click', function(event) {
  35. if (confirm('是否退出')) {
  36. //* 禁用默认行为, 其实就是禁用原<a>标签的点击跳转行为,使用事件中的自定义方法处理
  37. event.preventDefault();
  38. // *跳转到退出事件处理器
  39. window.location.assign('handle.php?action=logout');
  40. }
  41. });
  42. </script>
  43. </body>
  44. </html>

2.浏览器效果图:

题目7:用户登录

1.login.php文件:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>用户登录</title>
  6. <link rel="stylesheet" type="text/css" href="css/style.css">
  7. </head>
  8. <body>
  9. <h3>用户登录</h3>
  10. <form action="handle.php?action=login" method="post">
  11. <div>
  12. <label for="email">邮箱:</label>
  13. <input type="email" name="email" id="email" placeholder="demo@email.com" required autofocus>
  14. </div>
  15. <div>
  16. <label for="password">密码:</label>
  17. <input type="password" name="password" id="password" placeholder="不少于6位" required>
  18. </div>
  19. <div>
  20. <button>提交</button>
  21. </div>
  22. </form>
  23. <a href="register.php">还没有帐号, 注册一个吧</a>
  24. </body>
  25. </html>

2.浏览器效果图:

题目8:注册用户

1.register.php文件:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <link rel="stylesheet" type="text/css" href="css/style.css">
  7. <title>注册用户</title>
  8. </head>
  9. <body>
  10. <h3>用户注册</h3>
  11. <form action="handle.php?action=register" method="post" onsubmit="return compare()">
  12. <div>
  13. <label for="name">呢称:</label>
  14. <input type="text" name="name" id="name" placeholder="不少于3个字符" required autofocus>
  15. </div>
  16. <div>
  17. <label for="email">邮箱:</label>
  18. <input type="email" name="email" id="email" placeholder="demo@email.com" required>
  19. </div>
  20. <div>
  21. <label for="p1">密码:</label>
  22. <input type="password" name="p1" id="p1" placeholder="不少于6位" required>
  23. </div>
  24. <div>
  25. <label for="p2">重复:</label>
  26. <input type="password" name="p2" id="p2" placeholder="必须与上面一致" required>
  27. </div>
  28. <div>
  29. <button>提交</button><span id="tips" style="color: red"></span>
  30. </div>
  31. </form>
  32. <a href="login.php">我有帐号,直接登录</a>
  33. <script>
  34. //* 验证二次密码是否相等?
  35. function compare() {
  36. if (document.forms[0].p1.value.trim() !== document.forms[0].p2.value.trim()) {
  37. document.querySelector('#tips').innerText = '二次密码不相等';
  38. return false;
  39. }
  40. }
  41. </script>
  42. </body>
  43. </html>

2.浏览器效果图:

批改老师:PHPzPHPz

批改状态:合格

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学