博主信息
epoll404
博文
16
粉絲
1
評論
0
訪問量
679
積分:0
P豆:58

PDO操作Mysql數據庫進行曾刪改查以及COOKIE,SESSION的使用-1121-1124

2019年11月26日 18:07:30閱讀數:87博客 / epoll404 / php

PDO類操作Mysql數據庫
pdo分為PDO類,pdostatement類PDOException類PDO驅動類
PDO內含事物處理,回滾等,常用的已手寫,見附件。

  1. <?php
  2. //dispacth 分發,根據URL請求,分發到不同的頁面請求格式為:/dispacth.php?action=demo1.php
  3. //默認為login.php
  4. $a = htmlentities(strtolower(trim($_GET['action'])));
  5. $action = isset($a) ?? 'login';
  6. switch ($action){
  7. case 'login':
  8. include 'login.php';
  9. break;
  10. case 'logout':
  11. include 'logout.php';
  12. break;
  13. case 'demo1':
  14. include 'demo1.php';
  15. break;
  16. default:
  17. include 'login.php';
  18. break;
  19. }
  1. <?php
  2. //login.php
  3. if (isset($_POST) && !empty($_POST)){ //判斷$_POST變量是否初始化切不為空
  4. include 'pdo.php'; //引入pdo.php,已經正常鏈接鏈接數據庫
  5. $user = $_POST['user']; //接受POST提交過來的user
  6. $pass = md5($_POST['passwd']); //接收POST提交過來的passwd
  7. $sql = "SELECT * from user WHERE `username`=:user AND `password`=:pass"; //構造sql語句
  8. $sth = $pdo->prepare($sql); //預處理sql
  9. $sth->bindParam(':user',$user); //綁定預處理語句
  10. $sth->bindParam(':pass',$pass);
  11. $sth->execute(); //執行查詢 這里可以省略bindParam,直接在execute([':user'=>$user,':pass'=>$pass])進行預處理綁定
  12. $row = $sth->fetch(); //獲取數據
  13. if ($row>0){ //判斷是否查詢出數據
  14. echo '<script>alert("登錄成功!");</script>';
  15. setcookie("user",$row['username'],time()+180); //設置cookie
  16. session_start();
  17. $_SESSION['user'] = $row['username']; //保存session
  18. echo '<script>window.location.href="demo1.php"</script>';
  19. }else{
  20. echo '用戶名密碼錯誤,請重新登錄!';
  21. }
  22. }
  23. ?>
  24. <!doctype html>
  25. <html lang="zh-CN">
  26. <head>
  27. <meta charset="UTF-8">
  28. <meta name="viewport"
  29. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  30. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  31. <title>網站登錄</title>
  32. </head>
  33. <body>
  34. <form action="" method="post">
  35. <p>
  36. <lable>賬號:</lable>
  37. <input type="text" name="user">
  38. </p>
  39. <p>
  40. <lable>密碼:</lable>
  41. <input type="text" name="passwd">
  42. </p>
  43. <p>
  44. <button>登錄</button>
  45. </p>
  46. </form>
  47. </body>
  48. </html>
  1. <?php
  2. //demo1.php 如果是管理員,則顯示所有的用戶的賬號信息,當session里的user 恒等于admin則為管理員
  3. session_cache_expire(30);
  4. session_start();
  5. include 'pdo.php';
  6. $sql = "SELECT * from user";
  7. $sth = $pdo->query($sql);
  8. $rows = $sth->fetchAll();
  9. if (isset($_SESSION['user']) && !empty($_SESSION['user']) && $_SESSION['user'] ==='admin'){
  10. //判斷session['user']是否初始化且不為空并且恒等于admin,當所有條件都滿足的時候則為管理員
  11. echo '歡迎你'.$_SESSION['user'];
  12. }elseif(isset($_SESSION['user']) && $_SESSION['user'] !=='admin'){
  13. //判斷session里的user是否初始化且不為admin,則為一般用戶
  14. echo '歡迎你'.$_SESSION['user'].'你沒有管理權限';
  15. exit;
  16. }elseif($_SESSION['user'] ==false){
  17. //如果session里的user沒有值 也就是為false的時候,說明沒有登錄
  18. echo '請先登錄!';
  19. exit;
  20. }
  21. //這里也順帶復習了php的流程控制里的if 。。。elseif 。。。elseif。。。
  22. ?>
  23. <!doctype html>
  24. <html lang="zh-CN">
  25. <head>
  26. <meta charset="UTF-8">
  27. <meta name="viewport"
  28. content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  29. <meta http-equiv="X-UA-Compatible" content="ie=edge">
  30. <title>網站后臺管理</title>
  31. </head>
  32. <body>
  33. <a href="logout.php">退出登錄</a>
  34. <table align="center" cellspacing="0" border="1px solide #eee">
  35. <caption>管理員列表</caption>
  36. <tr>
  37. <th>id</th>
  38. <th>賬號</th>
  39. <th>密碼</th>
  40. </tr>
  41. //foreach循環獲取到的數據并展示
  42. <?php foreach($rows as $v):?>
  43. <tr>
  44. <td><?php echo $v['id'];?></td>
  45. <td><?php echo $v['username'];?></td>
  46. <td><?php echo $v['password'];?></td>
  47. </tr>
  48. <?php endforeach;?>
  49. </table>
  50. </body>
  51. </html>
  1. <?php
  2. //logout.php
  3. setcookie("user",null,time()-3600); //刪除cookie
  4. session_start();
  5. session_destroy(); //銷毀session
  6. echo '<script>alert("已經成功退出")</script>';
  7. echo '<script>window.location.href="dispatch.php";</script>'; //跳轉到分發頁面
  1. <?php
  2. $config = require 'config/config.php';
  3. $dsn = sprintf("%s:host=%s;dbname=%s;charset=%s",$config['type'],$config['db_host'],$config['db_name'],$config['charset']);
  4. //拼接$dsn變量,設置了mysql的字符集,mysql:host=127.0.0.1;dbname=
  5. //注意這里必須是dbname,很多人配置項里喜歡寫db_name. 注意別混淆!!!!
  6. //注意這里必須是dbname,很多人配置項里喜歡寫db_name. 注意別混淆!!!!
  7. //注意這里必須是dbname,很多人配置項里喜歡寫db_name. 注意別混淆!!!!
  8. try{
  9. $pdo = new PDO($dsn,$config['db_user'],$config['db_pass'],[PDO::ATTR_DEFAULT_FETCH_MODE=>PDO::FETCH_ASSOC]);
  10. //鏈接數據,并且設置了默認的獲取數據的模式為assoc,還有fetch_both,以及關聯數組跟索引都顯示的模式模式
  11. }catch (PDOException $e){
  12. echo '數據庫出現錯誤:'.$e->getMessage();
  13. }

" class="reference-link">

批改老師:歐陽克歐陽克

批改狀態:未批改

老師批語:

全部評論

文明上網理性發言,請遵守新聞評論服務協議

條評論
暫無評論暫無評論!
  • 足彩吧合买平台