博客列表 >PHP第10课-COOKIE和SESSION登录和PDO查询-九期线上班

PHP第10课-COOKIE和SESSION登录和PDO查询-九期线上班

Content っ
Content っ 原创
2019年11月25日 21:16:38567浏览

1.SESSION 登录实战

cookie.php文件

  1. <?php
  2. //设置cookie(参数,值)
  3. setcookie('loginkey',123456);
  4. //设置过期时间档期时间+10秒
  5. setcookie('loginkey1',987654,time()+10);
  6. echo '输出输出'.$_COOKIE['loginkey'];
  7. echo '<hr>';
  8. echo '输出输出'.$_COOKIE['loginkey1'];
  9. echo '<hr>';
  10. //更新
  11. if (!empty($_COOKIE['loginkey'])){
  12. echo '输出'.$_COOKIE['loginkey'];
  13. $_COOKIE['loginkey'] = 666666;
  14. }
  15. echo '<hr>';
  16. echo '输出_输出'.$_COOKIE['loginkey'];
  17. //删除
  18. setcookie('loginkey','',time()-3600);
  19. echo '<hr>';
  20. echo '输出_输出__'.$_COOKIE['loginkey'];

session.php文件

  1. <?php
  2. //启动session
  3. session_start();
  4. echo session_save_path();
  5. echo '<hr>';
  6. //设置
  7. $_SESSION['loginkey'] = 123456;
  8. //读取
  9. echo 'eeee='.$_SESSION['loginkey'];
  10. echo '<hr>';
  11. session_unset();
  12. echo 'eeee='.$_SESSION['loginkey'];
  13. echo '<hr>';

connect.php文件

  1. <?php
  2. $db = [
  3. 'type' => 'mysql',
  4. 'host' => 'localhost',
  5. 'dbname' => 'jason',
  6. 'port' => '3306',
  7. 'username' => 'root',
  8. 'password' => 'root'
  9. ];
  10. //配置dsn
  11. $dsn = "{$db['type']}:host={$db['host']};dbname={$db['dbname']}";
  12. try{
  13. $pdo = new PDO($dsn,$db['username'],$db['password']);
  14. } catch (PDOException $exception){
  15. echo '数据库连接方式1错误。。'.$exception->getMessage();
  16. }

index.php首页文件

  1. <?php
  2. require_once __DIR__.'/session.php';
  3. if (!empty($_SESSION['userName'])){
  4. echo '欢迎'.$_SESSION['userName'].'登录';
  5. echo '<br>';
  6. echo '<a href="dispatch.php?action=logout">退出登录</a>';
  7. }else{
  8. echo '<a href="dispatch.php?action=login">请登录</a>';
  9. }

dispatch.php派发器文件

  1. <?php
  2. //获取用户传参
  3. $action = !empty($_GET['action']) ? $_GET['action'] : 'login';
  4. //函数把字符转换为 HTML 实体
  5. $action = htmlentities(strtolower($action));
  6. switch ($action){
  7. case 'login':
  8. include __DIR__.'/login.php';
  9. break;
  10. case 'check':
  11. include __DIR__.'/check.php';
  12. break;
  13. case 'logout':
  14. include __DIR__.'/logout.php';
  15. break;
  16. default:
  17. include __DIR__.'/index.php';
  18. break;
  19. }

login.php登录文件

  1. <?php
  2. require_once __DIR__.'/session.php';
  3. //判断是否重复登录
  4. if (!empty($_COOKIE['userName'])){
  5. echo '请勿重复登录';
  6. return;
  7. }
  8. ?>
  9. <!doctype html>
  10. <html lang="en">
  11. <head>
  12. <meta charset="UTF-8">
  13. <title>用户登录</title>
  14. </head>
  15. <body>
  16. <h3>用户登录</h3>
  17. <form action="dispatch.php?action=check" method="post" onsubmit="return isEmpty();">
  18. <p>
  19. <label for="phone">手机号:</label>
  20. <input type="phone" name="phone" id="phone">
  21. </p>
  22. <p>
  23. <label for="password">密码:</label>
  24. <input type="password" name="password" id="password">
  25. </p>
  26. <p>
  27. <button>提交</button>
  28. </p>
  29. </form>
  30. <script>
  31. function isEmpty() {
  32. var phone = document.getElementById('phone').value;
  33. var password = document.getElementById('password').value;
  34. if (phone.length=== 0 || password.length===0) {
  35. alert('手机和密码不能为空');
  36. return false;
  37. }
  38. }
  39. </script>
  40. </body>
  41. </html>

check.php校验文件

  1. <?php
  2. require_once __DIR__.'/connect.php';
  3. require_once __DIR__.'/session.php';
  4. $phone = empty($_POST['phone']) ? "" :$_POST['phone'];
  5. $sql = 'SELECT *FROM `account` WHERE `phone`=:phone';
  6. $stmt = $pdo->prepare($sql);
  7. $stmt->bindParam('phone',$phone,PDO::PARAM_STR);
  8. try{
  9. if ($stmt->execute()){
  10. $userArr = $stmt->fetchAll();
  11. if (empty($userArr[0])){
  12. echo '用户不存在';
  13. }else{
  14. $dbPwd = $userArr[0]['password'];
  15. $userPwd = md5($_POST['password']);
  16. if ($dbPwd == $userPwd){
  17. //验证成功
  18. session_start();
  19. $_SESSION['userName'] = $phone;
  20. echo '<a href="index.php">登录成功,返回首页</a>';
  21. }else{
  22. echo '<a href="login.php">您输入的密码不正确,返回重新登录</a>';
  23. }
  24. }
  25. }else{
  26. echo '数据库查询失败';
  27. }
  28. }catch (PDOException $exception){
  29. echo '数据库连接失败='.$exception->getMessage();
  30. }

logout.php退出登录文件

  1. <?php
  2. require_once __DIR__.'/session.php';
  3. session_unset();
  4. echo '<a href="index.php">退出登录成功,返回</a>';
运行效果gif动图

手抄代码

练熟pdo操作,查(手写)

bindColumn将结果集某字段绑定到指定变量上

  1. <?php
  2. require_once __DIR__.'/connect.php';
  3. echo '<hr>';
  4. //sql语句
  5. $sql = 'SELECT *FROM `account` WHERE `user_id`=:user_id';
  6. //预处理
  7. $stmt = $pdo1->prepare($sql);
  8. $user_id = 3;
  9. //绑定参数
  10. $stmt->bindParam('user_id',$user_id,PDO::PARAM_INT);
  11. //执行查询操作
  12. try{
  13. if ($stmt->execute()){
  14. //将值绑定给变量(结果集中的变量,赋值的变量)
  15. $stmt->bindColumn('username',$username);
  16. $stmt->bindColumn('department_list',$department_list);
  17. while ($stmt->fetch(PDO::FETCH_ASSOC)) {
  18. echo '名字='.$username .'-----' .'公司='.$department_list;
  19. echo '<hr>';
  20. }
  21. }else{
  22. echo '执行查询操作失败,error='.$stmt->errorCode();
  23. }
  24. }catch (PDOException $exception){
  25. echo '数据库操作异常'.$exception->getMessage();
  26. }
  27. //销毁数据库连接
  28. $pdo1 = null;
  29. print_r("销毁".$pdo1);
  30. echo '<hr>';
  31. $sql1 = 'UPDATE FROM `account` SET `username`:user1 WHERE `user_id`:uid';
  32. echo $sql;
运行效果

手写代码

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议